「ひとかじりのりんご」

へっぽこエンジニアの備忘録。こちらは旧ブログ。新しい方はこちら→「http://sbkro.github.io」

Nginx + PassengerでRedmineを動かしてみた。

Macで動かしているRedmineのWebサーバを「Apache + Passenger」から「Nginx + Passenger」へ変更したので、作業内容をメモ書き。Unicornは分からなくて挫折した...orz

環境

  • OSX 10.9.4
  • homebrew 0.9.5

Redmineのインストール・セットアップ

詳細は下記を参照。

Nginx・Passengerのインストール

インストールはhomebrewから行います。Passengerインストール時に、各種設定が標準出力されるので、忘れずにメモしてください。

$ brew install passenger
...
🍺  /usr/local/Cellar/passenger/4.0.45: 2547 files, 132M 

$ brew install nginx --with-passenger
...
# 公開ディレクトリパスが標準出力されるので、メモしておくこと。
Docroot is: /usr/local/var/www
...
# Nginxの設定ファイルパスが標準出力されるので、メモしておくこと。
The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.
...
# passengerを有効にするための設定が標準出力されるので、メモしておくこと。
To activate Phusion Passenger, add this to /usr/local/etc/nginx/nginx.conf, inside the 'http' context:
  passenger_root /usr/local/opt/passenger/libexec/lib/phusion_passenger/locations.ini
  passenger_ruby /usr/bin/ruby
...
🍺  /usr/local/Cellar/nginx/1.6.0_1: 7 files, 3.1M, built in 22 seconds

Nginxの設定

Nginxの設定ファイルを編集し、Passengerを有効にします。Nginxの初期ポート「8080」は、Apache Tomcatなど、様々なアプリケーションで使われているので変更することをおすすめします。なお、「80」にすることも可能ですが、Nginxの起動・停止に、root権限が必要になります。

$ vi /usr/local/etc/nginx/nginx.conf

http {
        # passengerインストール時に標準出力された内容をペーストする。
        passenger_root /usr/local/opt/passenger/libexec/lib/phusion_passenger/locations.ini;
        passenger_ruby /usr/bin/ruby;
	...

	server {
                # defaultは8080
		listen  9090; 
		server_name localhost;

		location / {
		...
                # 下記二行を追加。
		passenger_enabled on;
		passenger_base_uri /redmine;
		}
	}
}

公開ディレクトリへのシンボリックリンク作成

NginxがRedmineを参照できるように、公開ディレクトリにシンボリックリンクを作成します。

$ ln -s [Redmineのインストールパス]/public /usr/local/var/www/redmine

起動

サーバを起動して、Redmineが起動されることを確認します。メモリ使用量を見ていましたが、httpdとくらべて少ないですね。これはいい。

$ nginx
$ open http://localhost:9090/redmine

Mac起動時に、Nginxを起動させる。

Nginxインストール時に、plistファイルが生成されるので、これをlaunchdへ登録させます。リブート後、上記URLへアクセスすると、Redmineが表示されるはずです。

$ sudo cp /usr/local/opt/nginx/homebrew.mxcl.nginx.plist /System/Library/LaunchDaemons/
$ sudo launchctl load -w /System/Library/LaunchDaemons/homebrew.mxcl.nginx.plist
$ sudo launchctl start homebrew.mxcl.nginx

まとめ

  • Nginx・Passengerは、homebrewから簡単にインストール・設定ができます。
  • Apache・Passengerより設定の敷居が低い印象を持ちました。また、メモリ使用量も少ないので、ローカル環境で、Railsアプリを動かすのに適しているのではと思いました。