Уроци за Apache за начинаещи
⚡ Умно обобщение
Apache HTTP Server захранва повече от половината от публичната мрежа, а този ресурс разглежда неговата архитектура, пътища за инсталиране, модели на виртуален хостинг, засилване на сигурността, регистриране и внедряване в производствения процес, така че администраторите да могат уверено да го управляват в Linux. Windows или macOS среди.

Какво е Apache?
Apache е забележителен приложен софтуер. Той е най-широко използваното уеб сървърно приложение в света, с над 50% дял на пазара на търговски уеб сървъри. Apache е най-широко използваното уеб сървърно приложение на Unix-подобни операционни системи, но може да се използва на почти всички платформи, като например Windows, OS X, OS/2 и др. Думата Apache е взета от името на индианското племе апачи, известно със своите умения във воденето на война и разработването на стратегии.
Това е модулно, базирано на процеси уеб сървърно приложение, което създава нова нишка с всяка едновременна връзка. То поддържа редица функции; много от тях са компилирани като отделни модули и разширяват основната му функционалност, предоставяйки всичко - от поддръжка на език за програмиране от страна на сървъра до механизми за удостоверяване. Виртуалният хостинг е една такава функция, която позволява на един Apache уеб сървър да обслужва редица различни уебсайтове от един и същ хардуер.
Как да инсталирате Apache
Преди да инсталирате Apache, е добре да разберете различните налични начини за инсталиране. Има многобройни начини за инсталиране на пакета или приложението, както е изброено по-долу.
- Една от характеристиките на този отворен Изходното уеб приложение е, че всеки може да подготви инсталатор за собствената си среда. Това позволи на различни доставчици като Debian, Red Hat, FreeBSD и SUSE да персонализират местоположението на файловете и конфигурацията на Apache, като вземат предвид други инсталирани приложения и базовата операционна система.
- Освен инсталирането му от инсталатор, базиран на доставчик, винаги има опция за компилиране и инсталиране от изходния код. Инсталирането на Apache от изходния файл е платформено независимо и работи за почти всяка операционна система.
Уеб сървърът Apache е модулно приложение, където администраторът може да избере необходимата функционалност и да инсталира различни модули според изискванията.
Всички модули могат да бъдат компилирани като Динамични споделени обекти (DSO е обектен файл, който може да се споделя от множество приложения, докато се изпълняват), които съществуват отделно от основния двоичен файл на Apache. Подходът DSO е силно препоръчителен; той прави задачата за добавяне, премахване или актуализиране на модули от конфигурацията на сървъра много проста.
Инсталиране на Apache: Linux платформа
На системи, базирани на Red Hat или rpm
Ако използвате Linux дистрибуция, базирана на rpm (Red Hat Package Manager, помощна програма за инсталиране на приложения на Linux системи), а именно Red Hat, Fedora, CentOS или SUSE, можете да инсталирате това приложение или чрез специфичен за производителя Package Manager, или чрез директно изграждане на rpm файла от наличния tarball с изходния код.
Можете да инсталирате Apache чрез стандартния мениджър на пакети, наличен във всички дистрибуции, базирани на Red Hat, като CentOS, Red Hat и Fedora.
[root@amsterdam ~]# yum install httpd
Архивът с изходния код на 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 start [root@amsterdam ~]# service httpd start [root@amsterdam ~]# /etc/init.d/httpd start
Инсталирайте Apache от източника
Ако компилацията на мениджъра на пакети не съответства на вашата среда, инсталирането от изходния код предлага пълен контрол. Инсталирането на Apache от изходния код изисква пакетът -devel да бъде инсталиран на вашия сървър. Можете да намерите най-новата налична версия на Apache и да я изтеглите от Официална страница за изтегляне на 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 ~] make [root@amserversterdam ~] make install
Горният пример показва компилацията на 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 може да хоства множество уебсайтове на... ЕДИН И СЪЩ сървър. Не е необходима отделна сървърна машина и софтуер Apache за всеки уебсайт. Това може да се постигне с помощта на концепцията за Виртуален домакин or VHost.
Всеки домейн, който искате да хоствате на вашия уеб сървър, ще има отделен запис в конфигурационния файл на Apache.
Видове Apache Virtualhost
- Базиран на име виртуален хост
- Виртуален хост, базиран на адрес или IP
Базиран на име виртуален хост
Виртуалният хостинг, базиран на имена, се използва за хостване на множество виртуални сайтове на един IP адрес.
За да конфигурирате виртуален хостинг, базиран на имена, трябва да зададете IP адреса, на който ще получавате Apache заявките за всички желани уебсайтове. Можете да направите това с директивата NameVirtualHost в конфигурацията на Apache, т.е. httpd.conf или apache2.conf файл.
Пример за виртуален хост Apache:
NameVirtualHost *:80 <VirtualHost 192.168.0.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.0.108:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Можете да добавите толкова виртуални хостове, колкото изисква вашата среда. Можете да проверите файловете си за уеб конфигурация с:
[root@amsterdam ~]#httpd -t
Syntax OK
Ако конфигурационният файл има неправилен синтаксис, ще се получи грешка:
[root@115 conf.d]# httpd -t
Syntax error on line 978 of /etc/httpd/conf/httpd.conf:
Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration
Базиран на IP виртуален хост
За да настроите виртуален хостинг, базиран на IP, е необходимо да имате повече от един конфигуриран IP адрес на вашия сървър. Така че броят на виртуалните хостове, които Apache може да обслужва, ще зависи от броя на конфигурираните IP адреси на вашия сървър. Ако вашият сървър има 10 IP адреса, можете да създадете 10 виртуални хоста, базирани на IP.
В горната диаграма, два уебсайта, example1.com и example2.com, са получили различни IP адреси и използват виртуален хостинг, базиран на IP.
Listen 192.168.0.100:80 <VirtualHost 192.168.10.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.10.109:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Apache срещу Nginx: Бързо сравнение
Apache често се съпоставя с Nginx при планирането на ново внедряване. Таблицата по-долу обобщава най-често срещаните точки за вземане на решения.
| фактор | Apache HTTP Server | Nginx |
|---|---|---|
| Модел на обработка | Процес или нишка за връзка (prefork, worker, event MPMs) | Управлявано от събития, асинхронно |
| Конфигурация | Поддържат се замени на .htaccess за всяка директория | Централизирана конфигурация, без .htaccess |
| Динамично съдържание | mod_php и други модули вграждат среда за изпълнение в процеса на работа | Прокси сървъри към PHP-FPM или външни сървъри за приложения |
| Пропускателна способност на статичните файлове | Мощен, но с по-висок обем памет на връзка | Отлично при много висока едновременност |
| Модулна екосистема | Много голям; зарежда се като DSO по време на изпълнение | Компилирани или динамични модули, по-малка екосистема |
| Типичен случай на употреба | Споделен хостинг, .htaccess работни процеси, смесени динамични приложения | Reverse прокси, статична доставка, крайни точки с висока паралелност |
От какво се нуждае 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 и подобрява уеб сигурността.
Стартирането на Ruby файлове на Apache изисква да бъде активиран mod_ruby. Apache може да обработва Ruby файлове и чрез FastCGI. Възможно е да се използват множество версии на Ruby с помощта на mod_fcgid, т.е. FastCGI.
Можете също да инсталирате Apache Passenger и да конфигурирате Apache да го използва за обслужване на Ruby страници.
(Phusion Passenger, известен още като „Пътнически„, е безплатен модул за уеб сървър, предназначен за интеграция с Apache и Nginx.)
Стъпки за инсталиране на mod_ruby на вашия сървър:
cd /tmp wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz tar zxvf mod_ruby-1.2.6.tar.gz cd mod_ruby-1.2.6/ ./configure.rb --with-apr-includes=/usr/include/apr-1 make make install
Как да стартирате Ruby с Apache
Трябва да добавим модула mod_ruby към конфигурацията на Apache, т.е. /etc/httpd/conf.d/ruby.conf, и да добавим следния ред.
LoadModule ruby_module modules/mod_ruby.so
Ако искате да активирате или деактивирате тези модули, трябва да редактирате конфигурационния файл на Apache и да коментирате или разкоментирате тези модули, при условие че уеб сървърът вече е компилиран с тях.
Как да защитите уеб сървъра Apache
След като Apache започне да предоставя правилното съдържание, следващият приоритет е заключването му. Защитата на вашия уеб сървър е много важна; това означава да позволите на другите да виждат само предназначената информация, да защитите данните си и да ограничите достъпа.
Това са често срещани практики, които подобряват сигурността на вашия Apache уеб сървър.
1) Скриване на информация за версията на Apache и операционната система
Apache показва своята версия и името на операционната система при грешки, както е показано на екранната снимка по-долу.
Атакуващ може да използва тази информация, за да стартира атака, използвайки публично достъпни уязвимости в конкретната версия на сървъра или операционната система.
За да предотвратим показването на тази информация от Apache, трябва да променим опцията „подпис на сървъра“, налична в конфигурационния файл на Apache. По подразбиране тя е „включена“; трябва да я настроим на „изключена“.
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
Също така сме задали „ServerTokens Prod“, който казва на уеб сървъра да връща само Apache и да потиска основната и второстепенната версия на операционната система.
След като промените конфигурационния файл, трябва да рестартирате или презаредите вашия Apache уеб сървър, за да влезе промяната в сила.
service httpd restart
2) Деактивирайте списъка с директории
Ако главната директория на документите ви няма индексен файл, по подразбиране вашият Apache уеб сървър ще покаже цялото съдържание на главната директория на документите.
Тази функция може да бъде изключена за конкретна директория чрез директивата „Опции“, налична в конфигурационния файл на Apache.
<Directory /var/www/html> Options -Indexes </Directory>
3) Деактивиране на ненужните модули
Добра практика е да деактивирате всички ненужни модули, които не се използват. Можете да видите списък с активирани модули, налични във вашия конфигурационен файл на Apache.
[root@amsterdam ~]#httpd -M
perl_module (shared)
php5_module (shared)
proxy_ajp_module (shared)
python_module (shared)
ssl_module (shared)
Много от изброените модули могат да бъдат деактивирани, като mod_imap, mod_include, mod_info, mod_userdir и mod_autoindex, тъй като те почти не се използват от производствени уеб сървъри.
vi /etc/httpd/conf/httpd.conf
#LoadModule auth_digest_module modules/mod_auth_digest.so
След като коментирате модула, запазете файла.
Рестартирайте Apache услугите със следната команда.
/etc/init.d/httpd restart
4) Ограничаване на достъпа до файлове извън основната уеб директория
Ако искате да сте сигурни, че файловете извън главната директория на уеб сървъра не са достъпни, трябва да се уверите, че директорията е ограничена с опциите „Разреши“ и „Забрани“ във конфигурационния файл на вашия уеб сървър.
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
След като ограничите достъпа извън главната директория на уеб сървъра, няма да можете да получите достъп до нито един файл, намиращ се в друга папка на вашия уеб сървър; ще получите код за връщане 404.
5) Използване на mod_evasive за отблъскване на DoS атаки
Ако искате да защитите уеб сървъра си от DoS (Denial of Service) атаки, трябва да активирате модула mod_evasive. Това е модул на трета страна, който открива DoS атаки и им пречи да нанесат толкова щети, колкото биха причинили, ако бъдат оставени да се изпълняват безконтролно. Може да бъде изтеглен по-долу.
6) Използване на mod_security за подобряване на сигурността на Apache
Този модул работи като защитна стена за Apache и ви позволява да наблюдавате трафика в реално време. Той също така предпазва уеб сървъра от атаки с груба сила. Модулът mod_security може да бъде инсталиран със стандартния мениджър на пакети на вашата дистрибуция.
7) Ограничаване на размера на заявката
Apache няма ограничение за общия размер на HTTP заявката, което би могло да доведе до DoS атака. Можете да ограничите размера на заявката с директивата на Apache „LimitRequestBody“ вътре в таг на директория. Стойността може да бъде зададена от 0 до 2 GB (2147483647 байта) според вашите изисквания.
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
Формат на регистрационния файл на Apache
С подсилен сървър, прегледът на лог файловете се превръща в основен инструмент за откриване на проблеми. Логовете на Apache предоставят подробна информация, която помага за откриване на често срещани проблеми със сървъра.
За да се създават регистрационни файлове за достъп, модулът mod_log_config трябва да бъде активиран.
Три директиви, налични в конфигурационния файл на Apache
- TransferLog: Създаване на лог файл.
- LogFormat: Задаване на персонализиран формат.
- CustomLog: Създаване и форматиране на лог файл.
Директивата TransferLog е налична в конфигурационния файл на Apache и тя ротира лог файловете на виртуалния хост според зададените параметри.
<VirtualHost www.example.com> ServerAdmin webmaster@example.com DocumentRoot /usr/www/example/httpd/htdocs/ ServerName www.example.com ServerAlias example.com www.example ErrorLog /usr/www/example/httpd/logs/error_log TransferLog /usr/www/example/httpd/logs/accesslog CustomLog /usr/www/example/httpd/logs/accesslog combined </VirtualHost>
Два вида Apache Log Format
- Общ формат на дневника
- Комбиниран лог формат
Можете да ги активирате, като редактирате конфигурационния файл на Apache, а именно apache2.conf (Debian/Ubuntu) или httpd.conf (за системи, базирани на rpm).
Общ формат на дневника
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
Общ дневник, генериран от Apache
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
Комбиниран лог формат
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog log/access_log combined
Тук
- %h е отдалеченият хост.
- %l е самоличността на потребителя, определена от identd.
- %u е потребителското име, определено чрез HTTP удостоверяване.
- %t е времето, когато сървърът е завършил обработката на заявката.
- %r е редът за заявка от клиента. („GET / HTTP/1.0“)
- %>s е кодът на състоянието, изпратен от сървъра към клиента (500, 404 и т.н.).
- %b е размерът на отговора към клиента (в байтове).
- Референтната страница е страницата, която е препратила към това URL.
- User-agent е низът за идентификация на браузъра.
Комбиниран дневник, генериран от Apache:
199.187.122.91 - - [06/Mar/2014:04:22:58 +0100] "GET /robots.txt HTTP/1.1" 404 1228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Персонализираният лог създава отделен лог файл за всеки виртуален хост на вашия сървър. Той трябва да бъде посочен в секцията за виртуален хост на конфигурационния файл.
Можете да видите конфигурацията на виртуалния хост по-долу; генерираният лог ще бъде персонализиран за този виртуален хост и форматът ще бъде комбиниран.
Конфигурирайте първия си производствен уеб сървър
След като конфигурацията, сигурността и регистрирането са обхванати, последната част е обединяването на всичко в среда, готова за производство.
1. За да имате работещ производствен уеб сървър, ви е необходим специален възел (физически, виртуален или облачен екземпляр) с Linux, Unix, Windows, macOSИ др
2. Уеб сървърът трябва да има директна мрежова връзка и статичен IP адрес конфигуриран върху него.
3. Трябва да има всичко модули необходимо за стартиране на уеб страници. Ако уеб сървър обработва PHP страници, той трябва да е активиран PHP модул.
- Също така се нуждае от добро антивирусен приложение, конфигурирано и работещо за защита на уеб сървъра от злонамерен софтуер или вирусни атаки. Също така ви е необходим механизъм за актуализация редовно да актуализирате конфигурираното антивирусно или антивирусно приложение без ръчна намеса, за да получите максимална полза.
- Ако имате стотици домейни, които да бъдат хоствани на вашия уеб сървър, трябва да внедрите ограничения върху квотата на файловата система за всеки домейн, броя на базите данни, които всеки домейн може да създаде, броя на имейл акаунтите на домейн и др.
- Ако вашият уеб сървър е настроен за услуги за споделен хостинг, потребителите на вашия уеб сървър трябва да бъдат ограничениПотребителят на споделен хостинг трябва да има минимални потребителски привилегии, за да не повреди важни файлове или да не счупи целия сървър. Apache не предоставя такава функционалност и се нуждае от различни приложения на трети страни и персонализиране на операционната система, за да постигне това.
- Ако добавяте a нов домейн на вашия уеб сървър, това изисква редактиране на стотици конфигурационни записи, за да се активират всички функции за добавения домейн.
- Ако някой от хостваните домейни изисква различни PHP настройки в сравнение с останалите домейни, имплементирането на това в ядрото на Apache е много сложно и изисква обширна персонализация на вашия уеб сървър.
- Производственият уеб сървър се нуждае от a защитна стена за блокиране на нежелан трафик, който би могъл да причини високо натоварване на вашия сървър. Внедряване IPTABLE Правилата с командния ред са сложни. Необходими са експертни познания в основните Linux или Unix среди, за да се напишат ефективни правила за защитна стена за блокиране на нежелан трафик. IPTABLE е базиран на модула netfilter; това е защитна стена на ниво операционна система, която позволява на администратора да създава правила за входящ и изходящ трафик на сървъра.
- Един производствен уеб сървър изисква няколко различни приложения като електронна поща, FTP за качване на файлове и Domain Name System за паркирани домейни. Управлението на всички тези приложения на основна Linux или Unix система изисква експертиза в съответните технологии.
Така че, може да се каже, че управлението на уеб сървър за множество домейни е много сложна задача и изисква редактиране на стотици конфигурационни файлове и персонализиране на всяко приложение, за да се постигне желаният резултат. Отстраняването на проблеми с всяка неправилна конфигурация ще бъде много трудно за начинаещи.
Решението с помощта на Cpanel или подобен софтуер
cPanel предоставя графичен начин за управление на вашия уеб сървърПредназначен е да предоставя услуги за масов хостинг, които са лесни за използване и конфигуриране. cPanel намали техническите бариери за навлизане в хостинга и управлението на уеб сървъри. Той улеснява сложните задачи; предоставя много полезни и лесни за използване уеб интерфейси, които изпълняват често срещани задачи за системна администрация, необходими за работата на уеб сървър.
cPanel компилира своя собствена версия на софтуера.
Ако трябва да прекомпилирате вашия уеб сървър (Apache) на нормална Linux платформа, трябва ръчно да изберете или потърсите необходимите модули. cPanel предоставя функционалност EasyApache, която е метод за компилиране на уеб сървър, базиран на скриптове.
Той не само ви предоставя уеб услуги, но и Mail, DNS, FTP и много други услуги, необходими за вашето уеб приложение.
Задачи, които изискват експертни познания в основния Linux или Unix-базиран хостинг, като инсталиране на SSL сертификати, прекомпилиране на Apache с различни PHP модули, актуализиране на уеб сигурността, конфигуриране на ефективни IPTABLE правила, добавяне на FTP потребители, създаване на имейл акаунти за всеки домейн, сканиране на корена на документите с антивирусна програма и създаване на бази данни, са лесни за изпълнение с cPanel.
Той предоставя много скриптове, които поправят, инсталират и отстраняват неизправности при често срещани административни задачи.
Той предоставя функционалност за архивиране и възстановяване, елиминирайки необходимостта от ръчно копиране на файлове в хранилище за резервни копия. Ако архивирате домейна си, cPanel ще създаде tar файл, който ще съдържа главната папка на документите, имейл акаунтите и писмата, FTP акаунтите, базите данни, DNS записите и други приложения.
Той също така предоставя подробна документация и има много голяма общност от потребители, където можете да обсъждате и да получавате решения за вашите проблеми.
Така че, може да се каже така Cpanel е мощно приложение за управление на вашия уеб сървър с необходимите функции. То предоставя лесен за използване интерфейс за управление на вашия домейн и механизъм за избягване на сложността на управлението на основен уеб сървър.
Има много конкурентни продукти на cPanel, като Plesk, ISPConfig, Ajenti, Kloxo, Open Panel и ZPanel.

















