10

私は Berkshelf、Chef、Vagrant を使用しており、nginx で動作するカスタム サイトを構成しようとしています。opscode nginx レシピを使用してから、カスタム サイト用に独自のレシピを作成しています。vagrant up を実行すると、デフォルトの 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

私のバークスファイル:

site :opscode

metadata
cookbook 'nginx'

私が定義した 'roles/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サイトのレシピ/デフォルト/デフォルト.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

(PSファイルのアクセス許可を変更する必要があることはわかっています。多くのことをいじっているだけです。他のすべてが機能するようになったら、それらを更新します)

そしてここに attributes/default.rb があります:

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

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

ノードまたはソロ ノードが定義されていませんが、それが問題かどうかわかりません。これまでの vagrant に関する私の主な問題は、物事を行う方法の無限の可能性です。同じ方法で行われる例は 2 つとなく、何が「最善」または「正しい」方法と見なされるかはわかりません。

4

2 に答える 2

12

nginx_site とその名前を使用して、任意の nginx サイトを名前で無効にすることができます。あなたが抱えている問題は、nginx_site の定義が実際には enable パラメーターが true または false に設定されていることを探しているためであり、action パラメーターが :disabled に設定されているわけではありません。

レシピへのデフォルト サイトの追加を無効にするには:

nginx_site 'default' do
  enable false
end

これは、nginx opscode cookbook のバージョン 1.7.1 で機能しています。数か月前のように見えるため、コミュニティが提供するバージョンでこれが機能するかどうかはわかりません。

最新バージョンを取得するには、Berksfile に追加します。

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

それが役立つことを願っています:)

于 2013-07-21T06:29:55.717 に答える
5

同じエラーが発生しますが、既定のサイトが有効になっていません。/etc/nginx/conf.d/default.conf代わりに、それは!から来ています。私は頼らなければなりませんでした

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

これは、nginx クックブックが私のボックスにインストールしている RHEL パッケージからのものです。

于 2013-08-30T13:13:31.950 に答える