PassengerでRailsアプリを複数稼働させながら、静的コンテンツも提供する

はじめに

Phusion PassengerでRailsアプリを複数稼働させながら、
静的コンテンツもApacheサーバーから同時に提供しようとしたら、
アレってなって、調べたメモ。

やりたいこと
  • /var/www/html/contentsとかで静的コンテンツを提供する
  • /opt/appとかにrailsアプリ作ってPassengerから提供する
バージョン
Railsアプリのディレクトリ
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の設定ファイル変更
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下の静的コンテンツにもアクセスできる