問題
Rails あるいは Sinatra を Phusion Passenger で動かしている状況で、permission denied により ruby を実行できない。
解決策 (1)
Rails なら config/environment.rb
、Sinatra なら 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 app
で apache
を app
グループに追加する。また、chmod g+rx /home/app
も実行する。
解決策 (3)
PhusionPassenger の設定ファイルで PassengerUser
を設定する。