2013-03-08

Nginx + Passenger + Redmine 2+

先のエントリーで旧い Redmine を開発版の Redmine に置き換えようとしたのだけど、実は Apache 回りで上手くいっていなかった。何が悪かったかと言うと、新 Redmine はローカルに入れた gems で動き、旧 Redmine はシステムの gems で動いていたこと。

Apache はシステム側の Passenger で動かしていたので、旧 Redmine は動くけど新 Redmine は動かない。何故なら、新 Redmine はシステムの Passenger を使わないから。エイヤッとシステム全体の gems を統一しちゃえば問題ないんだけど、安全策が事態をややこしくした。

というわけで、clmemo@aka: Redmine 2 系へのアップグレード方法 の続きから。

Nginx for Passenger のインストール

Apache で共存させるのは大変なので、Nginx を使うことにした (see also clmemo@aka: Nginx をソースからコンパイルしてインストールしてみた)。これからの作業で Nginx のインストールを行なうので、過去記事の Nginx のインストール部分は飛ばして良し!!

/var/redmine-dev に移動して、nginx 用の module を組む。Apache はモジュールを後から追加できるけど、nginx はコンパイル時に module を組み込む。なので、module 用コマンドがそのまま nginx のコンパイル・コマンドになっている。

$ cd /var/redmine-dev
$ echo 'gem "passenger"' >> Gemfile.local
$ bundle install
$ sudo bundle exec passenger-install-nginx-module
(中略)
Nginx doesn't support loadable modules such as some other web servers do,
so in order to install Nginx with Passenger support, it must be recompiled.

Do you want this installer to download, compile and install Nginx for you?

 1. Yes: download, compile and install Nginx for me. (recommended)
    The easiest way to get started. A stock Nginx 1.2.6 with Passenger
    support, but with no other additional third party modules, will be
    installed for you to a directory of your choice.

 2. No: I want to customize my Nginx installation. (for advanced users)
    Choose this if you want to compile Nginx with more third party modules
    besides Passenger, or if you need to pass additional options to Nginx's
    'configure' script. This installer will  1) ask you for the location of
    the Nginx source code,  2) run the 'configure' script according to your
    instructions, and  3) run 'make install'.

Whichever you choose, if you already have an existing Nginx configuration file,
then it will be preserved.

Enter your choice (1 or 2) or press Ctrl-C to abort:

(1) 自動インストールか、(2) カスタム・インストールか聞かれる。ここはあえてカスタムの 2 を選ぶ。

  • Where is your Nginx source code located?
    Please specify the directory:
    ~/src/nginx-1.3.14/
  • Where do you want to install Nginx to?
    Please specify a prefix directory [/opt/nginx]:
    /etc/nginx
  • Extra Nginx configure options
    (中略)
    Extra arguments to pass to configure script:
    --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --with-mail --with-mail_ssl_module --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl

最後に ENTER を押してコンパイル & インストール開始。

設定ファイルへの追記

2 つのファイルを編集。まず、/etc/nginx/nginx.confhttp セクションに次の 2 行を追記:

  passenger_root /var/redmine-dev/vendor/bundle/ruby/1.8/gems/passenger-3.0.19;
  passenger_ruby /usr/bin/ruby1.8;

Ruby や Passenger のバージョンは環境によって違う。詳しくは、passenger-install-nginx-module のヘルプ・テキストを参照のこと。

次に Redmine を動かす site-availables/yourserver.com を編集。

server { ...
  listen 8080
  root /var/redmine-dev/public;
  passenger_enabled on;
  ...
}

これで nginx を再起動 (/etc/init.d/nginx については過去記事参照)。

上手く http://yourserver.com/ で Redmine が見えたかな?

あとがき

Redmine をアップグレードしようとしたら、二日がかりになってしまった。アップグレードは細めに行ないたいもの。ちょっと泣きそうになったよ。

最後に参考にしたサイトを一つ紹介して終わる。このページはまとまってるとは言いがたいけど、エラーに遭遇して対処して、またエラーに遭遇する様が物語の様で (特に同じ道を歩く者には) 笑いを誘う。もちろん、役にも立つよ。

No comments:

Post a Comment