Статьи

Плавное развертывание с пассажиром

Я упоминал о выпуске Phusion’s Passenger (AKA mod_rails) — модуля Apache, который может запускать несколько сайтов Rails, как и PHP. Значение этого довольно огромно. До сих пор для запуска rails требовалось запускать Mongrel за прокси-сервером Apache или использовать FastCGI (или, предпочтительно, fcgid).

Хотя Mongrel проделал отличную работу, я никогда не был большим поклонником двух точек отказа — проблемы с Apache или Mongrel сделали бы ваш сайт недоступным. Мало того, что для увеличения емкости вашей системы необходимо добавить несколько экземпляров mongrel, каждый со своим собственным портом и каждый со своей собственной служебной памятью, что может быть очень запутанным для провайдеров виртуального хостинга.

Пассажир позволит провайдерам хостинга установить один модуль Apache, требуя, чтобы клиент просто загрузил свое приложение — никаких проблем с разрешениями или проблемных файлов конфигурации. Однако это также очень полезно для разработчика: вместо запуска script/server при тестировании приложения вы можете установить локальную версию Apache, настроить несколько виртуальных хостов и получить мгновенный доступ к тестовым сайтам.

В настоящее время Passenger работает только в средах типа * NIX, например, Linux и OSX. Команда Phusion приложила немало усилий, чтобы сделать установку максимально простой. Вот основные шаги:

  1. Установите Apache (обратитесь к вашему поставщику за инструкциями)
  2. Запустите gem install passenger
  3. Запустите passenger-install-apache2-module

Теперь пассажир должен задать вам несколько вопросов, которые, если вы ответите правильно, должны завершить установку.

Перезапустите Apache и создайте файл виртуального хоста, который указывает на ваше приложение Rails, и вы ушли! Следующий файл виртуального хоста скажет Apache ответить на URL http: //test.localdomain с помощью приложения Rails в / home / sites / test.

 <VirtualHost 127.0.0.1:80>
     Имя_сервера test.localdomain
     DocumentRoot / home / sites / test
 </ VirtualHost>

Если вы используете passenger для разработки, убедитесь, что в вашем файле apache2.conf есть строка RailsEnv development .