読者です 読者をやめる 読者になる 読者になる

Passenger はどのユーザーアカウントで動くのか?

Ruby

先日ちょっとしたトラブルがあり、ふと Passenger はどのユーザーアカウントで動くのかな? と思い調べてみまいした。 下の ps の表示では Passenger は アプリ(ここではRedmine)を UID=1001 のユーザーで実行しています。このUIDは私のログインアカウントです。

しかし、Passengerの設定に私のユーザー名やUIDは書いてありません、どうやってPassengerは私のUIDを使ったのでしょうか?

% ps alx
F   UID   PID  PPID PRI  NI    VSZ   RSS ... TIME COMMAND
  ...
1     0   366  6960  20   0  93060 34044 ... 0:02 Passenger FrameworkSpawner: 2.1
0     0  6960  6959  20   0  45896 12332 ... 0:05 Passenger spawn server         
5  1001   367   366  20   0 116396 54444 ... 0:02 Passenger ApplicationSpawner: /
1  1001   374     1  20   0 156988 70532 ... 0:15 Rails: /home/rails_app/redmine
  ...

Phusion Passenger users guideのUser switching に書いてありました。アプリがRailsの場合は config/environment.rb ファイルのオーナーでアプリを実行するそうです。なぜこのように成っているのかは、ここに書かれているように共有サーバーのホスティングサービスでPassengerを利用した場合に、他の利用者のファイルをRailsアプリからアクセス出来ないようにする為だそうです。

ちなみに、専用サーバーで使っている場合は、固定のユーザー(例えば apache)で動いている方が便利な場合もあります。そのような場合は、設定ファイルに

PassengerUserSwitching off
PassengerDefaultUser   appache

と書くことで apache ユーザーでアプリを実行する事が出来ます。