2015-08-14 7 views
0

Я пытаюсь использовать шеф-повара для предоставления веб-сервера centos с nginx. Я хочу использовать http_auth_request_module и headers_more_module. Моя роль выглядит следующим образом:Использование модулей nginx с поваром повара nginx

{ 
    "name" : "cms-aws", 
    "description" : "a role to deploy cms to aws", 
    "default_attributes" : { 
     "nginx" : { 
      "source" : { 
       "modules" : ["nginx::http_auth_request_module","nginx::headers_more_module"] 
      } 
     } 
    }, 
    "run_list" : [ 
     "runit", 
     "python", 
     "build-essential", 
     "gunicorn", 
     "nginx::source", 
     "openssl", 
     "yum", 
     "git", 
     "yum-epel", 
     "my-custom-cookbook", 
     "supervisor" 
    ] 
} 

Однако, когда я бегу Nginx -V на сервере, эти модули не перечислены, и Nginx жалуется, когда я использую директиву auth_request в моем файле конф.

Я также попытался со следующими атрибутами, но повар не мог найти эти кулинарные книги, когда я побежал:

"default_attributes" : { 
    "nginx" : { 
     "source" : { 
      "modules" : ["http_auth_request_module","headers_more_module"] 
     } 
    } 
}, 

Edit: Итак, я определил, что AMI я бегу это на уже установлен nginx. Поэтому, когда systemctl запускает nginx, он атакует существующий, а не тот, который устанавливает шеф-повар. Я попытался модифицировать свои атрибуты, как, например:

"default_attributes" : { 
    "nginx" : { 
     "source" : { 
      "modules" : ["nginx::http_auth_request_module","nginx::headers_more_module"] 
     }, 
     "binary" : "/usr/sbin/nginx" 
    } 
}, 

но шеф все еще устанавливает Nginx в /opt/nginx-1.6.2/sbin/nginx, любая идея, как это исправить?

Редактировать изменение: Оказывается, nginx не установлен из коробки в этом AMI, поэтому поваренная книга устанавливает его на /usr/sbin/nginx, но когда я запустил nginx -V, нужных модулей в списке не указано. Когда я запускаю /opt/nginx-1.6.2/sbin/nginx -V, он перечисляет запрошенные модули.

+0

В этом окне, что вы получаете, когда запускаете 'which -a nginx'? В основном, сколько мест в nginx установлено/связано/найдено? –

ответ

2

Даже если nginx был установлен из пакета, кулинарная книга nginx создаст сервис runit, начиная с nginx от /opt/nginx-1.6.2/sbin/. Вы можете управлять им с runit-х sv command

sudo sv status nginx 
sudo sv up nginx 

При компиляции Nginx от источника в шеф-повара, имеет смысл принудительно удалить все существующие пакеты в том же рецепте:

package("nginx") { action :remove } 

Поскольку ваш Nginx, как представляется, скомпилирован правильно (/opt/nginx-1.6.2/sbin/nginx -V приводит к правильному результату), вышеуказанного должно быть достаточно, чтобы исправить проблему.

Смежные вопросы