Настройка Apache на Linux: практическое руководство для администраторов 2026 | AdminWiki

Настройка Apache на Linux: практическое руководство для администраторов 2026

09 августа 2026 16 мин. чтения
Содержание статьи
Проверено на: Apache 2.4.x в Debian/Ubuntu и RHEL/CentOS/AlmaLinux. Команды управления службой и расположение конфигурации приведены отдельно для разных семейств дистрибутивов. Дата проверки: 24 августа 2026 года.

Что будет настроено

Чтобы настроить Apache на Linux, установите пакет apache2 в Debian/Ubuntu или httpd в RHEL-подобных системах. Главный конфигурационный файл находится в /etc/apache2/apache2.conf либо /etc/httpd/conf/httpd.conf. После каждой правки проверяйте синтаксис командой apachectl configtest, а в RHEL также командой httpd -t: успешная проверка выводит Syntax OK. Затем настройте виртуальный хост, при необходимости подключите HTTPS, выберите MPM, проверьте логи и выполните диагностику через curl, apachectl -S и журнал службы.

  • Установка Apache и базовая проверка запуска.
  • Архитектура конфигурации и управление модулями.
  • Виртуальный хост Apache для домена example.com.
  • HTTPS через Certbot и проверка редиректа HTTP -> HTTPS.
  • Выбор и настройка MPM, включая Apache MPM event.
  • Логирование, мониторинг и безопасное кэширование.
  • Диагностика ошибок 403, 404, 500, SSL, DNS и проблем с портами.

Оглавление

  1. Установка Apache и базовая проверка.
  2. Архитектура конфигурации Apache.
  3. Виртуальные хосты и проверка через curl.
  4. HTTPS для виртуального хоста.
  5. MPM и кэширование.
  6. Логирование и мониторинг.
  7. Устранение типичных ошибок.
  8. FAQ.

Установка Apache и базовая проверка

Debian/Ubuntu: установка и запуск apache2

Установите пакет, включите запуск службы вместе с системой и проверьте её состояние:

sudo apt update
sudo apt install apache2
sudo systemctl enable --now apache2
sudo systemctl status apache2 --no-pager

Если на сервере используется UFW, откройте HTTP-порт:

sudo ufw allow 80/tcp

Проверьте ответ локального веб-сервера:

curl -I http://127.0.0.1

В ответе должна быть строка с кодом HTTP. Если UFW или другой файрвол не используется, команду открытия порта выполнять не нужно.

RHEL/CentOS/AlmaLinux: установка и запуск httpd

В RHEL-подобных системах пакет Apache называется httpd, а служба управляется через httpd:

sudo dnf install httpd
sudo systemctl enable --now httpd
sudo systemctl status httpd --no-pager

Если на сервере активен firewalld, разрешите HTTP-трафик:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

Затем выполните такую же локальную проверку:

curl -I http://127.0.0.1

До публикации сайта проверьте конфигурацию:

apachectl configtest

Для RHEL можно использовать эквивалентную команду:

httpd -t

Архитектура конфигурации Apache: с чего начать

Apache управляется через текстовые конфигурационные файлы. Их иерархия и расположение зависят от дистрибутива Linux, но логика везде одинакова: есть главный файл, который подключает дополнительные конфиги через директиву Include. Это позволяет разбить настройку на модули, виртуальные хосты и глобальные параметры, не превращая один файл в нечитаемую портянку.

В Debian и Ubuntu главный конфигурационный файл - /etc/apache2/apache2.conf. В RHEL, CentOS и AlmaLinux - /etc/httpd/conf/httpd.conf. Дальше начинается ветвление.

Главный конфигурационный файл: apache2.conf против httpd.conf

В Debian-системах apache2.conf содержит глобальные настройки: таймауты, KeepAlive, параметры MPM, правила доступа к файловой системе. Сам файл компактный, потому что основная логика вынесена в подключаемые директории. Типичный фрагмент:

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

В RHEL-семействе httpd.conf более монолитный. Модули и виртуальные хосты часто описывают прямо в нём или подключают через Include. Путь к корневой директории сайтов по умолчанию - /var/www/html. Глобальные настройки задаются директивами ServerRoot, Listen, User, Group.

Проверить синтаксис любого конфига до перезагрузки можно командой:

apachectl configtest

Если вывод содержит Syntax OK, ошибок нет. При проблемах утилита укажет файл и номер строки. Это первое, что нужно выполнять после любых правок.

Управление модулями: как работают mods-available и mods-enabled

Debian/Ubuntu: включение модулей через a2enmod

В Debian/Ubuntu модули лежат в /etc/apache2/mods-available/. Каждый модуль представлен двумя файлами: .load (загружает библиотеку) и .conf (настройки модуля). Включение модуля создаёт симлинки в /etc/apache2/mods-enabled/. Для этого есть штатные утилиты:

a2enmod rewrite   # включить mod_rewrite
a2dismod rewrite  # отключить mod_rewrite

После изменения набора модулей проверьте конфигурацию и перечитайте её:

apachectl configtest
systemctl reload apache2

RHEL/CentOS/AlmaLinux: подключение модулей через LoadModule

В RHEL/CentOS модули подключают вручную, добавляя строки LoadModule в httpd.conf или в подключаемые файлы. Список доступных модулей лежит в /etc/httpd/modules/. Проверить, какие модули загружены сейчас, можно командой:

httpd -M

После изменения LoadModule используйте проверку и перечитывание конфигурации именно для службы httpd:

httpd -t
systemctl reload httpd

Частая ошибка - включить модуль, но забыть перечитать конфигурацию Apache. Симптом: директива из модуля не распознаётся, configtest ругается на неизвестную команду. Решение: после a2enmod выполните apachectl configtest и systemctl reload apache2; в RHEL проверьте LoadModule и используйте httpd -t с systemctl reload httpd.

Виртуальные хосты: размещаем несколько сайтов на одном сервере

Виртуальные хосты - механизм, позволяющий одному экземпляру Apache обслуживать десятки сайтов с разными доменами и корневыми директориями. Apache различает хосты по полю Host в HTTP-заголовке. На одном IP и порту 80 можно держать сколько угодно сайтов, если клиент отправляет правильный заголовок.

Debian/Ubuntu: sites-available и sites-enabled

Конфигурации виртуальных хостов в Debian лежат в /etc/apache2/sites-available/. Включённые хосты - симлинки в /etc/apache2/sites-enabled/. Активация выполняется утилитами:

a2ensite example.com.conf   # включить хост
a2dissite example.com.conf  # отключить хост

RHEL/CentOS/AlmaLinux: файлы в conf.d

В RHEL виртуальные хосты описывают в /etc/httpd/conf.d/. Файлы с расширением .conf из этой директории подхватываются автоматически, поэтому отдельная команда вроде a2ensite не используется.

Пошаговая настройка виртуального хоста для домена example.com

Сначала создайте корневую директорию сайта. Для обычного статического сайта Apache нужен доступ на чтение файлов и выполнение для директорий, но не обязательное владение всем DocumentRoot. Поэтому не назначайте безусловно chown -R www-data:www-data на весь сайт:

mkdir -p /var/www/example.com/public_html
chown root:root /var/www/example.com
find /var/www/example.com -type d -exec chmod 755 {} \;
find /var/www/example.com -type f -exec chmod 644 {} \;

В Debian/Ubuntu Apache обычно работает от пользователя www-data, а в RHEL - от пользователя apache. Если приложению нужна запись, выдайте её только конкретному каталогу, например каталогу загрузок или кэша. Для остальных файлов сохраняйте права только на чтение.

Создайте файл конфигурации /etc/apache2/sites-available/example.com.conf:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Директива ServerName задаёт основной домен. ServerAlias - дополнительные имена, по которым сайт будет доступен. DocumentRoot указывает на директорию с файлами. ErrorLog и CustomLog направляют логи в отдельные файлы - это критично для диагностики, когда на сервере десятки сайтов. Блок Directory определяет права: Options -Indexes запрещает листинг директорий, AllowOverride All разрешает .htaccess. Если .htaccess не нужен, безопаснее использовать AllowOverride None.

Включите хост и перезагрузите Apache в Debian/Ubuntu:

a2ensite example.com.conf
apachectl configtest
systemctl reload apache2

Конфигурация виртуального хоста в RHEL-системах

В RHEL/CentOS/AlmaLinux сохраните аналогичный блок в файле /etc/httpd/conf.d/example.com.conf. В нём нужно заменить путь к логам на путь RHEL:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    ErrorLog /var/log/httpd/example.com_error.log
    CustomLog /var/log/httpd/example.com_access.log combined

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Проверьте конфигурацию и перечитайте её:

httpd -t
systemctl reload httpd

Проверка виртуального хоста через curl и apachectl -S

До включения нового хоста проверьте ответ локального Apache, запрос с нужным Host и список активных VirtualHost. После включения повторите те же команды. Запрос с заголовком Host должен начать попадать в конфигурацию example.com, а в выводе apachectl -S должен появиться ожидаемый файл:

curl -I http://127.0.0.1
curl -H 'Host: example.com' -I http://127.0.0.1
apachectl -S

В RHEL-подобных системах последнюю команду можно заменить на httpd -S. Если DNS ещё не настроен, проверка через локальный IP с заголовком Host позволяет отделить проблему Apache от проблемы DNS.

HTTPS для виртуального хоста: Certbot и проверка редиректа

Перед выпуском сертификата домены example.com и www.example.com должны указывать на сервер, а входящие соединения на TCP-порты 80 и 443 должны быть разрешены. Для Debian/Ubuntu установите Certbot и плагин Apache:

sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
sudo certbot renew --dry-run

В RHEL/CentOS/AlmaLinux используйте пакеты из подключённого репозитория дистрибутива или принятого в организации репозитория:

sudo dnf install certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
sudo certbot renew --dry-run

Во время работы Certbot выберите перенаправление HTTP на HTTPS, если оно требуется для этого сайта. После выпуска сертификата проверьте оба направления:

curl -I http://example.com
curl -I https://example.com

Для ручной конфигурации HTTPS понадобится отдельный VirtualHost на порту 443 с директивами SSLEngine, SSLCertificateFile и SSLCertificateKeyFile. Модуль mod_ssl должен быть включён. Инструкция по установке SSL/TLS-сертификата на веб-сервер содержит дополнительные варианты для Apache. Готовые команды для настройки виртуальных хостов Apache в Ubuntu 2026 с автоматическим HTTPS через Let's Encrypt собраны в отдельном материале.

Типичные ошибки при создании виртуальных хостов и их решение

Ошибка «Forbidden 403» означает, что Apache не может отдать DocumentRoot. Причины: неверные права на одну из директорий, запрещающие правила в блоке Directory или контекст SELinux. Проверьте права через ls -la /var/www/example.com и не выдавайте веб-пользователю права на запись без необходимости.

chmod 755 /var/www/example.com/public_html
ls -la /var/www/example.com/public_html

Ошибка «Not Found 404» означает, что запрошенный URL не существует. Проверьте, лежит ли индексный файл в DocumentRoot и совпадает ли имя файла с директивой DirectoryIndex (по умолчанию index.html).

Предупреждение о дублировании ServerName означает, что два виртуальных хоста слушают один IP:порт с одинаковым ServerName. Apache использует первый подходящий, остальные игнорирует. Посмотреть все активные хосты и их порядок обработки:

apachectl -S

Вывод покажет дерево виртуальных хостов и пометит, какой из них считается default server. Пошаговая диагностика ошибок веб-сервера 403, 404, 500 и проблем с виртуальными хостами разбирает эти и другие кейсы подробно.

Оптимизация Apache под высокие нагрузки: MPM и кэширование

Производительность Apache определяет MPM - Multi-Processing Module. Это слой, отвечающий за приём клиентских соединений и распределение запросов по процессам или потокам. Выбор MPM влияет на потребление памяти и способность держать одновременные соединения.

Выбор MPM: prefork, worker или event - что лучше в 2026 году

Prefork - каждый запрос обрабатывается отдельным процессом. Плюс: совместимость с модулями, не поддерживающими потоки (например, старые версии mod_php). Минус: высокое потребление памяти. Каждый дочерний процесс занимает 20-50 МБ ОЗУ. На сервере с сотней одновременных соединений prefork съест гигабайты памяти.

Worker - использует потоки внутри процессов. Один процесс обслуживает несколько соединений. Потребление памяти ниже, но потокобезопасность модулей должна быть гарантирована.

Event - развитие worker с асинхронной обработкой keep-alive соединений. Поток не блокируется на ожидании данных от клиента, а переключается на другие запросы. Начиная с Apache 2.4 event стабилен, поддерживает HTTP/2 через mod_http2 и рекомендуется как MPM по умолчанию для большинства сценариев.

Важно: переход на event требует отказаться от mod_php или перевести PHP на PHP-FPM. Потоконебезопасный mod_php не следует использовать с event. Если приложение жёстко зависит от mod_php, оставьте prefork до завершения миграции.

Переключить MPM в Debian можно командой:

a2dismod mpm_prefork
a2enmod mpm_event
apachectl configtest
systemctl restart apache2

В RHEL выбор MPM обычно задаётся в /etc/httpd/conf.modules.d/00-mpm.conf: оставьте активной строку LoadModule для event и отключите строку LoadModule для prefork. После изменения используйте перезапуск службы:

httpd -t
systemctl restart httpd

Проверить текущий MPM в Debian/Ubuntu можно командой:

apachectl -V | grep MPM

В RHEL используйте httpd -V | grep MPM или проверьте список модулей командой httpd -M.

Тонкая настройка параметров MPM для максимальной производительности

Ключевой параметр - MaxRequestWorkers (в старых версиях MaxClients). Он задаёт максимальное количество одновременно обрабатываемых запросов. Для event MPM нельзя универсально делить доступную память на условные 15 МБ: один процесс обслуживает несколько потоков, а фактическое потребление зависит от модулей, PHP-FPM, TLS, размера запросов и приложения.

Ориентировочная модель расчёта должна использовать измерения под ожидаемой нагрузкой:

MaxRequestWorkers ≈ (ОЗУ - ОС - другие сервисы - резерв) / измеренная стоимость конкурентной нагрузки

Сначала измерьте фактическое потребление Apache и зависимых сервисов на тестовой или контролируемой нагрузке. Оставьте запас под ОС, TLS, журналирование и другие сервисы, затем проверьте результат нагрузочным тестом. Значение MaxRequestWorkers должно учитывать ThreadsPerChild и доступное количество дочерних процессов. Пример ниже нельзя переносить на другой сервер без измерений:

<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads          25
    MaxSpareThreads          75
    ThreadLimit              64
    ThreadsPerChild          25
    MaxRequestWorkers        200
    MaxConnectionsPerChild   10000
</IfModule>

StartServers - число дочерних процессов при старте. MinSpareThreads и MaxSpareThreads - диапазон простаивающих потоков, которые держатся наготове. ThreadsPerChild - потоки на один процесс. MaxConnectionsPerChild - сколько запросов обработает процесс перед завершением; помогает бороться с утечками памяти.

KeepAlive позволяет держать TCP-соединение открытым для нескольких запросов от одного клиента. Это ускоряет загрузку страниц с множеством ресурсов. Настройка:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

KeepAliveTimeout 5 секунд - компромисс между скоростью для клиента и неблокировкой потоков. Для высоконагруженных API его обычно снижают до 2 секунд после проверки метрик.

Кэширование включается модулями mod_cache и mod_cache_disk. Оно сохраняет ответы сервера и отдаёт их без повторной генерации. Базовая настройка:

a2enmod cache cache_disk

В конфигурации виртуального хоста:

CacheRoot /var/cache/apache2/mod_cache_disk
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1

Не включайте кэширование без проверки заголовков Cache-Control и поведения приложения. Не следует кэшировать персональные ответы, страницы авторизованных пользователей, ответы с private, no-store или зависящие от Cookie, если правила кэша не исключают их явно. После включения проверьте содержимое ответа и отсутствие утечки данных между пользователями.

Для мониторинга текущего состояния Apache включите mod_status. Он показывает число занятых и простаивающих потоков, общее количество запросов, нагрузку CPU. Профессиональная конфигурация Apache2 с готовыми конфигурациями для продакшена, включая mod_deflate и mod_headers, описана в отдельном руководстве.

Логирование и мониторинг: как не пропустить проблемы

Логи Apache - основной источник информации о состоянии сервера. Access.log фиксирует каждый запрос: IP клиента, время, метод, URL, код ответа, размер ответа. Error.log собирает диагностические сообщения, предупреждения и ошибки. Без настроенного логирования поиск причин сбоя превращается в гадание.

В Debian/Ubuntu стандартные файлы обычно находятся в /var/log/apache2/, а в RHEL/CentOS/AlmaLinux - в /var/log/httpd/. Для виртуальных хостов лучше задавать отдельные ErrorLog и CustomLog, как в примерах выше.

Директива CustomLog задаёт путь и формат. Стандартные форматы:

  • common - IP, время, метод, URL, код ответа, размер.
  • combined - common плюс Referer и User-Agent. Рекомендован для веб-сайтов, потому что даёт контекст: откуда пришёл пользователь и какой браузер использовал.

Пример настройки для виртуального хоста:

ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined

LogLevel управляет детализацией. Уровни от минимума к максимуму: emerg, alert, crit, error, warn, notice, info, debug. В production ставьте LogLevel warn, чтобы не забивать диск. Для отладки конкретного модуля можно точечно повысить уровень:

LogLevel debug mod_rewrite.c

Настройка детального логирования для отладки

Когда ошибка плавающая и не воспроизводится стабильно, временно включите debug для проблемного модуля. Например, для диагностики проблем с SSL-рукопожатием:

LogLevel debug ssl_module

Можно фильтровать логи по IP клиента, чтобы не захламлять файл чужими запросами во время отладки. Для этого используйте модуль mod_log_config с условным логированием:

SetEnvIf Remote_Addr "192\.168\.1\.100" debug_request
CustomLog ${APACHE_LOG_DIR}/debug.log combined env=debug_request

После завершения отладки верните LogLevel warn. Debug на продакшене создаёт гигабайты логов за часы и ощутимо замедляет сервер.

Ротация логов настраивается через logrotate. В Debian/Ubuntu конфигурация /etc/logrotate.d/apache2 обычно уже присутствует. В RHEL-подобных системах проверяйте конфигурацию для httpd и пути в /var/log/httpd/. Убедитесь, что кастомные логи виртуальных хостов также попадают под ротацию.

Для мониторинга в реальном времени включите mod_status. Добавьте в конфигурацию:

<Location /server-status>
    SetHandler server-status
    Require ip 127.0.0.1 ::1
</Location>

После перезагрузки Apache страница http://localhost/server-status покажет uptime, нагрузку, список активных соединений и их состояние. Ограничение Require ip оставляет endpoint доступным только локально. Готовые команды grep и awk для анализа логов Apache рассмотрены в отдельной статье.

Устранение типичных ошибок: быстрый чек-лист

Ниже приведён список наиболее частых ошибок Apache. Для каждой указаны команда проверки, вероятная причина и первое исправление.

СимптомКоманда проверкиВероятная причинаИсправление
Forbidden 403ls -ld /var/www/example.com /var/www/example.com/public_htmlНет права на чтение файлов или проход по директории; запрещён доступ в Directory; неверный SELinux-контекст.Проверить права, Require all granted и контекст; не выдавать запись всему DocumentRoot.
Not Found 404curl -I http://example.com/pathНеверный DocumentRoot, отсутствует файл или запрос изменён mod_rewrite.Проверить путь, DirectoryIndex, URL и правила rewrite.
HTTP 500tail -n 50 /var/log/apache2/error.log или tail -n 50 /var/log/httpd/error_logОшибка приложения, PHP, .htaccess или директивы модуля.Изучить ErrorLog, проверить apachectl configtest и временно отключить последнее изменение.
Could not bind to addressss -tulpn | grep -E ':(80|443)\b'Порт занят другим процессом или дублируется Listen.Найти процесс, проверить Listen и остановить конфликтующую службу.
SSLcurl -vkI https://example.com и journalctl -u apache2 -n 50Не загружен mod_ssl, неверен путь к сертификату или ключ не соответствует сертификату.Проверить SSLEngine, SSLCertificateFile, SSLCertificateKeyFile и ErrorLog.
Проблема с DNSdig +short example.com и curl -H 'Host: example.com' -I http://127.0.0.1A или AAAA запись указывает не на этот сервер, либо DNS ещё не обновился.Исправить записи DNS и повторить локальную проверку через Host.

Команды диагностики для Debian/Ubuntu и RHEL

Используйте команды службы в соответствии с дистрибутивом. Не смешивайте apache2 и httpd в одной последовательности:

# Debian/Ubuntu
apachectl configtest
apachectl -S
systemctl status apache2 --no-pager
journalctl -u apache2 -n 50 --no-pager
# RHEL/CentOS/AlmaLinux
httpd -t
httpd -S
systemctl status httpd --no-pager
journalctl -u httpd -n 50 --no-pager

«Could not bind to address» - порт занят. Другой процесс уже слушает порт 80 или 443. Проверьте, кто именно:

ss -tulpn | grep -E ':(80|443)\b'

Часто это второй экземпляр Apache, запущенный по ошибке, или Nginx. Проверьте также директивы Listen, остановите конфликтующий сервис или измените порт только после проверки схемы публикации.

«Permission denied» - отказ в доступе к файлу или директории. Проверьте владельца и права:

ls -la /var/www/example.com
namei -l /var/www/example.com/public_html

Пользователь, от которого работает Apache (www-data в Debian, apache в RHEL), должен иметь право на чтение файлов и выполнение для директорий. Исправляйте только необходимые права через chmod и chown. В системах с SELinux дополнительно проверьте контекст безопасности: ls -Z /var/www/ и при необходимости восстановите restorecon -Rv /var/www/.

«File does not exist» - файл не найден. Запрошенный URL не соответствует физическому файлу на диске. Проверьте DocumentRoot и наличие индексного файла. Убедитесь, что mod_rewrite не перенаправляет запрос в несуществующую локацию. Ищите точную строку запроса в Access.log и сопутствующую запись в Error.log.

Синтаксическая ошибка в конфигурации. Пропущена закрывающая кавычка, забыт закрывающий тег Directory, опечатка в директиве. Первое действие:

apachectl configtest

Утилита укажет файл и строку с ошибкой. В RHEL используйте httpd -t. Вторая по частоте причина - директива из невключённого модуля. Проверьте apachectl -M или httpd -M и включите нужный модуль.

Журнал systemd. Если Apache не стартует и configtest не показывает ошибки, смотрите логи systemd. В Debian/Ubuntu:

journalctl -u apache2 --since '10 minutes ago'

В RHEL/CentOS/AlmaLinux:

journalctl -u httpd --since '10 minutes ago'

Здесь будут сообщения о проблемах на уровне инициализации: нехватке памяти, невозможности открыть порт, ошибках загрузки модулей или сертификатов.

Apache стартует, но сайт не открывается. Проверьте цепочку: слушает ли Apache порт (ss -tulpn), пропускает ли файрвол (iptables -L -n, ufw status или firewall-cmd --list-all), резолвится ли домен в IP сервера (dig example.com). Часто проблема оказывается на уровне DNS или сетевых правил, а не в конфигурации Apache.

Этот чек-лист покрывает наиболее частые инциденты. Диагностика ошибок 403, 404, 500 и проблем с виртуальными хостами разобрана с примерами из реальных логов в отдельном материале.

FAQ по настройке Apache

Что выбрать: event или prefork?

Для большинства современных сценариев выбирайте event, если модули потокобезопасны, а PHP работает через PHP-FPM. Если приложение использует mod_php и переход на PHP-FPM пока невозможен, оставайтесь на prefork.

Чем отличаются reload и restart?

reload перечитывает конфигурацию без полного прекращения работы уже установленных соединений и подходит для большинства изменений VirtualHost, логов и директив. restart полностью перезапускает службу и нужен, например, при смене MPM или некоторых модулей.

Где искать логи Apache?

В Debian/Ubuntu стандартный каталог - /var/log/apache2/, в RHEL/CentOS/AlmaLinux - /var/log/httpd/. Точный путь для сайта задают директивы ErrorLog и CustomLog в его VirtualHost.

Как проверить активный VirtualHost?

В Debian/Ubuntu выполните apachectl -S, а в RHEL-подобных системах - httpd -S. Для проверки конкретного домена без DNS используйте curl -H 'Host: example.com' -I http://127.0.0.1.

Поделиться:
Сохранить гайд? В закладки браузера