В этой статье мы говорим про веб-сервер Apache. Если вам не очень понятно, что такое веб-сервер, зачем он нужен и как работает, прочитайте статью «Веб-сервер».
Настройка Apache
Скопировать ссылку на секцию «Настройка Apache» Скопировано
Веб-сервер Apache был разработан в 1995 году Apache Software Foundation как замена NCSA HTTPd. В Unix-подобных операционных системах, как правило, Apache поставляется вместе с дистрибутивом как служба httpd . На Windows Apache необходимо установить и запустить в качестве службы (инструкция).
Существует несколько заранее подготовленных программных пакетов в виде приложений с графическим интерфейсом пользователя, в которых уже установлены и настроены для совместной работы веб-сервер Apache, база данных и интерпретатор для скриптового языка. Наиболее популярными являются пакеты AMP (аббревиатура от Apache + MySQL/MariaDB + Perl/PHP/Python). Благодаря простоте установки и настройки, поддержке разных операционных систем наиболее популярным пакетом является XAMPP.
Что такое Apache Kafka и зачем это нужно
Структура файлов конфигурации
Скопировать ссылку на секцию «Структура файлов конфигурации» Скопировано
Работу Apache можно настраивать с помощью файлов конфигурации. Файлы конфигурации могут быть расположены в разных местах в зависимости от типа установки веб-сервера. Есть страница из официальной документации, которая описывает стандартные пути установки из дистрибутива для разных операционных систем. Если вы установили Apache, собрав из исходного кода, таким путём на Unix-подобных системах будет /usr / local / apache2 / conf . Конфигурацию по умолчанию обычно можно найти в файле с именем httpd . conf .
Файл конфигурации содержит простые директивы, по одной на строку. Если настройки не помещаются на одной строчке, можно использовать символ , как это применяется при работе со скриптами в терминале. Если в значении аргумента есть пробелы, он помещается в кавычки. Регистр букв при указании директив важен. Для аргументов регистр, как правило, тоже имеет значение.
Для однострочных комментариев используется символ # . Аргументы, в которых записываются нужные значения параметров настройки, отделяются пробелами.
Сложные директивы указываются внутри угловых скобок, по аналогии с тегами в HTML. Внутри тега с помощью простых или сложных директив задаётся поведение веб-сервера.
В отличие от веб-сервера Nginx, конфигурация может храниться и локально в директориях сайта, к которому предоставляет доступ Apache. Для этого создаётся специальный файл .htaccess в папке, которая должна работать иначе, чем указано в текущей конфигурации Apache. Если пользователь не имеет доступа к файлам конфигурации Apache напрямую, такой вариант конфигурации будет очень полезен.
Обычно конфигурация хранится не в одном большом файле, а разбивается на несколько небольших файлов. Они подключаются в единый конфигурационный файл, который используется для настройки веб-сервера, так:
Что такое Apache и как его использовать?
Include /path/to/conf/example.conf Include /path/to/conf/example.conf Скопировать Скопировано Не удалось скопировать
Include — директива, одна из многих, которые позволяют настраивать веб-сервер. Все директивы описаны в официальной документации, мы рассмотрим наиболее важные.
В файлах конфигурации можно задавать переменные с помощью директивы Define . Использовать переменные можно с помощью конструкции $ < V A R>. Как и в терминале, в файлах конфигурации Apache можно создавать переменные окружения. Для этого используется директива Set Env .
Для указания директории, к которой веб-сервер должен перенаправить HTTP-запросы от клиента, используется следующий список директив:
- < Directory directory — path>— устанавливаются правила поведения веб-сервера для файлов и поддиректорий внутри пути directory — path .
- < Directory Match regex>— то же самое, что и Directory , но применяется ко всем путям, которые удовлетворяют регулярному выражению regex .
- < Files filename>— устанавливаются правила поведения веб-сервера для файлов с именем filename .
- < Files Match regex>— то же самое, что и Files , но применяется ко всем файлам, имена которых удовлетворяют регулярному выражению regex .
- < Location U R L — path| U R L>— устанавливаются правила поведения веб-сервера для определённых абсолютных и относительных ссылок URL — path|URL .
- < Location Match regex>— то же самое, что и Location , но применяется ко всем ссылкам, которые удовлетворяют регулярному выражению regex .
- < Virtual Host addr [ : port ] [ addr [ : port ] ] . . . >— устанавливаются правила поведения веб-сервера для определённых имён хостов или IP-адресов.
О портах, хостах и IP-адресах читайте подробнее в статье «Работа с сетью».
Примеры сложных директив
Скопировать ссылку на секцию «Примеры сложных директив» Скопировано
AllowOverride None
Для директории /usr / директива Allow Override с аргументом None будет означать, что локальную конфигурацию в файле .htaccess нужно проигнорировать.
SetHandler server-status Require all granted
Директива Set Handler позволяет обрабатывать запросы, используя специальные обработчики (хендлеры). В примере при обращении к пути сайта /status веб-сервер выдаёт отчёт о своём состоянии. Аргументы all granted для директивы Require указывают, что веб-сервер должен обработать любые запросы для всех пользователей, независимо от того, авторизованы они или нет. Можно разрешить доступ только определённым IP-адресам, которые начинаются с 10 . , 172 . 20 . или 192 . 168 . 2 . так:
Require ip 10 172.20 192.168.2 Require ip 10 172.20 192.168.2 Скопировать Скопировано Не удалось скопировать
Директива Require используется для установления каких-то требований. Если требования не соблюдены, то запросы от клиента отклоняются веб-сервером. Можно использовать вложенные директивы так:
Require group alpha beta Require not group reject
В этом примере все пользователи из групп alpha и beta имеют доступ к папке /www / docs , а пользователи из группы reject — нет.
Можно и сложнее. Пример так называемого контейнера авторизации:
Require user superadmin Require group admins Require group sales Require group temps
Широко распространено использование виртуальных хостов, то есть отдельных IP-адресов или имён хостов, для обработки запросов пользователей. Можно указать для виртуального хоста доменное имя сайта ( Server Name ); директорию, в которую будут перенаправляться запросы пользователей ( Document Root ); можно настроить отчёты об ошибках ( Error Log ) или успешных актах передачи файлов пользователям ( Transfer Log ):
DocumentRoot «/www/docs/host.example.com» ServerName host.example.com ErrorLog «logs/host.example.com-error_log» TransferLog «logs/host.example.com-access_log»
Веб-сервер Apache позволяет использовать модули для обработки HTTP-запросов клиентов. Например, для обработки HTTP-запросов интерпретатором PHP для файлов с расширением * . php нужно подключить и настроить отдельный модуль mod _ fcgi :
SetHandler «proxy:unix:/path/to/app.sock|fcgi://localhost/»
Предварительно модуль необходимо подключить и проверить, подключился ли он корректно. Для этого нужно использовать директиву:
AddHandler php7.fcgi .php Action php7.fcgi /php7.fcgi Alias /php7.fcgi /usr/lib/cgi-bin/php7.fcgi Authorization -idle-timeout 3600 Require all granted
В примере происходит следующее:
- Add Handler добавляет обработчик php7 . fcgi для файлов с расширением .php ;
- Action активирует тип обработки php7 . fcgi запросов для обработчика /php7 . fcgi ;
- Alias устанавливает соответствие между ссылками и локальными директориями на компьютере, где запущен сервер;
- Authorization определяет период времени, по истечении которого понадобится новая авторизация клиента.
Управление конфигурацией
Скопировать ссылку на секцию «Управление конфигурацией» Скопировано
Запустить Apache можно напрямую, используя исполняемый файл, или в качестве службы в операционной системе.
Проверить конфигурацию на соответствие синтаксису можно с помощью ключа -t :
httpd -t httpd -t Скопировать Скопировано Не удалось скопировать
Ключ -s выводит в консоль информацию о текущей конфигурации веб-сервера для виртуального хоста:
httpd -s httpd -s Скопировать Скопировано Не удалось скопировать
Ключ -k позволяет управлять веб-сервером с помощью сигналов Unix-подобных систем (подробнее в статье «Многозадачность и управление процессами)».
httpd -k httpd -k signal> Скопировать Скопировано Не удалось скопировать
Можно использовать сигналы из списка:
start — запустить;
stop — немедленно остановить;
graceful — stop — остановить веб-сервер после завершения обработки текущих запросов клиентов;
restart — перезапустить с новой конфигурацией, без завершения обработки текущих запросов клиентов;
graceful — перезапустить с новой конфигурацией, дождавшись завершения обработки текущих запросов клиентов;
reopen — открыть лог-файлы заново.
Можно получить конфигурационный файл с помощью сервиса Mozilla SSL Configuration Generator. Попробуйте сгенерировать разные конфигурации, это поможет разобраться с конкретными настройками детальнее.
Шпаргалка по Apache
Скопировать ссылку на секцию «Шпаргалка по Apache» Скопировано
Подключение файлов конфигурации
Скопировать ссылку на секцию «Подключение файлов конфигурации» Скопировано
Include /etc/apache/virtual-hosts/*.conf Include /etc/apache/virtual-hosts/*.conf Скопировать Скопировано Не удалось скопировать
Для удобного управления конфигурацией и для возможности переиспользовать конфигурацию между веб-серверами есть возможность подключать конфигурационные файлы. Apache понимает собранную из таких кирпичиков конфигурацию так, как если бы она лежала в одном файле.
Своё сообщение о 404 ошибке
Скопировать ссылку на секцию «Своё сообщение о 404 ошибке» Скопировано
ErrorDocument 404 /404.html ErrorDocument 404 /404.html Скопировать Скопировано Не удалось скопировать
У Apache, как и у любого веб-сервера, есть стандартное сообщение об ошибке. Но не всегда хочется использовать стандартное. Кастомизация сообщения возможна простым перенаправлением запроса к несуществующей странице на нужный разработчику файл. В примере этот файл называется 404.html и находится в директории сайта.
Создание виртуального каталога (mod_alias)
Скопировать ссылку на секцию «Создание виртуального каталога (mod_alias)» Скопировано
Alias /common /web/common Alias /common /web/common Скопировать Скопировано Не удалось скопировать
Эта настройка позволяет перенаправить запросы клиента к определённому каталогу сайта к директории на компьютере, на котором работает веб-сервер. В примере настройка работает так: клиент обращается к сайту по адресу https : / / example . com / common и получает содержимое директории /web / common .
Создание постоянного редиректа (mod_alias)
Скопировать ссылку на секцию «Создание постоянного редиректа (mod_alias)» Скопировано
Redirect permanent /old http://example.com/new Redirect permanent /old http://example.com/new Скопировать Скопировано Не удалось скопировать
Часто необходимо перенаправить клиентов при обращении к каталогу сайта на другой сайт. Например, выходит новая версия сайта или сайт переезжает на новый домен. Поисковые системы тоже понимают такой вид редиректа, как переезд контента на другой адрес в сети, и привязывают всю накопленную информацию к новому месту в Интернете.
Разрешение доступа только с определённого IP-адреса
Скопировать ссылку на секцию «Разрешение доступа только с определённого IP-адреса» Скопировано
Order Deny,AllowDeny from allAllow from 127.0.0.1 Order Deny,Allow Deny from all Allow from 127.0.0.1 Скопировать Скопировано Не удалось скопировать
Эта возможность чаще всего имеет смысл для отладки сайта. Клиентам доступа к сайту не будет кроме компьютеров разработчиков. С другой стороны, настройка может использоваться и для обеспечения дополнительного уровня защиты. Можно заходить на сайт только через VPN, IP-адрес которого прописан в настройках.
Включение механизма редиректов
Скопировать ссылку на секцию «Включение механизма редиректов» Скопировано
RewriteEngine On Redirect /news/123 to /news.cfm?id=123 RewriteRule ^/news/([0-9]+)$ /news.cfm?id=$1 [PT,L] Redirect www.example.com to example.com RewriteCond % ^www.example.com$ [NC]RewriteRule ^(.*)$ http://example.com$1 [R=301,L] RewriteEngine On Redirect /news/123 to /news.cfm?id=123 RewriteRule ^/news/([0-9]+)$ /news.cfm?id=$1 [PT,L] Redirect www.example.com to example.com RewriteCond % ^www.example.com$ [NC] RewriteRule ^(.*)$ http://example.com$1 [R=301,L] Скопировать Скопировано Не удалось скопировать
Для работы бэкенда или фронтенда, когда веб-приложение использует пути и аргументы адресной строки, эта настройка очень важна. От правильности настройки редиректов напрямую зависит корректность работы веб-приложения.
На практике
Скопировать ссылку на секцию «На практике» Скопировано
Игорь Коровченко советует
Скопировать ссылку на секцию «Игорь Коровченко советует» Скопировано
Управление и мониторинг
Скопировать ссылку на секцию «Управление и мониторинг» Скопировано
С помощью сигналов в Unix-подобных операционных системах веб-сервером можно управлять, как это описано в статье «Веб-сервер Nginx». Управление веб-сервером Apache осуществляется так:
- sudo systemctl status httpd — получить информацию о запущенном сервере;
- sudo systemctl stop httpd — остановить сервер;
- sudo systemctl start httpd — запустить сервер;
- sudo systemctl reload httpd — перезапустить сервер, дождавшись завершения обработки всех текущих запросов;
- sudo systemctl restart httpd — перезапустить сервер, не дожидаясь окончания обработки текущих запросов.
В Windows управление веб-сервером зависит от того, как он был запущен. Apache может использоваться как консольное приложение. В этом случае запуск, установка и перезапуск Apache можно осуществить с помощью команд:
httpd.exehttpd.exe -k shutdownhttpd.exe -k restart httpd.exe httpd.exe -k shutdown httpd.exe -k restart Скопировать Скопировано Не удалось скопировать
Больше настроек можно посмотреть в официальной документации.
Источник: doka.guide
Apache
Apache — веб-сервер, распространяемый бесплатно. Программное обеспечение — кроссплатформенный продукт, то есть работает на разных операционных системах (Linux, Windows, Solaris и др.).
Основные отличия от конкурентов — надежность и гибкость. Apache работает по принципу модулей. Клиент сначала устанавливает ядро, а потом подключает необходимые модули под свои задачи.
Принцип работы
Apache обрабатывает запросы клиент-сервер по протоколу HTTP. Веб-сервер имеет 3 модуля мультипроцессинга, которые отвечают за обработку запроса пользователя:
- Mpm_prefork создает на каждый запрос клиента создает отдельный процесс. Чем меньше процессов, тем быстрее обрабатываются задачи пользователя. Под каждый запрос на сервере выделяется объем оперативной памяти. Данный модуль обычно используют в паре с другими внешними компонентами, которые не умеют работать в многопоточном режиме, например, mod_php.
- Mpm_worker создает процессы, которые работают сразу с несколькими потоками. Один поток обрабатывает одно соединение пользователя. Модуль быстрее обрабатывает запросы пользователя и меньше нагружает ресурсы сервера.
- Mpm_event разработан для работы с постоянными (keep-alive) соединениями. Разделяет потоки на постоянные и активные, что позволяет повысить скорость обработки запросов пользователей.
Существуют модули, которые оптимизированы под семейство операционных систем. Например, модуль mpm_winnt работает с ОС Windows, mpm_netware — с Netware.
Особенности
Разработчики сделали Apache максимально доступным и простым в эксплуатации. Сообщество регулярно выпускает патчи и обновления.
Apache обладает функцией виртуализации. На одном IP-адресе может существовать множество виртуальных сайтов. Каждый хост настраивается под индивидуальные требования клиента: настройка прав доступа к файлам, ограничение потребление вычислительных мощностей физического сервера и др.
Для веб-сервера существуют модули, которые добавляют в ядро Apache поддержку других (СУБД написана на С) языков, например, PHP, Ruby, Perl.
У Apache есть ряд встроенных функций безопасности. К ним относятся система авторизации пользователей, ограничение доступа по IP-адресам, разграничение прав доступа к каталогам и файлам на сервере и т. д. Доступна функция запуска процессов на основании идентификаторов пользователей или группы.
При необходимости пользователь может зашифровать данные, передаваемые между сервером и клиентом, используя протокол SSL. Дополнительные функции защиты подключаются через модуль mod_security.
Веб-сервер Apache разработан для запуска сайта без лишних движений. Интуитивный интерфейс, модульная система, встроенные механизмы защиты и множество других функций делает его одним из самых популярных веб-серверов.
Источник: itglobal.com
Apache
Apache — свободный HTTP веб-сервер, названый в честь группы племён североамериканских индейцев апачей. Также является сокращением от англ. a patchy server. Среди русскоязычных пользователей общепринято искажённое апач.
Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.
Главные достоинства веб-сервера Apache — надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.
Архитектура веб-сервера
- обработка конфигурационных файлов,
- протокол HTTP,
- система загрузки модулей.
Разрабатывается Apache Software Foundation.
Написана на языке программирования C.
- Конфигурация сервера (http.conf).
- Конфигурация виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf).
- Конфигурация уровня директории (.htaccess).
- worker (Linux, FreeBSD) для средне загруженных серверов.
- pre-fork (Linux, FreeBSD) обеспечивает безопасность и стабильность за счёт изоляции процессов друг от друга, сохранение совместимости со старыми библиотеками, не поддерживающими threads.
- perchild (Linux) для высоко нагруженных серверов, дает возможность запуска дочерних процессов используя другое имя пользователя для повышения безопасности.
- netware (Novell, Netware) для серверов Novell Netware.
- winnt (Miscosoft Windows) для серверов под управлением Microsoft Windows.
- Apache-ITK (Linux, FreeBSD) для хостинговых серверов, серверов, критичных к изоляции пользователей и учёту ресурсов.
- peruser (Linux, FreeBSD) обеспечивает повышенную безопасность, работу с библиотеками, не поддерживающими threads.
- Поддержка языков программирования
- Добавление функций
- Исправление ошибок или модификация основных функций
- Усиление безопасности
Позволяет полноценно обслуживать на одном IP-адресе множество сайтов (доменных имен), отображая для каждого из них собственное содержимое.
Функциональные возможности Apache
Интеграция с другим ПО и языками программирования.
Существует множество модулей, добавляющих к Apache поддержку различных языков программирования и систем разработки.
К ним относятся:
- PHP (mod_php).
- Python (mod python, mod wsgi).
- Ruby (apache-ruby).
- Perl (mod perl).
- ASP (apache-asp).
- Tcl (rivet).
Кроме того, Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на практически всех языках программирования, в том числе C, C++, Lua, sh, Java.
Источник: topexpert.digital