Apache无法启动Vagrant

在我的Vagrant环境中,我有一个带默认设置LAMP的游客Ubuntu Virtualbox。

我的主机上的源代码与我的stream浪文件在同一个文件夹中。 所以在客户端Ubuntu上,我可以像这样访问挂载/vagrant目录中的文件

 /vagrant /mysite /index.php /Vagrantfile 

现在在我的Apacheconfiguration中添加一行

 Alias /mysite /vagrant/mysite 

重新加载configuration和重新启动Apache后,我可以去localhost:8558/mysite/index.php ,它的工作原理。

问题是,当我重新加载与vagrant reload加载的Virtualbox它启动Apache服务之前挂载/vagrant文件夹。 所以Apache无法find别名的目录并无法启动。 我必须手动启动它

我的问题是 – 有没有办法延缓Apache的启动,以便在启动后启动?

更新:作为一种解决方法,我添加脚本到启动后30秒启动Apache的crontab,如此处所述。 但我想知道是否有更好的解决scheme。

如果安装了暴发户(如Ubuntu),Vagrant会发出“流浪骑士”事件。 见https://serverfault.com/a/568033/179583得到的想法。 在你的脚本中,你可以(重新)启动Apache服务器。

顺便说一句,我有一种感觉,新版本的Apache版本只是警告,但即使doc根目录不存在,仍然开始。 与nginx一样。

而新贵可能是一个有效的选择,我有几个问题与流浪使用它。 我不得不运行一些需要以特权用户身份运行的任务,而我并没有设法与新贵合作。

从版本1.6.0(2014年5月6日)开始,vagrant提供了每次运行特定配置程序的选项,所以在启动暂停的虚拟机之后,

在您的Vagrantfile ,添加:

 # a file, eg after-boot.sh config.vm.provision "shell", path: "after-boot.sh", run: "always" # or just inline config.vm.provision "shell", inline: "service apache2 restart", run: "always" 

注意run: "always" ,这将迫使流浪者总是运行供应商,显然它适用于任何其他供应系统,如厨师或木偶。

我想补充一点Zauberfisch的答案( Apache无法启动流浪者 )

需要发生的是这个命令需要作为超级用户AKA'Sudo'运行,所以这是需要的命令:

 `config.vm.provision "shell", inline: "sudo service apache2 restart", run: "always"` 

之所以没有使用sudo没有为你工作,似乎是Vagrant试图在PATH不使用/usr/sbin情况下运行命令。 对我来说,这也是一样的:

 `config.vm.provision "shell", inline: "/usr/sbin/service apache2 restart", run: "always"`