てきとうなメモ

本の感想とか技術メモとか

passengerでログが出力されない→passengerはどのユーザで実行されているのか

passengerでrailsアプリのログが書き出されないなと思っていたら、apacheのプロセスはapacheで起動するのだが、passengerのプロセスがnobodyで起動していた。ログファイルの所有者はapacheにしていたので書き込めなかったわけだ。

なんでnobodyなのか調べると、結構ややこしい。この辺りに書かれているけど

PassengerUserSwitchingという設定があって、これが有効になっているとpassengerはアプリのスタートアップファイル(ex. config.ru)の所有者権限で実行される。これはデフォルトではonになっている。

ただし、Webサーバのプロセスがroot権限で実行されているとこの機能はoffになる。

自分の場合はPassengerUserSwitchingは設定していなかったのでデフォルトのonであり、Webサーバのプロセスもapacheで実行されていたので、有効になっている。しかし、config.ruの所有者がrootになっていた。この場合はPassengerDefaultUserの値が利用される。この値も設定していなかったので、デフォルト値のnobodyユーザになってしまったというわけ。

ややこしい