2013-06-16 5 views
9

私はBerkshelf、Chef、Vagrantを使用しており、nginx上で動作するカスタムサイトを設定しようとしています。私はopscode nginxレシピを使用していて、カスタムサイトのレシピを自分で作成しています。私が迷惑メールを実行すると、デフォルトのnginxサイトを無効にしないというエラーが表示されます。私はいくつかの異なる提案を見つけましたが、何も動作していないようです。ChefとVagrantを使用する際のデフォルトのnginxサイトを無効にするにはどうすればいいですか?

エラー:

STDOUT: 
STDERR: nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites- enabled/kyleboon.me:2 
nginx: configuration file /etc/nginx/nginx.conf test failed 

マイBerksfile:

site :opscode 

metadata 
cookbook 'nginx' 

私が定義されての役割/ web.jsonの役割:

{ 
    "name": "web", 
    "chef_type": "role", 
    "json_class": "Chef::Role", 
    "description": "The base role for systems that serve HTTP traffic", 
    "default_attributes": { 
    "nginx": { 
     "default_site_enabled": false 
    }, 
    "app": { 
     "name": "kyleboon.me", 
     "web_dir": "/var/data/www/kyleboon.me" 
    }, 
    "user":{ 
     "name": "vagrant" 
    } 
    }, 
    "run_list": [ 
    "recipe[nginx]", 
    "recipe[kyleboon.me]" 
    ] 
} 

ここでは、/レシピ/デフォルトです私が追加しているnginxサイトのdefault.rb:

nginx_site 'default' do 
    action :disable 
end 

%w(public logs).each do |dir| 
    directory "#{node.app.web_dir}/#{dir}" do 
    owner node.user.name 
    mode "0755" 
    recursive true 
    end 
end 

template "#{node.nginx.dir}/sites-available/kyleboon.me" do 
    source "site.erb" 
    mode 0777 
    owner node.nginx.user 
    group node.nginx.user 
end 

nginx_site "kyleboon.me" 

cookbook_file "#{node.app.web_dir}/public/index.html" do 
    source "index.html" 
    mode 0755 
    owner node.user.name 
end 

(P.S.私は

)私が働いて他のすべてを得れば、私はそれらを更新します、私は物事の多くをいじってきた、ファイルのパーミッションを変更する必要が知っていて、ここに属性/ default.rbです:

override['nginx']['enable_default_site'] = false 

web.jsonのデフォルトサイト、属性、レシピ自体を無効にしようとしていますが、どれもそれらに固執していないことがわかります。

ノードまたはソロノードが定義されていないため、問題があるかどうかはわかりません。これまでの私の迷惑メールの主な問題は、何かを行う方法の無限の可能性でした。 2つの例は同じ方法で実行されているわけではありませんし、私は「最良」または「正しい」方法とは考えられていません。

+0

'node ['nginx'] ['enable_default_site']'を使ってデフォルトのサイトを無効にすると、通常動作します。サイトでシンボリックリンクが残っている可能性があります。シェフによって管理されていないリソース宣言を削除しただけなので削除しません)? – cmur2

+0

私は迷惑をかけてしまったことを確認しました。確かに私は準備するたびに有効になっているサイトでリンクを作成しているようですが、私は二重チェックをします。 –

+0

私はCliff Ersonの答えが正しいと思います。あなたはそれを受け入れたいと思うかもしれませんか? – kioopi

答えて

11

nginxサイトは、nginx_siteとその名前を使用して名前で無効にすることができます。あなたが持っている問題は、nginx_site definitionが、enableパラメータがtrueまたはfalseに設定されているのを実際に探しているためです。

nginx_site 'default' do 
    enable false 
end 

これは、nginxののopscodeの料理のバージョン1.7.1のように私のために働いている:あなたのレシピに追加するデフォルトのサイトを無効にするには

。私は数ヶ月前のようにコミュニティで提供されているバージョンでこれが動作するかどうかは分かりません。

最新バージョンがBerksfileに追加取得するには:

cookbook 'nginx', git: 'https://github.com/opscode-cookbooks/nginx' 

希望に役立ちます:)

+1

でも、2016年でさえ完璧です。 –

5

を、私は同じエラーを取得していますが、私はデフォルトのサイトが有効になっていません。代わりに、それは/etc/nginx/conf.d/default.confから来ています!私は、これは、nginxのの料理は私のボックスにインストールされたRHELのパッケージから来ている

file "/etc/nginx/conf.d/default.conf" do 
    action :delete 
end 

に頼らなければなりませんでした。

+0

これは、nginx.conf.erbの最後には2つの行があり、そのうちの1つにconf.d/*。confが含まれ、もう1つに/ sites-enabled/*が含まれていると思います。私は確かにこれは、サイトが有効になっているシンボリックリンクを作成していなくても、conf.dから表示されますので、デフォルトを無効にすることはできません。 – Bueller

+0

このエラーはNginx〜 .6、https://github.com/miketheman/nginx/blob/master/recipes/commons_dir.rb#L51 – stefancarlton

関連する問題