我正在尝试使用Vagrant建立一个简单的开发环境。基本框(我创建的)具有带有Apache和MySQL的CentOS 6.5 64位。
问题是,重新加载VM(vagrant reload
或vagrant halt
之后up
)后,httpd服务无法在启动时启动。
仅当我运行更改的供应脚本DocumentRoot
并且仅在我第一次停止计算机后才出现此问题。
httpd位于第chkconfig
2、3、4和5级
没有任何错误写入error_log(在上/etc/httpd/logs
)。
如果我进入机器并手动启动服务,则启动不会有问题。
我在其他CentOS机器上也遇到了同样的问题(例如chef/centos-6.5
vagrantcloud.com上的机器),这就是我自己创建一个的原因。
其他服务(例如mysql)也可以正常启动,因此这是Apache特有的问题。
这是我的Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos64_lamp"
config.vm.box_url = "<url>/centos64_lamp.box"
config.vm.hostname = "machine.dev"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.synced_folder ".", "/vagrant", owner: "root", group: "root"
config.vm.provision :shell, :path => "vagrant_files/bootstrap.sh"
end
我试图用owner / grouproot
和创建vagrant文件夹apache
。两者都存在相同的问题(与owner一样vagrant
)。
这些是我尝试过的配置脚本(bootstrap.sh)。我唯一希望他们做的就是将DocumentRoot更改为vagrant文件夹。两者都不起作用。
尝试1
#!/usr/bin/env bash
sudo rm -rf /var/www/html
sudo ln -fs /vagrant/app/webroot /var/www/html
试试2
#!/usr/bin/env bash
sudo cp /vagrant/vagrant_files/httpd.conf /etc/httpd/conf
sudo service httpd restart
第二次尝试的httpd.conf等于默认值,除了DocumentRoot路径。第二种选择允许我vagrant up --provision
强制重启服务,但这应该是不必要的步骤。
我还能尝试解决什么?谢谢你。
显然,此问题是由于Apache尝试启动时未装入vagrant文件夹而引起的。尽管我仍然不明白为什么不引发任何错误。
我通过/etc/init
在流浪汉挂载其文件夹(发出名为的事件vagrant-mounted
)后创建Upstart脚本(在文件夹上)以启动服务来解决该问题
这是我使用的脚本(带有文件名,httpd.conf
但我认为这不是必需的)。
# start apache on vagrant mounted
start on vagrant-mounted
exec sudo service httpd start
暴发户可以做更多的事情,但这可以解决。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句