Предположим, я хочу разместить 2 приложения rails на одном сервере. Я бы использовал RVM (установленный как многопользовательский) и два разных гемсета; предположим, что gemsetA для appA и gemsetB для appB.
Как лучше всего справиться с этой ситуацией с помощью модуля Passenger для apache2? Установить и скомпилировать пассажирский модуль apache2 для каждого гемсета или создать другой «пассажирский» гемсет, используемый только для этой цели?
Спасибо
PS: я уже читал это Несколько сайтов на Rails, использующих Passenger и VirtualHosts? но я думаю, что он не использует RVM или, по крайней мере, он использует только один гемсет.
Я сначала попробую установить пассажира в глобальный гемсет:
rvm use ree@global --default --passenger
rvm ree@global gem install passenger --version="${PASSENGER_VERSION}"
passenger-install-apache2-module --auto --apxs2-path $(which apxs2)
passenger-install-apache2-module --snippet >> /etc/apache2/conf.d/passenger.conf
В зависимости от ваших прав доступа к файлу вам может потребоваться или не нужно добавлять PassengerGroup www-data
директива. Затем создайте гемсеты своего приложения:
rvm use ree@gemsetA --create
rvm ree@gemsetA gem install ${appA_gems}
rvm use ree@gemsetB --create
rvm ree@gemsetA gem install ${appB_gems}
# Must use .rvmrc files to change gemset per app
echo "rvm use ree@gemsetA" >> /path/to/appA/.rvmrc
echo "rvm use ree@gemsetB" >> /path/to/appB/.rvmrc
Наконец, настройте apache, чтобы каждое приложение получало собственный VirtualHost. Используйте аналогичный набор директив в блоке VirtualHost:
RackBaseURI /path/to/app(A|B)
<Directory /path/to/app(A|B)>
PassengerAppRoot /path/to/app(A|B)
Options -MultiViews
AllowOverride all
Allow from all
</Directory>
Возможно, вам придется поиграть с путями для RackBaseURI
и PassengerAppRoot
в зависимости от того, где вы установили свое приложение, будь то Rack или другое, или от того, как вы настроили Apache. В случае сомнений обратитесь к Документация для пассажиров.
Если вы уже пробовали это, и не смогли заставить его работать, а одно из приложений не может найти его драгоценные камни ... вам может потребоваться запустить Автономный пассажирский.