Linux & Administration

Apache

Веб-сервер Apache HTTP Server, а также имя фонда Apache Software Foundation, под которым выпущены Kafka, Spark и сотни других проектов.

Что такое Apache

Под словом «Apache» скрываются две разные вещи, и путаница из-за этого возникает постоянно:

  1. Apache HTTP Server (он же httpd) — веб-сервер, выпущенный в 1995 году и много лет бывший самым популярным в интернете. Когда говорят «поставь апач» или «сайт на апаче» — речь о нём.
  2. Apache Software Foundation (ASF) — некоммерческий фонд, под крылом которого разрабатываются сотни open source-проектов. Они не связаны с веб-сервером ничем, кроме имени фонда и лицензии Apache License 2.0: Kafka, Spark, Hadoop, Airflow, Cassandra, Tomcat, NiFi.

Дальше — по очереди о каждой.

Apache HTTP Server

Модульный веб-сервер: базовое ядро плюс подключаемые модули (mod_rewrite, mod_ssl, mod_php). Отдаёт статику, выполняет PHP, работает обратным прокси.

Ключевая архитектурная особенность — MPM (Multi-Processing Module), режим обработки соединений:

MPM Как работает Комментарий
prefork процесс на соединение нужен для mod_php, самый прожорливый по памяти
worker потоки внутри процессов экономнее, требует потокобезопасных модулей
event потоки + отдельная обработка keep-alive современный выбор, ближе всего к Nginx

Отсюда растёт классическое противопоставление Apache и Nginx: старые связки на prefork тратят на каждое соединение отдельный процесс, и на нескольких тысячах клиентов память заканчивается.

Apache vs Nginx

Apache Nginx
Модель процессы/потоки на соединение (MPM) событийный цикл
Статика медленнее быстрее
Динамика (PHP) mod_php внутри процесса только через php-fpm
Настройка на уровне папки .htaccess нет, только основной конфиг
Типичная роль сегодня backend за прокси фронт, прокси, балансировщик

Часто их ставят вместе: Nginx спереди отдаёт статику и терминирует TLS, Apache сзади обрабатывает PHP.

.htaccess — за что Apache любят на шаред-хостинге

.htaccess — файл с настройками, который кладётся прямо в папку сайта и действует на неё и вложенные. Не нужен root, не нужен перезапуск сервера: положил файл — правила заработали. Поэтому весь классический CMS-хостинг построен на Apache.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

<FilesMatch "\.(env|log|sqlite)$">
    Require all denied
</FilesMatch>

Обратная сторона: Apache проверяет наличие .htaccess в каждой папке по пути запроса, и на нагруженном сайте это заметная цена.

Что такое Apache Kafka

Отдельный продукт фонда, к веб-серверу отношения не имеющий. Kafka — распределённый лог событий: приложения пишут в него сообщения, другие приложения их читают, причём сообщения хранятся заданный срок и могут быть прочитаны повторно. Используется для потоковой обработки данных, сбора логов и связи микросервисов. Подробности — в отдельной статье про Kafka.

Проверка и перезапуск

sudo apachectl configtest      # проверить синтаксис конфига
sudo systemctl reload apache2  # Debian/Ubuntu
sudo systemctl reload httpd    # RHEL-семейство
sudo a2enmod rewrite && sudo systemctl restart apache2

Имя пакета и службы отличается: в Debian и Ubuntu это apache2, в RHEL и AlmaLinux — httpd.

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер