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

Что такое Апач?
Apache — это замечательное программное обеспечение. Это самый распространенный веб-сервер в мире, занимающий более 50% коммерческого рынка веб-серверов. Apache является наиболее распространенным веб-сервером в Unix-подобных операционных системах, но его можно использовать практически на всех платформах, таких как... WindowsOS X, OS/2 и т. д. Слово «апачи» происходит от названия индейского племени апачи, известного своими навыками ведения войны и стратегического планирования.
Это модульное, основанное на процессах веб-серверное приложение, которое создает новый поток при каждом одновременном подключении. Оно поддерживает множество функций; многие из них скомпилированы как отдельные модули и расширяют его основную функциональность, предоставляя все, от поддержки языков программирования на стороне сервера до механизмов аутентификации. Виртуальный хостинг — одна из таких функций, которая позволяет одному веб-серверу 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, вы можете установить это приложение либо с помощью менеджера пакетов, специфичного для вашего производителя, либо путем прямой сборки rpm-файла из доступного архива исходного кода.
Вы можете установить Apache через стандартный менеджер пакетов, доступный во всех дистрибутивах на основе Red Hat, таких как CentOS, Red Hat и Fedora.
[root@amsterdam ~]# yum install httpd
Исходный архив Apache можно преобразовать в файл RPM с помощью следующей команды.
[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2
Для создания RPM-файла из исходного кода на вашем сервере обязательно должна быть установлена папка -devel.
После преобразования исходного файла в установщик 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 save
Вы можете увидеть значение по умолчанию Экран приветствия Apache2 перейдя по IP-адресу вашего сервера.
Что такое виртуальный хост?
После запуска Apache следующим логическим шагом является изучение того, как размещать несколько сайтов на одной машине. Веб-сервер Apache может размещать несколько веб-сайтов на одной машине. SAME сервер. Вам не нужен отдельный сервер и программное обеспечение Apache для каждого веб-сайта. Этого можно достичь, используя концепцию Виртуальный хост or VHost.
Для каждого домена, который вы хотите разместить на своем веб-сервере, потребуется отдельная запись в конфигурационном файле Apache.
Типы виртуального хоста Apache
- Виртуальный хост на основе имени
- Виртуальный хост на основе адреса или 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, в каталоге /etc/httpd/conf.d/ будет создан файл с именем php.conf. Проверить это также можно с помощью:
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, также известный как «��ассажир«Это бесплатный модуль веб-сервера, предназначенный для интеграции с 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/mod_ruby.so
Чтобы включить или отключить эти модули, необходимо отредактировать конфигурационный файл Apache и закомментировать или раскомментировать соответствующие модули, при условии, что веб-сервер уже скомпилирован с ними.
Как защитить веб-сервер Apache
После того как Apache начнет предоставлять нужный контент, следующим приоритетом станет его защита. Обеспечение безопасности вашего веб-сервера очень важно; это означает предоставление другим доступа только к необходимой информации, защиту ваших данных и ограничение доступа.
Это распространенные методы, повышающие безопасность вашего веб-сервера Apache.
1) Скрытие информации о версии Apache и операционной системе.
В сообщениях об ошибках Apache отображает свою версию и название операционной системы, как показано на скриншоте ниже.
Злоумышленник может использовать эту информацию для осуществления атаки, используя общедоступные уязвимости в конкретной версии сервера или операционной системы.
Чтобы предотвратить отображение этой информации Apache, необходимо изменить параметр «server signature» в конфигурационном файле Apache. По умолчанию он включен; нам нужно установить его в положение «off».
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
Мы также настроили параметр “ServerTokens Prod”, который указывает веб-серверу возвращать только Apache и подавлять основную и дополнительную версии операционной системы.
После внесения изменений в конфигурационный файл необходимо перезапустить или перезагрузить веб-сервер Apache, чтобы изменения вступили в силу.
service httpd restart
2) Отключить листинг каталогов
Если в корневом каталоге вашего сайта отсутствует индексный файл, по умолчанию веб-сервер Apache будет отображать все содержимое этого каталога.
Эту функцию можно отключить для конкретного каталога с помощью директивы «Options», доступной в конфигурационном файле 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-атак (отказ в обслуживании) необходимо включить модуль mod_evasive. Это сторонний модуль, который обнаруживает DoS-атаки и предотвращает нанесение ими такого же ущерба, какой они могли бы причинить, если бы оставались без контроля. Его можно скачать ниже.
6) Использование mod_security для повышения безопасности Apache
Этот модуль работает как брандмауэр для Apache и позволяет отслеживать трафик в режиме реального времени. Он также предотвращает атаки методом перебора паролей на веб-сервер. Модуль mod_security можно установить с помощью стандартного менеджера пакетов вашего дистрибутива.
7) Ограничение размера запроса
Apache не устанавливает никаких ограничений на общий размер HTTP-запроса, что может привести к DoS-атаке. Вы можете ограничить размер запроса с помощью директивы Apache «LimitRequestBody» внутри тега Directory. Значение может быть установлено в диапазоне от 0 до 2 ГБ (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
- Общий формат журнала
- Комбинированный формат журнала
Вы можете включить их, отредактировав конфигурационный файл 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)"
Функция Custom Log создает отдельный файл журнала для каждого виртуального хоста на вашем сервере. Ее необходимо указать в разделе виртуальных хостов конфигурационного файла.
Ниже вы можете увидеть конфигурацию виртуального хоста; сгенерированный лог будет создан специально для этого виртуального хоста, и формат будет объединенным.
Настройте свой первый производственный веб-сервер.
После того, как были решены вопросы конфигурации, безопасности и ведения журналов, остается лишь собрать все воедино и создать готовую к эксплуатации среду.
1. Для того чтобы веб-сервер работал в производственной среде, вам потребуется выделенный сервер. узел (физический, виртуальный или облачный экземпляр), работающий под управлением Linux, Unix, Windows, macOS, и т.д.
2. Веб-сервер должен иметь прямое подключение к сети и Статический IP-адрес настроен на нем.
3. В нем должны быть все модули Необходим для запуска веб-страниц. Если веб-сервер обрабатывает PHP-страницы, ему необходимо включить модуль PHP.
- Для этого также необходим хороший антивирус Настроенное и запущенное приложение обеспечивает защиту веб-сервера от вредоносных программ и вирусов. Также необходим механизм для... обновление Для получения максимальной пользы необходимо регулярно запускать настроенное антивирусное или антишпионское приложение без какого-либо ручного вмешательства.
- Если вам необходимо разместить на веб-сервере сотни доменов, вам следует внедрить... ограничения на квоту файловой системы для каждого домена, количество баз данных, которые может создать каждый домен, количество учетных записей электронной почты на домен и т. д.
- Если ваш веб-сервер настроен для При использовании услуг общего хостинга необходимо ограничить доступ пользователей к вашему веб-серверу.Пользователь, использующий общий хостинг, должен иметь минимальные права доступа, чтобы не повредить важные файлы и не вывести из строя весь сервер. Apache не предоставляет подобной функциональности и требует использования сторонних приложений и настройки операционной системы для её реализации.
- Если вы добавляете новый домен На вашем веб-сервере потребуется отредактировать сотни конфигурационных записей, чтобы включить все функции для добавленного домена.
- Если один из размещенных доменов требует различные настройки PHP В отличие от остальных доменов, внедрение этой функции в ядро Apache очень сложно и требует значительной настройки вашего веб-сервера.
- Производственному веб-серверу требуется брандмауэр Для блокировки нежелательного трафика, который может создавать высокую нагрузку на ваш сервер. Внедрение ИПТАБЛИЦА Создание правил с помощью командной строки — сложная задача. Для написания эффективных правил брандмауэра для блокировки нежелательного трафика требуются знания основ Linux или Unix. IPTABLE основан на модуле netfilter; это брандмауэр на уровне операционной системы, который позволяет администратору создавать правила для входящего и исходящего трафика на сервере.
- Для рабочего веб-сервера требуется несколько различных приложений, таких как e-mail, Ftp для загрузки файлов и Система имен доменов для припаркованных доменов. Управление всеми этими приложениями в базовой системе Linux или Unix требует экспертных знаний в соответствующих технологиях.
Таким образом, можно сказать, что управление веб-сервером для нескольких доменов — это очень сложная задача, требующая редактирования сотен конфигурационных файлов и настройки каждого приложения для достижения желаемого результата. Устранение любых ошибок в конфигурации будет очень сложным для начинающих.
Решение с использованием Cpanel или аналогичного программного обеспечения
cPanel предоставляет графический способ управления веб-сервером.Он предназначен для предоставления услуг массового хостинга, которые просты в использовании и настройке. cPanel снизил технические барьеры для входа в сферу хостинга и управления веб-серверами. Он упрощает сложные задачи; он предоставляет множество полезных и простых в использовании веб-интерфейсов, которые выполняют распространенные задачи системного администрирования, необходимые для работы веб-сервера.
cPanel компилирует собственную версию программного обеспечения.
Если вам необходимо перекомпилировать веб-сервер (Apache) на обычной платформе Linux, вам придётся вручную выбрать или найти необходимые модули. cPanel предоставляет функциональность EasyApache, представляющую собой метод компиляции веб-сервера на основе скриптов.
Оно не только предоставляет вам веб-сервисы, но и MailDNS, FTP и многие другие сервисы, необходимые для вашего веб-приложения.
Задачи, требующие специальных знаний в области хостинга на базе Linux или Unix, такие как установка SSL-сертификатов, перекомпиляция Apache с различными модулями PHP, обновление веб-безопасности, настройка эффективных правил IPTABLE, добавление FTP-пользователей, создание почтовых учетных записей для каждого домена, сканирование корневого каталога антивирусом и создание баз данных, легко выполняются с помощью cPanel.
Он предоставляет множество скриптов для исправления, установки и устранения неполадок в распространенных административных задачах.
Она обеспечивает функции резервного копирования и восстановления, устраняя необходимость вручную копировать файлы в хранилище резервных копий. При резервном копировании домена cPanel создаст архив tar, содержащий корневую папку документов, учетные записи электронной почты и письма, учетные записи FTP, базы данных, записи DNS и другие приложения.
Кроме того, он предоставляет подробную документацию и имеет очень большое сообщество пользователей, где вы можете обсуждать и находить решения своих проблем.
Итак, можно сказать, что Cpanel Это мощное приложение для управления веб-сервером со всеми необходимыми функциями. Оно предоставляет простой в использовании интерфейс для управления доменом и механизм, позволяющий избежать сложностей управления основным веб-сервером.
Существует множество конкурирующих с cPanel продуктов, таких как Plesk, ISPConfig, Ajenti, Kloxo, Open Panel и ZPanel.

















