понедельник, 20 апреля 2015 г.

Установка passenger для apache + настройка proxy_pass (Ruby on Rails)

Установка


https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html

Способов установки дофига (см. ссылку выше). Я ставил из rubygems

gem install passenger
потом запускаем
passenger-install-apache2-module
Следуем его указаниям и ставим недостающие зависимости.

Далее в конфиг apache прописываем (меняем пути на свои)

 LoadModule passenger_module /usr/local/rvm/gems/ruby-2.2.1/gems/passenger-5.0.6/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rvm/gems/ruby-2.2.1/gems/passenger-5.0.6
PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.2.1/wrappers/ruby
</IfModule>

Затем рестартуем apache

Проверить, что passenger работает можно командой passenger-memory-stats


Настройки в rails

/config/environments/production.rb

config.action_controller.relative_url_root = '/srv/www/rails/staff_locator/'

Настройки в apache

Принимаем запрос на 80м порту с определенным URI  (/staff и /locator) и перенаправляем его на другой URI (у меня там слушает Ruby on Rails).

На 80м порту живет другое веб-приложение на PERL'e

Добавил в vhost для основного сервиса проброс до rails
<VirtualHost *:80>
.
.
.
 #FOR RAILS PROXY PASS - START
 #point to different document root for rails application
 Alias "/srv/www/rails/staff_locator/" "/srv/www/rails/staff_locator/public/"

 #making permissions for rails assets folder and location
 <Directory "/srv/www/rails/staff_locator/public/assets">
 AllowOverride all
 Order allow,deny
 Allow from all
 </Directory>

#Это чтобы находил папку assets с стилями и картинками. Думаю, что это костыль и правильно надо реализовывать как то по другому. <Location /assets>
 Order allow,deny
 Allow from 192.168.0.0/16
</Location>

 <Location /staff>
 Order allow,deny
 Allow from 192.168.0.0/16
 </Location>

 <Location /locator>
 Order allow,deny
 Allow from 192.168.0.0/16
 </Location>

 #disable Forward-proxy
 ProxyRequests off

 #proxy access security
 <Proxy "*">
   Order deny,allow
   Allow from 192.168.0.0/16
 </Proxy>

 ProxyPassMatch "^/staff(.*)" "http://localhost:8080/staff$1"
 ProxyPassMatch "^/locator(.*)" "http://localhost:8080/locator$1"
ProxyPassMatch "^/assets(.*)" "http://localhost:8080/assets$1"

 #FOR RAILS PROXY PASS -END

Создал  ror.conf

 <VirtualHost *:8080>
       ServerName xxx.ru
       # !!! Be sure to point DocumentRoot to 'public'!
       #DocumentRoot /ror/test/public
       DocumentRoot /srv/www/rails/staff_locator/public
 <Directory /srv/www/rails/staff_locator/public>
 # This relaxes Apache security settings.
          AllowOverride all
          Order allow,deny
          Allow from all
          # Multiews must be turned off.
          Options -MultiViews
          # Uncomment this if you're on Apache >= 2.4:
          #Require all granted
    </Directory>
    </VirtualHost>