Установка Пассажира, когда Nginx уже установлен; Возможный? - PullRequest
14 голосов
/ 30 сентября 2011

Скорее простой вопрос, возможно ли установить пассажира, когда nginx уже установлен на вашем веб-сервере?

Если ответ Да, я уже выполнил следующие действия:

В этот момент у меня уже установлен nginx (для моих PHP-приложений), а затем я сделал проверку git-хранилища пассажира:

mkdir /repositories
cd /repositories/
git clone https://github.com/FooBarWidget/passenger.git
cd passenger/

и затем добавьте этот фрагмент к /etc/nginx/conf/nginx.conf

  http {
      ...
      passenger_root /repositories/passenger;
      passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.2-p290/ruby;
      ...
  }

Однако, когда я хочу перезапустить nginx, я получаю следующую ошибку:

* Starting Web Server nginx
nginx: [emerg] unknown directive "passenger_root" in /etc/nginx/nginx.conf:19

Что подводит меня к заключению, что мне еще нужно настроить некоторые конфигурации, чтобы nginx знал, что мы используем passenger.

Мой серверный блок

server {
  listen 80;
  server_name rails.kreatude.com;
  root /srv/www/my_test_app;
  passenger_enabled on;
}

Ответы [ 5 ]

16 голосов
/ 08 октября 2011

Я думаю, что ваша проблема в том, что пассажирский модуль отсутствует в nginx.

Все зависимые от пассажира директивы, которые вы описали (passenger_root, passenger_ruby, passenger_enabled), доступны только тогда, когда пассажирский модуль присоединен к nginx. Вот почему вы должны скомпилировать nginx с --add-module='/path/to/passenger-3.0.9/ext/nginx'.

К сожалению, я не знаю ни одного способа включения пассажирского модуля без переустановки nginx. Но, согласно http://wiki.nginx.org/Modules, «Модули Nginx должны быть выбраны во время компиляции.», Так что может быть шанс, что нет способа сделать это.

2 голосов
/ 07 января 2014

В документах Passenger об этом обсуждается глава «Общий метод установки, обновления и перехода на более ранние версии: через RubyGems» .По сути, после установки гема Passenger необходимо перекомпилировать nginx (а затем использовать вместо nginx yum / apt-get-install, если таковой существует).Утилита компиляции / настройки Пассажира "passenger-install-nginx-module" делает это за вас (входит в состав Passenger gem) и автоматически включает в себя необходимые переключатели для Passenger.Это также дает вам возможность добавлять свои собственные переключатели (например, для дополнительных модулей или включать / отключать встроенные функции NGiNX).

0 голосов
/ 10 июня 2016

Я подтверждаю ответ ion-br, у меня такие же проблемы, как и на сайте PhusionPassenger:

Прежде чем начать, вы должны знать, что установка Passenger в режиме интеграции с Nginx предполагает расширение Nginx кодом из Passenger. Тем не менее, Nginx не поддерживает загружаемые модули. Это означает, что для установки режима интеграции Nginx Пассажира необходимо перекомпилировать Nginx из исходного кода.

Таким образом, единственным решением является правильная переустановка Nginx, если ваша машина является экземпляром AWS AMI, решение лежит здесь .

0 голосов
/ 18 сентября 2015

С rvm вы можете сделать это, просто набрав rvmsudo passenger-install-nginx-module.

Для более подробной информации: https://www.digitalocean.com/community/tutorials/how-to-install-rails-and-nginx-with-passenger-on-ubuntu.

0 голосов
/ 30 сентября 2011

passenger_enabled on; в сервере, http или блоке местоположения.

http://modrails.com/documentation/Users%20guide%20Nginx.html#_important_deployment_options

...