Как автоматически запустить пассажира в Nginx - PullRequest
0 голосов
/ 19 марта 2012

У меня есть "rvm use 1.9.3" и "rvmsudo passenger start --socket (sitename) .socket" в качестве предварительных условий для запуска Passenger под Nginx. Все остальное работает отлично, но теперь вопрос заключается в том, чтобы убедиться, что все эти команды или что-то подобное работают с Nginx, который загружается при запуске системы. Я хочу, чтобы все это было автоматизировано.

Вот как выглядят мои добавленные части в nginx.conf (# это вещи, которые, очевидно, работают с некоторой конфигурацией Nginx / passenger, я вообще не пробовал.)

upstream (sitename)_upstream{
  server unix:/(filepath)
}

server {
  listen 80;
  server_name (url);
  root (filepath);
  access_log (logpath);
  error_log (logpath);
 # passenger_enabled on;
 # rails_spawn_method smart;
 # rails_env development;
  location / {
    proxy_pass http://(sitename)_upstream;
    proxy_set_header Host $host;

  } 

}

Так что мне теперь делать?

1 Ответ

5 голосов
/ 19 марта 2012

Хитрость процессов, которые запускаются в системе, состоит в том, чтобы убедиться, что части, о которых вы заботитесь, запускаются с теми же разрешениями и пользователем / группой, что и при первоначальной настройке.Предполагая систему Linux, процессы, которые запускаются при загрузке, запускаются в /etc/init/d/<script> и запускаются пользователем root (по умолчанию) во время загрузки.Вы можете изменить свой сценарий на запуск, используя su для запуска в качестве отдельного пользователя - на самом деле большинство серверных процессов в любом случае делают что-то подобное, поэтому они запускаются в защищенной пользовательской среде.

Между тем RVM предназначен для запуска какпроцесс для каждого пользователя.Несколько месяцев назад я пытался настроить сервер с RVM, работающим глобально, и я думаю, что это было своего рода противодействие RVM.Таким образом, в нашем случае мы убедились, что наш веб-сервер (в нашем случае Apache, но у Nginx такая же опция) запущен, чтобы его дочерние процессы - те, которые фактически обрабатывали веб-запросы, запускались как тот же пользователь, для которого был RVM.сконфигурировано.Альтернативой может быть предоставление групповой записи прав доступа пользователям Nginx и RVM, но это больше работы.

Другая проблема с RVM заключается в том, что его мир создается при запуске сценария оболочки - обычно этоСценарий ~ / .bash_profile и, следовательно, любой сервер, которому необходимо иметь ту же среду, может захотеть работать в этой оболочке.

Все это звучит очень сложно, но на практике для нас, по крайней мере, создание пользователяучетная запись, из-за которой запускались приложения, и установка RVM от имени этого пользователя с небольшой другой настройкой заставила все это «просто работать», особенно в тех случаях, когда вы используете rake, bundle, capistrano и другие вещи.

Извините, это немного более общее, чем я ожидал, но, может быть, это полезно ...

...