Уроци за Apache за начинаещи

Съдържание

Какво е Apache?

Apache е забележителна част от приложен софтуер. Това е най-широко използваното приложение Web Server в света с повече от 50% дял на пазара на търговски уеб сървъри. Apache е най-широко използваното приложение на уеб сървър в Unix-подобни операционни системи, но може да се използва на почти всички платформи като Windows, OS X, OS / 2 и др. Думата Apache е взета от името на Native Американско племе "Apache", известно с уменията си за водене на война и стратегии.

Това е модулно, базирано на процеси уеб сървърно приложение, което създава нова нишка с всяка едновременна връзка. Той поддържа редица функции; много от тях са компилирани като отделни модули и разширяват нейната основна функционалност и могат да осигурят всичко - от поддръжка на езика за програмиране от страна на сървъра до механизма за удостоверяване. Виртуалният хостинг е една такава функция, която позволява на един уеб сървър на Apache да обслужва редица различни уебсайтове.

Как да инсталирам Apache

Има многобройни начини за инсталиране на пакета или приложението. Има включени по-долу -

  1. Една от характеристиките на това уеб приложение с отворен код е, че всеки може да направи инсталатор според собствената си среда. Това позволи на различни доставчици като Debian, Red Hat, FreeBSD, Suse и др. Да персонализират местоположението на файла и конфигурацията на apache, като вземат предвид други инсталирани приложения и базова ОС.
  2. Освен да го инсталирате от инсталатор, базиран на доставчик, винаги има възможност да го изградите и инсталирате от изходния код. Инсталирането на Apache от изходния файл е независимо от платформата и работи за всички ОС.

Уеб сървърът на apache е модулно приложение, при което администраторът може да избере необходимата функционалност и да инсталира различни модули според неговите / нейните изисквания.

Всички модули могат да бъдат компилирани като динамични споделени обекти (DSO е обектен файл, който може да бъде споделен от множество приложения, докато те се изпълняват), който съществува отделно от основния файл на apache. DSO подходът е силно препоръчителен, той прави задачата за добавяне / премахване / актуализиране на модули от конфигурацията на сървърите много проста.

Инсталирайте Apache: Linux Platform

На системи, базирани на Red Hat или rpm

Ако използвате rpm (RedHat Package Manager е помощна програма за инсталиране на приложение на Linux системи), базирана на Linux дистрибуция, т.е. Red Hat, Fedora, CentOs, Suse, можете да инсталирате това приложение или от конкретен доставчик на Package Manager, или директно да изградите rpm файла от наличния източник tarball.

Можете да инсталирате Apache чрез мениджъра на пакети по подразбиране, наличен във всички дистрибуции, базирани на Red Hat, като CentOs, Red Hat и Fedora.

[root @ amsterdam ~] # yum инсталирайте httpd

Изходният tarball на apache може да бъде преобразуван във rpm файл, като се използва следната команда.

[root @ amsterdam ~] # rpmbuild -tb httpd-2.4.x.tar.bz2

Задължително е да имате инсталиран пакет -devel на вашия сървър за създаване на .rpm файл от източник.

След като конвертирате изходния файл в rpm инсталатор, можете да използвате следната команда, за да инсталирате Apache.

[root @ amsterdam ~] # rpm -ivh httpd-2.4.4-3.1.x86_64.rpm

След инсталацията сървърът не се стартира автоматично, за да стартирате услугата, трябва да използвате някоя от следните команди на Fedora, CentOs или Red Hat.

[root @ amsterdam ~] # / usr / sbin / apachectl старт[root @ amsterdam ~] # услуга httpd старт[root @ amsterdam ~] # /etc/init.d/httpd старт

Инсталирайте Apache от източника

Инсталирането на apache от източника изисква пакетът -devel да бъде инсталиран на вашия сървър ... Можете да намерите най-новата налична версия на Apache, можете да го изтеглите от тук. След като изтеглите изходния файл, го преместете в папката / usr / local / src.

[root @ amserversterdam ~] cd / usr / local / src[root @ amserversterdam ~] gzip -d httpd-2.2.26.tar.gz[root @ amserversterdam ~] tar xvf httpd-2.2.26.tar[root @ amserversterdam ~] httpd-2.2.26

За да видите всички опции за конфигуриране, налични за Apache, можете да използвате опцията ./configure -help. Най-често срещаната опция за конфигуриране е -prefix = {име на директорията за инсталиране}.

[root @ amserversterdam ~] ./ configure --help[root @ amserversterdam ~] ./ configure -prefix = / usr / local / apache -enable-so[root @ amserversterdam ~] направи[root @ amserversterdam ~] направи инсталация

Горният пример показва компилацията на Apache в директорията / usr / local / apache с възможността DSO. Опцията -enable-so може да зарежда необходимите модули в apache по време на изпълнение чрез механизма DSO, вместо да изисква повторна компилация.

След като инсталацията завърши, можете да разглеждате страницата по подразбиране на уеб сървърите с любимия си браузър. Ако защитната стена е активирана на вашия сървър, трябва да направите изключение за порт 80 на вашата защитна стена на операционната система. Можете да използвате следната команда, за да отворите порт 80.

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

услуга iptables запишете

Можете да видите екрана за приветствие на Apache2 по подразбиране, като разгледате IP адреса на вашия сървър.

Какво е виртуален хост?

Уеб сървърът на Apache може да хоства множество уебсайтове на СЪЩИЯ сървър. Не се нуждаете от отделна сървърна машина и софтуер на apache за всеки уебсайт. Това може да се постигне с помощта на концепцията за виртуален хост или VHost.

Всеки домейн, който искате да хоствате на вашия уеб сървър, ще има отделен запис в конфигурационния файл на Apache.

Видове Apache Virtualhost

  1. Виртуален хост, базиран на имена
  2. Базиран на адрес или IP базиран виртуален хост и.

Виртуален хост, базиран на имена

Виртуалният хостинг, базиран на име, се използва за хостване на множество виртуални сайтове на един IP адрес.

За да конфигурирате базиран на име виртуален хостинг, трябва да зададете IP адреса, на който ще получавате заявките на Apache за всички желани уебсайтове. Можете да направите това чрез директивата NameVirutalHost в конфигурацията на apache, т.е. httpd.conf / apache2.conf файл.

Пример за виртуален хост на Apache:

NameVirtualHost *: 80ServerAdmin Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите.DocumentRoot /var/www/html/example1.comИме на сървъра www.example1.comServerAdmin Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите. DocumentRoot /var/www/html/example2.com Име на сървъра www.example2.com 

Можете да добавите толкова виртуални хостове според вашите изисквания. Можете да проверите вашите уеб конфигурационни файлове с:

[root @ amsterdam ~] #httpd -tСинтаксис ОК

Ако конфигурационният файл има грешен синтаксис, той ще изведе грешка

[root @ 115 conf.d] # httpd -tСинтаксична грешка на ред 978 от /etc/httpd/conf/httpd.conf:Невалидна команда '*', може би грешно написана или дефинирана от модул, който не е включен в конфигурацията на сървъра

IP-базиран виртуален хост

За да настроите IP базиран виртуален хостинг, имате нужда от повече от един IP адрес, конфигуриран на вашия сървър. И така, броят на vhost apache ще зависи от броя на IP адреса, конфигуриран на вашия сървър. Ако вашият сървър има 10 IP адреса, можете да създадете 10 IP базирани виртуални хоста.

В горната диаграма на два уебсайта example1.com и example2.com са присвоени различни IP адреси и използват IP базиран виртуален хостинг.

Слушайте 192.168.0.100:80ServerAdmin Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите.DocumentRoot /var/www/html/example1.comИме на сървъра www.example1.comServerAdmin Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите. DocumentRoot /var/www/html/example2.com Име на сървъра www.example2.com 

Какво Apache трябва да стартира Php файл?

Изпълнението на Php файлове на Apache се нуждае от mod_php активиран на вашия сървър. Позволява на Apache да интерпретира .Php файлове. Той има Php манипулатори, които интерпретират Php кода в apache и изпращат HTML на вашия уеб сървър.

Ако mod_php е активиран на вашия сървър, ще имате файл с име php.conf в /etc/httpd/conf.d/ директория. Можете също да го проверите с:

httpd -M | grep "php5_module"

Резултатът ще бъде подобен на:

Php манипулатори в Apache

  • mod_php
  • CGI
  • FastCGI
  • suPHP

mod_php е най-старият PHP манипулатор, той прави PHP част от apache и не извиква никакъв външен PHP процес. Този модул е ​​инсталиран по подразбиране във всяко хранилище за дистрибуция на Linux, така че активирането / деактивирането на този модул е ​​много лесно.

Ако използвате FastCGI като ваш PHP манипулатор, можете да зададете множество версии на PHP да се използват от различни акаунти на вашия сървър.

FastCGI т.е. mod_fastcgi е разширение на mod_fcgid , където като mod_fcgid е алтернатива на CGI с висока производителност, т.е. mod_cgi. Стартира достатъчен брой екземпляри на CGI за обработка на едновременни уеб заявки. Той също така използва suexec, за да поддържа различни потребители със собствени копия на PHP и подобрява защитата на мрежата.

Изпълнението на рубинни файлове на Apache трябва да бъде активирано mod_ruby. Apache може също да обработва рубинни файлове чрез FastCGI. Възможно е да се използва множество версии на ruby ​​с помощта на mod_fcgid, т.е. FastCGI.

Можете също така да инсталирате apache пътник и да конфигурирате Apache да го използва за обслужване на рубинни страници.

(Phusion Passenger, известен също като „ пътник “ е безплатен модул за уеб сървър, който е проектиран да се интегрира с Apache и Nginx)

Стъпки за инсталиране на mod_ruby на вашия сървър -

cd / tmpwget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gztar zxvf mod_ruby-1.2.6.tar.gzcd mod_ruby-1.2.6 /./configure.rb --with-apr-includes = / usr / include / apr-1направинаправи инсталиране

Как да стартирате Ruby с Apache

Трябва да добавим модула mod_ruby към конфигурацията на Apache, т.е. /etc/httpd/conf.d/ruby.conf и да добавим следния ред.

LoadModule ruby_module модули / mod_ruby.so

Ако искате да активирате или деактивирате тези модули, трябва да редактирате конфигурационния файл на apache и да коментирате или декомментирате тези модули, ако уеб сървърът вече е компилиран с тези модули.

Как да защитим уеб сървъра на Apache

Защитата на вашия уеб сървър е много важна, това означава да позволите на другите да виждат само предвидената информация и защита на вашите данни и ограничаване на достъпа.

Това са често срещани неща, които подобряват сигурността на вашите уеб сървъри на Apache.

1) Скриване на версията на Apache и информацията за операционната система:

Apache показва своята версия и името на операционната система в грешки, както е показано на екрана по-долу.

Хакерът може да използва тази информация, за да стартира атака, използвайки публично достъпните уязвимости в конкретната версия на сървъра или операционната система.

За да предотвратим показването на тази информация на уеб сървъра на Apache, трябва да променим

Опция „подпис на сървъра“, налична в конфигурационния файл на apache. По подразбиране е „включен“, трябва да го изключим.

vim /etc/httpd/conf/httpd.conf
Подпис на сървъра е изключенServerTokens Prod

Също така сме задали “ServerTokens Prod”, който казва на уеб сървъра да връща само apache и да потиска основната и второстепенната версия на ОС

След модифициране на конфигурационния файл, трябва да рестартирате / презаредите вашия уеб сървър на apache, за да го направите ефективен.

услуга httpd рестартиране

2) Деактивирайте списъка с директории

Ако основната директория на вашия документ няма индексен файл, по подразбиране вашият уеб сървър на apache ще покаже цялото съдържание на основната директория на документа.

Тази функция може да бъде изключена за конкретна директория чрез “директива за опции”, налична в конфигурационния файл на Apache.

Опции -Индекси

3) Деактивиране на ненужните модули

Добра практика е да деактивирате всички ненужни модули, които не се използват. Можете да видите списък с активиран модул, наличен във вашия конфигурационен файл на Apache -

[root @ amsterdam ~] #httpd -Mperl_module (споделено)php5_module (споделено)proxy_ajp_module (споделено)python_module (споделен)ssl_module (споделено)

Много от изброените модули могат да бъдат деактивирани likemod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, тъй като те почти не се използват от произволни уеб сървъри.

vi /etc/httpd/conf/httpd.conf#LoadModule auth_digest_module модули / mod_auth_digest.so

След като коментирате модула, запазете файла.

Рестартирайте услугите на apache със следната команда.

/etc/init.d/httpd рестартиране

4) Ограничаване на достъпа до файлове извън уеб основната директория

Ако искате да се уверите, че файловете извън уеб основната директория не са достъпни, трябва да се уверите, че директорията е ограничена с "Разрешаване" и "Отказ опция" в конфигурационния файл на вашия уеб сървър.

<Директория />Опции НямаAllowOverride НямаПоръчка отказана, разрешенаОтричане от всички

След като ограничите достъпа извън уеб корен директорията, няма да можете да осъществите достъп до който и да е файл, намиращ се в която и да е друга папка на вашия уеб сървър, ще получите код за връщане 404.

5) Използване на mod_evasive за оборване на DoS атаката

Ако искате да защитите вашия уеб сървър от Dos (т.е. Отказ от обслужване), трябва да активирате модула mod_evasive. Това е модул на трета страна, който открива Dos атака и предотвратява атаката да нанесе толкова щети, колкото би направила, ако бъде оставена да изпълни своя курс. Може да се изтегли от тук.

Изтеглете горния файл

6) Използване на mod_security за подобряване на сигурността на apache

Този модул работи като защитна стена за Apache и ви позволява да наблюдавате трафика в реално време. Той също така предотвратява уеб сървъра от груби атаки. Модулът mod_security може да бъде инсталиран с мениджъра на пакети по подразбиране за вашата дистрибуция.

7) Ограничаване на размера на заявката

Apache няма никакви ограничения върху общия размер на http заявката, които могат да доведат до DoS атака. Можете да ограничите размера на заявката на директива на Apache “LimitRequestBody” с маркера на директорията. Стойността може да бъде настроена от 0 до 2 GB (т.е. 2147483647 байта) според вашите изисквания.

<Директория "/ var / www / html / uploads">LimitRequestBody 512000

Apache Log Format

Дневниците на Apache предоставят подробна информация, която помага да се открият често срещани проблеми със сървъра.

За да създадете дневници за достъп, mod_log_configmodule трябва да бъде активиран.

Налични са три директиви в конфигурационния файл на apache, т.е.

  • TransferLog: Създаване на регистрационен файл.
  • LogFormat: Посочване на персонализиран формат.
  • CustomLog: Създаване и форматиране на регистрационен файл.

Директивата TransferLog е налична в конфигурационния файл на apache и тя завърта виртуални файлове на хостов файл според зададените параметри.

ServerAdmin Този имейл адрес е защитен от спам ботове. Трябва да имате активиран JavaScript, за да го видите.DocumentRoot / usr / www / example / httpd / htdocs /Име на сървъра www.example.comServerAlias ​​example.com www.exampleErrorLog / usr / www / example / httpd / logs / error_logTransferLog / usr / www / example / httpd / logs / accesslogКомбиниран CustomLog / usr / www / example / httpd / logs / accesslog

Два вида Apache Log Format

  • Общ регистрационен формат
  • Комбиниран формат на дневника.

Можете да ги активирате, като редактирате конфигурационния файл на apache, т.е. apache2.conf (Debian / ubuntu) или httpd.conf (rpm-базирани системи) файл

Общ регистрационен формат

LogFormat "% h% l% u% t \"% r \ "%> s% b" честоЧесто задавани дневници / дневник на потребителския журнал

Общ дневник, генериран от Apache

[Сряда, 11 октомври 14:32:52 2000 г.] [грешка] [клиент 127.0.0.1] клиентът е отказан от конфигурацията на сървъра: / export / home / live / ap / htdocs / test

Комбиниран формат на дневника

LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-agent} i \ "" комбиниранКомбиниран дневник / дневник за достъп по CustomLog

Тук,

  • % h е отдалеченият хост
  • % l е самоличността на потребителя, определена от identd
  • % u е потребителското име, определено чрез HTTP удостоверяване
  • % t е времето, когато сървърът е завършил обработката на заявката.
  • % r е редът за заявка от клиента. („GET / HTTP / 1.0“)
  • %> s е кодът на състоянието, изпратен от сървъра до клиента (500, 404 и т.н.)
  • % b е размерът на отговора на клиента (в байтове)
  • Referer е страницата, която е свързана към този URL адрес.
  • User-agent е идентификационният низ на браузъра.

Комбиниран дневник, генериран от Apache:

199.187.122.91 - - [06 / март / 2014: 04: 22: 58 +0100] "GET /robots.txt HTTP / 1.1" 404 1228 "-" "Mozilla / 4.0 (съвместим; MSIE 6.0; Windows NT 5.1; SV1 ; .NET CLR 2.0.50727) "

Персонализираният дневник създава отделен регистрационен файл за всеки виртуален хост на вашия сървър. Той трябва да бъде посочен в раздела за виртуален хост на конфигурационния файл.

Можете да видите споменатата по-долу конфигурация на виртуален хост, генерираният дневник ще бъде персонализиран за този виртуален хост и форматът ще бъде комбиниран.

Конфигурирайте първата си продукция Web Sever

1. За да имате работещ производствен уеб сървър, ви е необходим специален възел (физически / виртуален или облачен екземпляр), работещ под Linux / Unix, Windows, MacOS и др.

2. Уеб сървърът трябва да има директна мрежова връзка и статичен IP адрес, конфигуриран върху него.

3. Трябва да има всички модули, необходими за стартиране на уеб страници. Ако уеб сървър обработва PHP страници, той трябва да има активиран PHP модул.

  1. Също така трябва да има конфигурирано и работещо добро антивирусно приложение за защита на уеб сървъра от злонамерен софтуер или вирусни атаки. Също така ви е необходим механизъм за актуализиране на конфигурираното антивирусно / антивирусно приложение редовно, без никаква ръчна намеса, за да получите максимална полза от тях.
  2. Ако имате стотици домейни, които да бъдат хоствани на вашия уеб сървър, трябва да приложите ограничения за квотата на файловата система за всеки домейн, брой бази данни, които всеки домейн може да създаде, брой имейл акаунти на домейн и т.н.
  3. Ако вашият уеб сървър е настроен за услуги за споделен хостинг, потребителите на вашия уеб сървър трябва да бъдат ограничени . Потребителят на споделен хостинг трябва да има най-малко привилегии, за да не повреди важни файлове и да не повреди целия сървър. Apache не предоставя такава функционалност и се нуждае от различни приложения на трети страни, персонализиране на ОС, за да постигне това.
  4. Ако добавяте нов домейн на вашия уеб сървър, той се нуждае от редактиране на стотици конфигурационен файл, за да активира всички функции за добавения домейн.
  5. Ако един от хостваните домейни изисква различна настройка на PHP от останалите домейни, внедряването на това в основния уеб сървър на Apache е много сложно и се нуждае от персонализиране на вашия уеб сървър в голяма степен.
  6. Производственият уеб сървър се нуждае от защитна стена, за да блокира нежелания трафик, който може да причини голямо натоварване на вашия сървър. Внедряването на правила IPTABLE с командния ред е много сложно. Той се нуждае от опит на основната Linux / Unix среда, за да напише ефективни правила за защитна стена за блокиране на нежелан трафик. IPTABLE се основава на модул netfilter; това е защитна стена на ниво OS, която позволява на администратора да създава правила за входящ / изходящ трафик на сървъра.
  7. Производственият уеб сървър изисква няколко различни приложения като имейл , FTP за качване на файлове, система за имена на домейни за паркирани домейни. Управлението на всички тези приложения в основна Linux / Unix система изисква опит в съответните технологии.

Така че, може да се каже, че управлението на уеб сървър за множество домейни е много сложна задача и изисква редактиране на стотици конфигурационен файл, като персонализира всяко приложение, за да изпълни желания резултат. Отстраняването на неизправности при всяка пропускаща конфигурация ще бъде много трудно за начинаещи.

Решението, използващо Cpanel или подобен софтуер

Cpanel предоставя графичен начин за управление на вашия уеб сървър . Той има за цел да предоставя услуги за масов хостинг, които са лесни за използване и конфигуриране. cPanel намали техническите бариери за влизане в управлението на хостинг и уеб сървъри. Улеснява сложната задача, предоставя много полезни и лесни за използване уеб интерфейси, които изпълняват общи задачи за системно администриране, необходими за работа с уеб сървър.

cPanel компилира собствена версия на софтуера.

Ако трябва да прекомпилирате вашия уеб сървър, т.е. apache на нормална Linux платформа, трябва ръчно да изберете / търсите необходимия модул. cPanel предоставя функционалност Easyapache, която е метод за компилация на уеб сървър, базиран на скриптове.

Той не само ви предоставя уеб услуги, но също така и поща, DNS, FTP и много други услуги, необходими за вашето уеб приложение.

Задача, която се нуждае от опит в основен хостинг, базиран на Linux / Unix, като инсталиране на SSL, прекомпилиране на Apache с различни PHP модули, актуализиране на Web Security, конфигуриране на ефективни правила IPTABLE, добавяне на ftp потребители, създаване на пощенски акаунти за всеки домейн, сканиране на корен на вашия документ с антивирусна програма и създаването на бази данни е лесно да се завърши с cPanel.

Той предоставя много скриптове, които поправят, инсталират и отстраняват често срещани административни задачи.

Той осигурява функционалност за архивиране и възстановяване, премахвайки необходимостта от ръчно копиране на файлове в резервно хранилище. Ако архивирате домейна си, cPanel ще създаде tar файл, който ще съдържа основната папка на документа, имейл акаунти и пощи, ftp акаунти, бази данни, DNS записи и други приложения.

Той също така предоставя надеждна документация и има много голяма общност от потребители, където можете да обсъдите и да получите решение на вашите проблеми.

Така че, може да се каже, че cPanel е най-доброто приложение за управление на вашия уеб сървър с необходимите функции. Той ви предоставя лесен за използване интерфейс за управление на вашия домейн и механизъм за избягване на сложността при управлението на основния уеб сървър.

Има много конкурентни продукти за cPanel като Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel и др.

Интересни статии...