22.10. Запуск Apache при загрузке системы

Проблема

Вручную вводить команду apachectl start при каждом запуске системы несложно, но для стабильной работы сервера предпочтительнее, чтобы Apache запускался автоматически при загрузке. Если Apache был установлен по исходным текстам, то возникает вопрос: где находится сценарий init?

Решение

Сценарий apachectl выполняет функции init-скрипта для Apache. Вы можете скопировать его в /etc/init.d или создать мягкую ссылку на него в этом каталоге. Затем настройте его запуск на нужных уровнях выполнения, чтобы Apache стартовал автоматически. Настройка уровней выполнения подробно рассмотрена в главе 7 - 7.7. Управление уровнями выполнения в Red Hat.

Пошаговое руководство по настройке автозапуска Apache

  1. Перейдите в каталог, где установлен apachectl, например /usr/local/apache2/bin/.
  2. Скопируйте или создайте символическую ссылку для apachectl в /etc/init.d/:
# ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
  1. Добавьте сценарий в автозагрузку с помощью команды 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 HTTP Server Documentation