神様は有給消化中です。

技術ネタを書こうかな。時事ネタとか私生活ネタはうけないし。

【Rails】Apache経由でInternal Server Error(500 Error)が発生して困った

環境

やりたいこと

  • ローカル環境で開発したRailsアプリをサーバーに入れて、Apache経由で使いたい
  • まだ作りかけのアプリなので、development環境で動作させる

やったこと

基本的にはコチラのサイトを参考に進めていく。

途中躓きながらもrails sever経由での接続までできて、いざApache経由で接続。

sudo vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:80  #コメントされているので外す

<VirtualHost *:80> #ここから追加
    ServerName XXXX.XXXX.XXXX.XXXX # サーバーのIPアドレス
    DocumentRoot /home/user/testapp/public/
    <Directory "/home/user/testapp/public">
        Options -MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost> #ここまで
sudo service httpd restart

ブラウザからhttp://XXXX.XXXX.XXXX.XXXX/に接続

Internal Server Error

おぉ、マジか・・・。

調べてみると、どうやらPassengerではデフォルトでproductionモードで実行されるとのこと。
よく見れば /rails_root/log/production.log なるものが作られている。サイズは0。

developmentモードで実行するには、Apacheに設定が必要だそうで。
以下のように変更。

sudo vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:80

<VirtualHost *:80>
    RailsEnv development # 追加!
    ServerName XXXX.XXXX.XXXX.XXXX
    DocumentRoot /home/user/testapp/public/
    <Directory "/home/user/testapp/public">
        Options -MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
sudo service httpd restart

ブラウザからhttp://XXXX.XXXX.XXXX.XXXX/に接続

無事表示できました。

というわけで、developmentモードでApache使うときはお気をつけて(常識か)