Apache无法在Vagrant上启动

Rus*_*Bes 13 apache ubuntu virtualbox apache2 vagrant

在我的Vagrant环境中,我有一个带有LAMP默认设置的来宾Ubuntu Virtualbox.

我的源代码在主机上与我的Vagrantfile在同一个文件夹中.所以在客户端Ubuntu上,我可以/vagrant像这样访问已安装目录中的文件

/vagrant
  /mysite
    /index.php
  /Vagrantfile
Run Code Online (Sandbox Code Playgroud)

现在在我的Apache配置中添加一行

Alias /mysite /vagrant/mysite
Run Code Online (Sandbox Code Playgroud)

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

问题是,当我重新加载Virtualbox时,vagrant reload它会安装/vagrant文件夹之前启动Apache服务.所以Apache找不到别名的dir并且无法启动.我必须手动启动它

我的问题是 - 有没有办法延迟Apache启动,以便它在安装后启动?

更新:作为一种变通方法,我添加脚本描述启动启动后apache的30秒的crontab 这里.但我想知道是否有更好的解决方案.

Zau*_*sch 24

虽然暴发户可能是一个有效的选择,但我有几个问题与流浪汉一起使用.我不得不运行几个需要作为特权用户运行的任务,我没有设法与新手一起工作.

从版本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 Code Online (Sandbox Code Playgroud)

请注意run: "always",这将迫使流浪者总是运行供应商,显然它与厨师或木偶等任何其他供应系统一样好.

  • 这应该是公认的答案.`config.vm.provision"shell",内联:"systemctl restart httpd",运行:"always"`在Cent OS 7基础盒上为我工作. (4认同)

tma*_*lai 3

如果安装了 upstart(如 Ubuntu),Vagrant 会发出“vagrant-mounted”事件。请参阅https://serverfault.com/a/568033/179583了解想法。在您的脚本中,您可以(重新)启动 Apache 服务器。

顺便说一句,我有一种感觉,较新的 Apache 版本只是发出警告,但即使文档根不存在,仍然会启动。与 Nginx 相同。