После правки конфигурации Apache, установки модуля или нового сертификата веб-сервер нужно перечитать настройки. Сделать это можно двумя способами: полным перезапуском или мягкой перезагрузкой конфигурации. Команды зависят от дистрибутива, а главное отличие - в имени службы.
apache2 или httpd
- Debian, Ubuntu и производные - служба называется
apache2. - RHEL, CentOS, Rocky Linux, AlmaLinux, Fedora - служба называется
httpd.
Если не уверены, проверьте:
systemctl list-units --type=service | grep -E 'apache2|httpd'
Все команды ниже требуют прав root, поэтому выполняются через sudo.
Команды systemctl
Почти все современные дистрибутивы используют systemd, и управление Apache сводится к systemctl.
Debian и Ubuntu:
sudo systemctl restart apache2 # полный перезапуск
sudo systemctl reload apache2 # перечитать конфигурацию без остановки
sudo systemctl start apache2 # запустить
sudo systemctl stop apache2 # остановить
sudo systemctl status apache2 # состояние и последние строки лога
RHEL, Fedora и родственные системы - те же команды с httpd:
sudo systemctl restart httpd
sudo systemctl reload httpd
Чтобы Apache запускался при загрузке системы:
sudo systemctl enable apache2
restart или reload

restart останавливает все процессы Apache и запускает их заново. Текущие соединения обрываются, на секунду-другую сайт недоступен.
reload отправляет Apache сигнал на мягкий перезапуск (graceful): главный процесс перечитывает конфигурацию, старые рабочие процессы дообслуживают текущие запросы и завершаются, новые стартуют уже с новыми настройками. Посетители этого не замечают.
Для обычных правок - виртуальные хосты, редиректы, сертификаты, включение модуля через a2enmod - достаточно reload. restart нужен, если Apache завис, после обновления самого пакета или когда reload не помог.
Сначала проверьте конфигурацию
Если в конфигурации ошибка, после restart Apache просто не запустится, и все сайты на сервере лягут. Поэтому перед перезапуском полезно проверить синтаксис:
sudo apachectl configtest
В Debian и Ubuntu то же самое делает sudo apache2ctl -t. Ответ Syntax OK означает, что можно перезапускать. Иначе команда покажет файл и номер строки с ошибкой.
Удобно объединить проверку и перезагрузку, чтобы вторая выполнялась только при успешной первой:
sudo apachectl configtest && sudo systemctl reload apache2
apachectl
У Apache есть собственная утилита управления. Она пригодится там, где нет systemd, или если Apache собран вручную:
sudo apachectl graceful # мягкий перезапуск, как reload
sudo apachectl restart # полный перезапуск
sudo apachectl -k graceful-stop # остановить, дав дообслужить запросы
В системах с systemd лучше пользоваться systemctl: так systemd правильно отслеживает состояние службы.
Старые и другие системы
На старых системах без systemd работают команды через init-скрипт:
sudo service apache2 restart
sudo /etc/init.d/apache2 restart
В Alpine Linux (OpenRC):
sudo rc-service apache2 restart
В FreeBSD служба обычно называется по версии пакета, например apache24:
sudo service apache24 restart
В macOS Apache встроен в систему и управляется через sudo apachectl restart.
Если Apache работает в Docker-контейнере, перезапускают контейнер (docker restart имя) или отправляют мягкий перезапуск внутрь: docker exec имя apachectl graceful.
Если Apache не запустился
Первым делом посмотрите, что пишет systemd и журнал ошибок:
sudo systemctl status apache2
sudo journalctl -u apache2 -n 50
Журнал ошибок самого Apache лежит в /var/log/apache2/error.log (Debian, Ubuntu) или /var/log/httpd/error_log (RHEL и родственные).
Частые причины:
- Address already in use - порт 80 или 443 уже занят другим процессом, например Nginx или второй копией Apache. Найти виновника:
sudo ss -tlnp | grep -E ':80|:443'. - Syntax error - ошибка в конфигурации.
apachectl configtestпокажет, где именно. - SSL-ошибки - неверный путь к сертификату или ключу, ключ не подходит к сертификату, нет прав на чтение файлов.
- AH00558: Could not reliably determine the server's fully qualified domain name - это предупреждение, а не ошибка, Apache работает. Чтобы оно исчезло, добавьте в основную конфигурацию строку
ServerName localhostили реальное имя сервера. - Permission denied при запуске на порту 80 - Apache запущен не от root. Порты ниже 1024 может открыть только привилегированный процесс, поэтому запускайте службу через
sudo systemctl.
О том же для другого популярного веб-сервера - в статье про перезапуск Nginx.





Комментарии
Комментариев пока нет - будьте первым.