Назад | Перейти на главную страницу

Служба httpd не запускается при загрузке под CentOS 6

У меня возникли проблемы с настройкой CentOS 6 Vagrant для запуска службы Apache при загрузке. Я пробовал использовать chkconfig, но ОС, кажется, просто игнорирует его.

Когда я бегу sudo chkconfig --list httpd, Я получил

httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

Я предполагаю, что это результат выполнения команд

sudo chkconfig httpd on
sudo chkconfig --levels 235 httpd on
sudo chkconfig --levels 345 httpd on

в разных попытках правильно настроить эту вещь в моем сценарии обеспечения. Я не использую Puppet или Chef, да и не очень хочу. У меня это работало на другой хост-машине, но на втором хосте, похоже, по какой-то причине перестало работать.

Запуск службы вручную с помощью sudo service httpd start работает нормально, но как только я vagrant halt && vagrant up или vagrant reload служба не запустится при восстановлении виртуальной машины.

К сожалению, служба mysqld, которую я настроил точно так же, отлично запускается при запуске.

Мой / var / log / httpd / error_log говорит следующее:

[Thu Apr 17 09:31:09 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Thu Apr 17 09:31:09 2014] [notice] Digest: generating secret for digest authentication ...
[Thu Apr 17 09:31:09 2014] [notice] Digest: done
[Thu Apr 17 09:31:09 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.5.11 configured -- resuming normal operations
[Thu Apr 17 09:34:45 2014] [notice] caught SIGTERM, shutting down

Проблема заключалась в том, что виртуальная машина пыталась запустить службу Apache до того, как Vagrant смонтировал общие папки, а httpd DocumentRoot указывал на несуществующий каталог. Я выполнил эти инструкции, чтобы настроить событие udev, ожидающее, пока произойдет монтирование, прежде чем пытаться запустить httpd.

http://razius.com/articles/launching-services-after-vagrant-mount/

Если httpd идет в chkconfig и синтаксис правильный, вероятно, корень вашего документа Apache указывает на синхронизируемую папку, которая недоступна во время запуска службы.

Обходной путь - предоставить сценарий оболочки в ваш Vagrantfile который будет проверять службу и запускаться при необходимости каждый раз, когда vagrant команда вызывается, например

config.vm.provision :shell, run: "always", :inline => "service httpd status || service httpd start"

или:

config.vm.provision :shell, run: "always", path: "scripts/check_vm_services.sh"

Смотрите также: Apache не запускается после перезагрузки Vagrant в SO