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するのは止めた方が良い気がする。