Пассажир автономный, нет необходимости в HTTP-сервере?
Означает ли использование Passenger Standalone (работает на nginx core), что нам вообще не нужны веб-серверы http, такие как Apache или Nginx?
2 ответа:
Короткий ответ - "да", именно так это и работает. В основном passenger standalone позволяет запускать приложение через
Однако есть одна большая проблема с запуском passenger standalone в качестве вашего единственного веб-сервера. Если вы хотите запустить более одного веб-сайта на основе ruby, вам придется запускать их каждый на отдельных портах, так как нет способа прокси-запросов к отдельным приложениям с помощью passenger автономный сам по себе.passenger start
, и он использует nginx за кулисами, чтобы фактически обслуживать запросы rails.В моей среде мне нужно было запускать несколько сайтов, используя несколько различных версий 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 не требует внешнего веб-сервера, он является собственным и поэтому чрезвычайно прост в запуске.