PassengerでRailsアプリを複数稼働させながら、静的コンテンツも提供する
やりたいこと
- /var/www/html/contentsとかで静的コンテンツを提供する
- /opt/appとかにrailsアプリ作ってPassengerから提供する
Apache管理下にrailsアプリのリンクをはる
sudo ln -s /opt/rails_app1/public /var/www/html/rails_app1 sudo ln -s /opt/rails_app2/public /var/www/html/rails_app2
publicに対してリンクはる!
Apacheの設定ファイル変更
- RailsBaseURIにシンボリックリンク指定
- FollowSymLinksでシンボリックリンクを利用できるようにする
- Productionが稼働するようにSetEnvでSECRET_KEY_BASEを設定
sudo vi /etc/apache2/sites-enabled/000-default.conf
# Passenger LoadModule passenger_module /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.50/buildout/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.50 PassengerDefaultRuby /usr/local/bin/ruby <VirtualHost *:80> ServerName www.yourhost.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html # Rails Link Name RailsBaseURI /rails_app1 RailsBaseURI /rails_app2 <Directory /var/www/html> AllowOverride all Options -MultiViews # Symbolic link Options Indexes FollowSymLinks Require all granted # Rails Secret Key for Production SetEnv SECRET_KEY_BASE abcdef </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
まとめ
以上で、Webブラウザからrailsアプリにアクセスでき、
/var/www/html下の静的コンテンツにもアクセスできる