Введение
В данный момент существует приблизительно 100 Марионеточных агентов, которые соединяются с Puppetmaster. Иногда это требует времени, прежде чем реализованные изменения на Puppetmaster взяты агентами. Некоторая информация была найдена тем Пассажиром, объединенным с веб-сервером, например, Apache2 или Nginx могли ускорить этот процесс. Прежде всего, согласно этой документации настоятельно рекомендуется использовать такую функциональность в Продуктивных средах.
Нацелиться
Цель состоит в том, чтобы установить Nginx и реализовать Пассажирскую поддержку Phusion на использовании CentOS7 passenger-install-nginx-module
ускорять распознавание изменений, реализованных на Puppetmaster Марионеточными агентами.
Попытки
Попытка 1
sudo /usr/local/share/gems/gems/passenger-4.0.56/bin/passenger-install-nginx-module --auto --auto-download
выполнялся и действия по установке сопровождались.
Попытка 2
Поскольку услуги Nginx не были установлены во время попытки 1, это было установлено с помощью yum -y install nginx
.
Попытка 3
Поиск с помощью Google: "[emerg] unknown directive passenger_enabled"
обозначенный, что nginx был скомпилирован без Пассажирской поддержки Phusion. В этом случае это должно быть ложью как passenger-install-nginx-module
был выполнен и вывод установки во время попытки 1 указал, что Nginx должен был быть установлен.
Попытка 4
/etc/nginx/nginx.conf
passenger_root /usr/local/share/gems/gems/passenger-4.0.56;
passenger_ruby /usr/bin/ruby;
/etc/nginx/conf.d/puppet.conf
passenger_enabled on;
Попытка 5
Протестировать, происходит ли эта проблема с помощью другого веб-сервера также sudo /usr/local/share/gems/gems/passenger-4.0.56/bin/passenger-install-apache2-module
выполнялся.
Ожидаемый результат
Выполнение passenger-install-nginx-module
и завершение действий по установке устанавливает Nginx. Услуги Nginx могут быть запущены, и Phusion-пассажирская поддержка включена. Проверка, является ли порт 8140 в, СЛУШАЕТ, состояние должно привести к истинному, поскольку Nginx должен запустить Puppetmaster.
Текущий результат
Выполнение passenger-install-nginx-module
и завершение действий по установке не устанавливает Nginx, в то время как вывод указывает на обратное.
Nginx with Passenger support was successfully installed.
Please edit your Nginx configuration file (probably /opt/nginx/conf/nginx.conf),
and set the passenger_root and passenger_ruby configuration options in the
'http' block, like this:
http {
...
passenger_root /usr/local/share/gems/gems/passenger-4.0.56;
passenger_ruby /usr/bin/ruby;
...
}
При установке Nginx использование конфетки не работает также. Проблема сохраняется даже когда passenger-install-nginx-module
выполняется снова.
[vagrant@vm-one ~]$ sudo systemctl status nginx.service -l
nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled)
Active: failed (Result: exit-code) since Thu 2015-01-01 01:55:56 UTC;
2min 19s ago
Process: 7963 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=0/
SUCCESS)
Process: 7935 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 10814 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=1/FAILURE)
Main PID: 7937 (code=exited, status=0/SUCCESS)
Jan 01 01:55:56 vm-one.local systemd[1]: Starting The nginx HTTP and reverse
proxy server...
Jan 01 01:55:56 vm-one.local nginx[10814]: nginx: [emerg] unknown directive
"passenger_enabled" in /etc/nginx/conf.d/puppet.conf:5
Jan 01 01:55:56 vm-one.local nginx[10814]: nginx: configuration file /etc/nginx
/nginx.conf test failed
Jan 01 01:55:56 vm-one.local systemd[1]: nginx.service: control process exited,
code=exited status=1
Jan 01 01:55:56 vm-one.local systemd[1]: Failed to start The nginx HTTP and
reverse proxy server.
Jan 01 01:55:56 vm-one.local systemd[1]: Unit nginx.service entered failed state.
Попытка установить другой веб-сервер с Пассажирской поддержкой приводит к:
* Checking for Apache 2...
Found: no
* Checking for Apache 2 development headers...
Found: no
Это указывает на это passenger-install-apache2-module
в отличие от passenger-install-nginx-module
кажется, проверяет, был ли веб-сервер установлен или нет.
Я автор Phusion Passenger. Вы неправильно понимаете что-то фундаментальное о Nginx.
Прежде всего, Nginx не поддерживает динамически загружаемые модули. Это означает, что единственный способ расширить Nginx - это перекомпилировать Nginx с нуля с включенными определенными модулями.
В своей ментальной модели вы, кажется, думаете, что пассажир-install-nginx-module
устанавливает module, и что yum install nginx
где-то устанавливает экземпляр Nginx, который затем загружает модуль Passenger. Это неправда. пассажир-install-nginx-module
компилирует совершенно новый Nginx с нуля, с включенным и статически связанным модулем Passenger внутри него. В зависимости от заданных вами параметров (особенно префикса установки) вы получите полностью отдельную установку Nginx - ту, которая полностью независима от той, которую вы устанавливаете с помощью yum.
Это подробно задокументировано в Passenger. wiki: Почему Passenger не может расширить мой Nginx? . Это не то, что мы, авторы Passenger, решили. Так работает сам Nginx, и мы не можем это изменить. Установка любого модуля Nginx выполняется следующим образом. Это резко контрастирует с модулями Apache, которые работают так, как вы думаете.
Во-вторых, вы, похоже, исходите из предположения, что установка службы Nginx - это то, о чем позаботится Passenger. Это неправда. Определения сервисов полностью зависят от платформы и даже надстройки для конкретного дистрибутива, добавленные упаковщиками дистрибутива. Определения сервисов не включены в исходный код Nginx и не установлены Passenger. Таким образом, если вы устанавливаете Passenger / Nginx из исходного кода (в отличие от RPM), вы должны сами установить определения служб. В руководстве есть раздел об этом.