我在configurationCentOS 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
在不同的尝试正确configuration我的供应脚本中的东西。 我不是使用木偶或厨师,也不是我真的想要。 我有这个工作在不同的主机,但在第二个主机,似乎已经停止工作的原因。
手动启动服务与sudo service httpd start工作正常,但只要我做了一个vagrant halt && vagrant up或vagrant reload服务将无法启动时,虚拟机恢复。
令人沮丧的是,我已经用完全相同的方式configuration了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
问题原来是虚拟机试图在Vagrant安装共享文件夹之前启动Apache服务,并且httpd DocumentRoot指向一个不存在的目录。 我按照这些说明设置了一个udev事件,等到挂载发生之后再尝试启动httpd。
http://razius.com/articles/launching-services-after-vagrant-mount/
如果chkconfig httpd处于打开状态并且语法正确,则可能是您的Apache文档根目录指向启动服务时不可用的同步文件夹。
解决方法是在你的Vagrantfile提供shell脚本,它会检查服务,并在每次调用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"
另请参阅: 在Vagrant重新加载后,Apache不会启动