22.10. Запуск Apache при загрузке системы
Проблема
Вручную вводить команду apachectl start
при каждом запуске системы несложно, но для стабильной работы сервера предпочтительнее, чтобы Apache запускался автоматически при загрузке. Если Apache был установлен по исходным текстам, то возникает вопрос: где находится сценарий init
?
Решение
Сценарий apachectl
выполняет функции init
-скрипта для Apache. Вы можете скопировать его в /etc/init.d
или создать мягкую ссылку на него в этом каталоге. Затем настройте его запуск на нужных уровнях выполнения, чтобы Apache стартовал автоматически. Настройка уровней выполнения подробно рассмотрена в главе 7 - 7.7. Управление уровнями выполнения в Red Hat.
Пошаговое руководство по настройке автозапуска Apache
- Перейдите в каталог, где установлен
apachectl
, например/usr/local/apache2/bin/
. - Скопируйте или создайте символическую ссылку для
apachectl
в/etc/init.d/
:
# ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
- Добавьте сценарий в автозагрузку с помощью команды
update-rc.d
(для Debian и производных систем):
# update-rc.d apache defaults
Для дистрибутивов, использующих chkconfig
(например, CentOS), команда будет следующей:
# chkconfig --add apache
# chkconfig apache on
Комментарий
В большинстве современных дистрибутивов Linux с поддержкой systemd
рекомендуется использовать юнит-файл для управления автозапуском Apache. Создайте юнит-файл apache2.service
(или httpd.service
в CentOS) в каталоге /etc/systemd/system/
с следующим содержимым:
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
ExecStart=/usr/local/apache2/bin/apachectl start
ExecStop=/usr/local/apache2/bin/apachectl stop
ExecReload=/usr/local/apache2/bin/apachectl graceful
Type=forking
[Install]
WantedBy=multi-user.target
Затем выполните команды для активации и запуска Apache:
# systemctl enable apache2
# systemctl start apache2
Эти команды обеспечат автоматический запуск Apache при загрузке системы и гибкое управление его работой через systemctl
.
Пользователи Debian могут также использовать шаблон /etc/init.d/skeleton
для создания кастомного стартового скрипта для любой службы или демона. Это особенно полезно для служб, которые устанавливаются из исходных текстов.
Полезные советы и рекомендации
- Проверьте статус Apache после перезагрузки: После настройки автозапуска полезно убедиться, что Apache корректно стартует при загрузке. Выполните команду
systemctl status apache2
(илиhttpd
) для проверки состояния службы. - Используйте параметр graceful: При внесении изменений в конфигурацию Apache предпочтительно использовать команду
apachectl graceful
для мягкой перезагрузки, которая позволяет избежать прерывания текущих соединений. - Настройка уровней выполнения: В некоторых случаях может потребоваться ручная настройка уровней выполнения для более точного управления запуском служб. Например, для систем, не поддерживающих
systemd
, можно настроить уровни черезupdate-rc.d
илиchkconfig
, чтобы управлять запуском Apache на определённых уровнях.
См. также