Как отключить сайт nginx по умолчанию при использовании Chef и Vagrant?
я использую 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
Мой 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]"
]
}
вот рецепты / по умолчанию / по умолчанию.rb для сайта nginx я добавляю:
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. Я знаю, что права доступа к файлам должны быть изменены, я просто возился с множеством вещей, я обновлю их, как только все остальное будет работать)
а вот атрибуты по умолчанию.rb:
override['nginx']['enable_default_site'] = false
вы можете видеть, что я попытался отключить сайт по умолчанию в интернете.json, атрибуты и сам рецепт, но ни один из них не прилипает.
у меня нет определенного узла или одиночного узла, и я не уверен, что это проблема. Моя главная проблема с vagrant до сих пор была бесконечными возможностями для того, как делать вещи. Нет двух примеров, сделанных одинаково, и я не уверен, что считается "лучшим" или "правильным" способом.
2 ответов
вы можете отключить любой сайт nginx по имени, используя nginx_site и его имя. Проблема заключается в том, что nginx_site определение фактически ищет параметр enable, который должен быть установлен в true или false, а не параметр action, установленный в: disabled.
чтобы отключить сайт по умолчанию, добавьте в свой рецепт:
nginx_site 'default' do
enable false
end
это работает для меня с версии 1.7.1 поваренной книги nginx opscode. Я не знаю, будет ли это работать с версией предоставлено сообществом, поскольку ему, по-видимому, несколько месяцев.
чтобы получить последнюю версию, добавьте в свой 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
это происходит из пакета RHEL, который кулинарная книга nginx устанавливает на мой ящик.