Passenger+nginx+RVMとのおつきあいの仕方を考える

主に以下を参照に設定してみた。

nginxをrvmsudoで起動しないとうまく起動しない、という以外は普通にPassenger+nginxの環境を構築するのと変わらない。

nginxの起動スクリプト

しかしサーバーが再起動したときはrvmsudoできないよね。それは困る。
再起動したとき反映されない設定は設定とは言わんよ。

これに関してはどうやらGEM_HOMEだけなんとかしてやれば動くようなのでnginxの起動スクリプトに追記。

# for passenger with rvm
export GEM_HOME=/home/akahige/.rvm/gems/ruby-1.9.2-p290

無事起動した。

うーんしかしイマイチ感が半端ない。

なんか明確な理由がないなら無理にRVMで運用しない方がいいかもね。
または80番ポートで起動するのはリバースプロキシのみにして、Passenger+nginxはsudoなしで他のポートで起動させるか。

ダメだった代替案

  • passenger_set_cgi_paramでGEM_HOMEを指定
  • config.ru or enviroment.rbでgemのパスを指定

そもそもそれらの設定を読む前にgemのパスが要るって話ですよ。
ApacheならSetEnvでいけるのかなあ。

公式のドキュメント

あとはRVMのサイトにPassengerと組み合わせて利用する場合の説明があるんだけど、その通りやってもイマイチうまくいかなかった。

というかよく読んだらこっちはPassenger Standaloneを使う前提なのか。
やっぱりリバースプロキシのバックエンドとして使うことを想定しているっぽいな。
二度目読み返してようやく気がつく程度の英語力。

rvmsudoを使って80番ポートでPassenger+nginx+RVMするのは止めた方が良い気がする。