Phusion Passenger: permission denied で ruby を実行できない問題

問題

Rails あるいは Sinatra を Phusion Passenger で動かしている状況で、permission denied により ruby を実行できない。

解決策 (1)

Rails なら config/environment.rbSinatra なら config.ru の持ち主が ruby を実行できるユーザーかどうかを確認し、そうでなければ直す。

デフォルトで Phusion Passengerはこのユーザーとして起動する。ただし root ユーザーが持ち主の場合は nobody ユーザーで動く。

解決策(2)

ps auwx | grep Passenger で Phusion Passenger の実行ユーザーを調べて、そのユーザーが ruby を実行できるようにする。

例えば、そのユーザーが apache で、ruby/home/app/.rbenv ディレクトリの下にあり、/home/app の user:group が app:app なら、sudo gpasswd -a apache appapacheapp グループに追加する。また、chmod g+rx /home/app も実行する。

解決策 (3)

PhusionPassenger の設定ファイルで PassengerUser を設定する。