簡體   English   中英

在使用vagrant / chef-solo安裝nginx之后,需要vagrant重新加載才能運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM