[英]after installing nginx with vagrant/chef-solo, vagrant reload is required for it to run
我正在使用以下Vagrantfile安装nginx。 我无所事事后,对http://192.168.33.14/
的请求会从nginx返回404。 运行“ vagrant reload”后,向http://192.168.33.14/
发出请求,返回预期的代理结果。
我希望代理在无所事事后能按预期工作。 我在运行nginx食谱后正在写配置更改,因此我怀疑我需要在写入配置文件后重新加载nginx。 我尝试了运行sudo /usr/sbin/nginx -s reload
的Shell Provisioning,但由于nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
失败nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
。
Vagrant.configure("2") do |config|
config.vm.box = "opscode-ubuntu-14.04"
config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_ubuntu-14.04_chef-provisionerless.box"
config.omnibus.chef_version = :latest
config.vm.provision "shell", inline: "echo 'set nocp' > /home/vagrant/.vimrc"
config.vm.define "nginx" do |nginx|
nginx.vm.network "private_network", ip: "192.168.33.14"
nginx.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "nginx"
chef.json = {
:nginx => {
dir: '/etc/nginx' # this is the default value, sample only
}
}
end
nginx.vm.provision "shell",
inline: "echo -e $1 > /etc/nginx/conf.d/nginx.conf",
args: [<<-EOS
server {
listen *:80;
location ~ ^/ {
proxy_pass http://192.168.33.11:8080;
}
}
EOS
]
end
我也在使用Ubuntu 14.04作为基本框时遇到了同样的问题。
这篇文章对我有帮助: http : //www.rollnorocks.com/2014/05/fear-and-loathing-with-chef-and-nginx/
简而言之,初始安装的PID位置与配置中设置的位置不同。 主厨配方设置了配置PID(默认为/var/run/nginx.pid),但初始安装使用默认的Ubuntu设置(/run/nginx.pid)。
解决此问题的快速方法是将此行添加到属性文件中:override ['nginx'] ['pid'] ='/run/nginx.pid'
这意味着厨师PID位置设置为与Ubuntu在初始安装中使用的位置相同。
更好的解决方法是改进配方,以便初始安装使用厨师设置的PID-我找不到添加它的位置,所以现在我正在使用上面的快速修复方法。
找到了另一个解决方法,将install_method设置为source:
vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "nginx"
chef.json = {
:nginx => {
install_method: "source"
}
}
end
我在这里找到了解决方法: https : //github.com/miketheman/nginx/pull/223
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.