Kyl*_*oon 10 nginx chef-infra 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
Run Code Online (Sandbox Code Playgroud)
我的Berksfile:
site :opscode
metadata
cookbook 'nginx'
Run Code Online (Sandbox Code Playgroud)
我定义的'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]"
]
}
Run Code Online (Sandbox Code Playgroud)
这是我添加的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
Run Code Online (Sandbox Code Playgroud)
(PS我知道文件权限需要更改,我只是在摆弄很多东西,我会在其他所有工作后更新这些内容)
这是attributes/default.rb:
override['nginx']['enable_default_site'] = false
Run Code Online (Sandbox Code Playgroud)
你可以看到我试图在web.json中禁用默认站点,属性和配方本身,但没有一个坚持.
我没有定义节点或独奏节点,我不确定这是否是一个问题.到目前为止,我对流浪者的主要问题是如何做事的无限可能性.没有两个例子以同样的方式完成,我不确定什么被认为是"最好"或"正确"的方式.
小智 12
您可以使用nginx_site及其名称按名称禁用任何nginx站点.您遇到的问题是因为nginx_site 定义实际上是在寻找将enable参数设置为true或false而不是将action参数设置为:disabled.
要禁用默认站点,请添加到您的配方:
nginx_site 'default' do
enable false
end
Run Code Online (Sandbox Code Playgroud)
从nginx opscode cookbook的1.7.1版开始,这对我有用.我不知道这是否适用于社区提供的版本,因为它似乎已有几个月了.
要获取最新版本,请添加到您的Berksfile:
cookbook 'nginx', git: 'https://github.com/opscode-cookbooks/nginx'
Run Code Online (Sandbox Code Playgroud)
希望有帮助:)
我收到了同样的错误,但我没有启用默认站点.相反,它来自/etc/nginx/conf.d/default.conf
!我不得不求助于
file "/etc/nginx/conf.d/default.conf" do
action :delete
end
Run Code Online (Sandbox Code Playgroud)
这是来自我的盒子上安装nginx食谱的RHEL包.
归档时间: |
|
查看次数: |
10492 次 |
最近记录: |