2014-05-09 34 views
0

我正在使用以下Vagrantfile来安装nginx。在我跑过来之后,http://192.168.33.14/的请求从nginx返回404。在我运行'vagrant reload'之后,向http://192.168.33.14/发出请求返回预期的代理结果。用vagrant/chef-solo安装nginx后,需要使用vagrant reload来运行

我希望代理能够像流浪者一样按预期工作。我在运行nginx食谱后正在编写配置更改,因此我怀疑在编写配置文件后需要重新加载nginx。我尝试了一个运行sudo /usr/sbin/nginx -s reload的shell提供程序,该操作失败,出现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 
+0

这个问题似乎属于对堆栈交换网络中的其他网站,因为它不是关于节目。也许[超级用户](https://www.superuser.com/)或[服务器故障](http://serverfault.com/)。 – jww

+0

我认为你应该尝试这本食谱http://community.opscode.com/cookbooks/nginx和当启动或停止nginx服务,尝试命令为:服务nginx开始 – Makio

回答

1

我遇到了同样的问题,同样使用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)。

解决此问题是增加这一行的属性文件的一个快速的方法: 倍率[“nginx的”] [“PID”] =“/run/nginx.pid”

这意味着厨师PID位置设置为Ubuntu在初始安装时使用的位置。

更好的解决方法是改善配方,以便初始安装使用由厨师设置的PID - 我无法找到要添加的位置,因此现在我使用上面的快速修复。

+0

谢谢,我忘了我已经创建了一个SO线程。 –

0

另一个解决方法发现,设置INSTALL_METHOD源:

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

相关问题