Ubuntuは、aptitudeでNginxが入るんだけど、Passenger対応しているわけではない。ビルド時に指定しないとPassengerのモジュールが組み込まれないから。

以下は、passenger対応させた上でinitスクリプトの登録までする手順。

1.ビルド+インストール

gem経由でpassengerを入れる

1
sudo gem install passenger

passenger-install-nginx-moduleする。依存するパッケージは、apacheの時と比べて多くない。C++コンパイラぐらい。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sudo passenger-install-nginx-module
 
... # 以下が依存関係。通らないときは頑張って入れること
 * GNU C++ compiler... found at /usr/bin/g++
 * Ruby development headers... found
 * OpenSSL support for Ruby... found
 * RubyGems... found
 * Rake... found at /usr/bin/rake
 * rack... found
 * OpenSSL development headers... found
 * Zlib development headers... found
...
 
Enter your choice (1 or 2) or press Ctrl-C to abort: #=> 1
...
 
Please specify a prefix directory [/opt/nginx]: #=> デフォルトのままでいいでしょう
...
 
--------------------------------------------
 
Nginx with Passenger support was successfully installed.
...

2.コンフィギュアー

以下を設定する。

1
sudo (gedit|vi) /opt/nginx/conf/nginx.conf
...
# init script的に必要なのでpid fileを指定
pid /var/run/nginx.pid;
 
# passenger_root 等は最初から設定済みになっている
...
# 
server {
  listen 8080;
  server_name dev.local.udzura.jp;
  # publicを指定してね
  root /var/www/dev-app/public;
  passenger_enabled on;
  # 必要であれば
  rails_env development;
  #rails_env production;
  ...
  # tips: error_page とかも指定しとくとそれっぽい
}

3.イニット・スクリプトの作成

以上のサイトをコピペし、 /etc/init.d/nginx-passenger に保存しましょう。

変更箇所:

...
DAEMON=/opt/nginx/sbin/nginx
...
NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
...
# 万一、あなたがaptで入れたgemのバージョンをアップデートして、
# そのせいで「gemが見つからない」とか言われてRailsが起動しない場合は、
# 以下の魔法の一行で解決する可能性があります。
export GEM_HOME=/var/lib/gems/1.8
...

そして、

1
2
sudo chmod a+x /etc/init.d/nginx-passenger
sudo update-rc.d -f nginx-passenger defaults

あと、ディレクトリ構成がDebianっぽくないので、そこは好みで自分で設定しましょう。

以上です。