У меня возникли проблемы с настройкой 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