Пассажир автономный, нет необходимости в HTTP-сервере?


Означает ли использование Passenger Standalone (работает на nginx core), что нам вообще не нужны веб-серверы http, такие как Apache или Nginx?

2 5

2 ответа:

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

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

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

  • Каждый веб-сайт работает в автономном режиме passenger, который я настроил для прослушивания на локальном 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).

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

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

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