我正试图用Vagrant建立一个简单的开发环境.基础盒(我创建的)具有带Apache和MySQL的CentOS 6.5 64位.
问题是,重新加载VM(vagrant reload
或vagrant halt
然后up
)后,httpd服务不会在启动时启动.
只有当我运行一个改变的配置脚本DocumentRoot
并且仅在我第一次停止机器之后才会出现问题.
httpd在chkconfig
2级,3级,4级和5级上
没有写入error_log(on /etc/httpd/logs
)的错误.
如果我ssh到机器并手动启动服务,它开始没有问题.
我和其他CentOS盒子有同样的问题(就像chef/centos-6.5
vagrantcloud.com上提供的那样),这就是我自己创建一个盒子的原因.
其他服务,如mysql,启动正常,所以这是apache特有的问题.
httpd总是在第一次启动时启动,即使使用配置脚本(如在vagrant destroy之后)
httpd总是在我不运行配置脚本时启动(但我需要它来设置DocumentRoot)
httpd在第一次暂停后没有启动,配置脚本与DocumentRoot混淆(不确定是否存在问题).
这是我的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 = "/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
我试图创建与所有者/组无业游民文件夹root
和apache
.两者都有同样的问题(与所有者一样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文件夹.虽然我仍然不明白为什么没有抛出错误.
我通过创建一个Upstart脚本(在文件夹上/etc/init
)来解决它,以便在vagrant安装其文件夹后启动服务(它发出一个名为的事件vagrant-mounted
)
这是我使用的脚本(使用文件名,httpd.conf
但我不认为这是必要的).
# start apache on vagrant mounted start on vagrant-mounted exec sudo service httpd start
Upstart可以做更多,但这解决了它.