Пассажир автономный, не нужен HTTP-сервер? - PullRequest
6 голосов
/ 15 июня 2011

Означает ли использование Passenger Standalone (работающего на ядре Nginx), что нам вообще не нужны HTTP-серверы, обращенные к сети, такие как Apache или Nginx?

Ответы [ 2 ]

14 голосов
/ 16 июня 2011

Короткий ответ - «да», это действительно так.По сути, автономный пассажирский позволяет вам запускать ваше приложение через passenger start, и он использует nginx за кулисами, чтобы фактически обслуживать запросы рельсов.

Однако существует одна большая проблема с автономным пассажирским запуском в качестве вашего единственного веб-сервера.Если вы хотите запустить более одного веб-сайта на основе ruby, вам придется запускать каждый из них на отдельных портах, поскольку нет способа прокси-запросов к отдельным приложениям с автономным пассажиром.

В моей средеМне нужно было запустить несколько сайтов, используя несколько разных версий ruby ​​(а не просто разные версии rails).Например, у меня есть один сайт под управлением Rails 2.3.x с Ruby Enterprise Edition, а другой сайт под управлением Rails 3.0.x под управлением Ruby 1.9.2.Для решения этой проблемы я использовал автономную версию для пассажиров с отдельным прокси-сервером Nginx:

  • На каждом веб-сайте работает автономная версия для пассажиров, которую я настроил для прослушивания на локальном сокете UNIX.Я использую RVM, чтобы позаботиться о загрузке своей версии ruby ​​для меня, поэтому моя команда passenger start немного длинна, но выглядит так:

    • cd /path/to/my/app; rvm use ree-1.8.7-2011.03@gemset; export GEM_HOME=/usr/local/rvm/gems/ree-1.8.7-2011.03@gemset; /usr/local/rvm/gems/ree-1.8.7-2011.03@gemset/bin/passenger start -d -S /tmp/mysite.com.sock -e production --pid-file /path/to/my/app/shared/pids/passenger.pid
  • Теперь, когда мое приложение работает и прослушивает на /tmp/mysite.com.sock, у меня есть еще один экземпляр Nginx, работающий на порту 80, который просто использует простые правила proxy_pass для отправки запросов на каждый сайт в отдельности.

Извините за длинный пост, и, возможно, это слишком много информации ... но я обнаружил, что это комбо работает очень хорошо, и я написал несколько хороших сценариев в стиле init.d для запускамои отдельные пассажирские автономные приложения.Использование памяти Nginx настолько удивительно низко, что на самом деле ничего не стоит запускать 3 его экземпляра (по 1 на каждый сайт и 1 на порт 80).

Надеюсь, это поможет!

0 голосов
/ 15 июня 2011

Насколько я могу прочитать (http://www.modrails.com/documentation/Users%20guide%20Standalone.html) "Автономный пассажир" сам по себе является веб-сервером.

В отличие от Phusion Passenger для Apache и Phusion Passenger для Nginx, Phusion Passenger Standalone не требует внешнего веб-сервера, он является собственным, и поэтому его очень легко начать.

...