簡體   English   中英

如何在使用Chef和Vagrant時禁用默認的nginx站點?

[英]How to disable default nginx site when using Chef and Vagrant?

我正在使用Berkshelf,Chef和Vagrant,我正在嘗試配置在nginx上運行的自定義站點。 我正在使用opscode nginx配方,然后為自定義站點編寫自己的配方。 當我運行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'

我定義的'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網站的recipes / default / 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

(PS我知道文件權限需要更改,我只是在擺弄很多東西,我會在其他所有工作后更新這些內容)

這是attributes / default.rb:

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

你可以看到我試圖在web.json中禁用默認站點,屬性和配方本身,但沒有一個堅持。

我沒有定義節點或獨奏節點,我不確定這是否是一個問題。 到目前為止,我對流浪者的主要問題是如何做事的無限可能性。 沒有兩個例子以同樣的方式完成,我不確定什么被認為是“最好”或“正確”的方式。

您可以使用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'

希望有幫助:)

我收到了同樣的錯誤,但我沒有啟用默認站點。 相反,它來自/etc/nginx/conf.d/default.conf 我不得不求助於

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

這是來自我的盒子上安裝nginx食譜的RHEL包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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