Короткий ответ - «да», это действительно так.По сути, автономный пассажирский позволяет вам запускать ваше приложение через 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).
Надеюсь, это поможет!