スタッフブログ

  • 最新配信
  • RSS

実運用向けRedmine環境構築

 : 技術全般 2009/6/15 10:27

Blogger's Avatar

satoです。

今週末に札幌でオープンソースカンファレンス2009 Hokkaidoがあります。
私もRedmineについて話す予定ですので、北海道の方は是非お越し下さい。

さて、Redmineを普通に使うには、Redmine.jpという、日本語でRedmineの情報を集めたサイトがありますので、こちらをご覧頂けると大体問題なく使えるのですが、実運用になると何かと問題が発生します。
Redmine.jpではPassengerを使用した方法が書かれていますが、Passengerは動作が安定しないことがあり、個人的にはまだ実用するには不安が残ります。

そこで、Railsアプリ運用では一般的だと思われる、mod_proxy_balancerとThinを組み合わせた運用方法について説明します。
WEBrick(素の状態でruby script/serverで起動するサーバ)のRedmineの起動ができていることを前提とします。

■Thin
Thinは、RubyのWebサーバで、Mongrelを内部でパーサとして使用しており、かつMongrelより高速なのが特徴です。

まずインストールをします(以下ほとんどsudo等の管理者権限で実行することになります)
gem install rack
gem install thin
これだけでThinを使うことができます。

なお、Ubuntuで
extconf.rb:1:in `require': no such file to load -- mkmf (LoadError)
のようなエラーが出た場合は、
sudo aptitude install ruby1.8-dev
として、ruby1.8-devをインストールすると解決します。

これだけでもいいのですが、このままでは起動が面倒です。また、1プロセスしか存在しないため、1プロセスが死ぬと繋がらない状態になります。
Thinには、両方とも解決する機能が搭載されており、起動スクリプトの自動生成と、クラスタ化ができるようになっております。

thin install
で、/etc/init.d/にthinが入ります。
ですが、このままだと起動できないので、起動用の設定ファイルを別途出力します。

thin config -C /etc/thin/redmine.yml -c /path/to/redmine/ --servers 3 -e production

Thinの起動スクリプトは、/etc/thin/*.ymlを読み込みます。そのため、そこに設定ファイルを出力します。
/path/to/redmine/はRedmineのパス、--servers 3はプロセスを3つ立ち上げる、-e productionはproduction環境で実行する、ということになります。
出力される/etc/thin/redmine.ymlは名前の通りYAMLですので、簡単に修正することができます。使用するポート番号の範囲とかも書かれているので確認しておいてください。

ここまでできたら、
/etc/init.d/thin start
で、Redmineが起動します。必要に応じてchkconfig thin onなどでサーバ起動時に起動するようにしておきましょう。

■mod_proxy_balancer
mod_proxy_balancerは、Apache2.2から導入されたソフトウェアのロードバランサモジュールです。
今回はThinを複数プロセス起動しているので、これを使用して1つのURLでアクセスできるようにします。

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName redmine.example.com
    
    ProxyPass / balancer://redmine_cluster/
    ProxyPassReverse / balancer://redmine_cluster/
    <Proxy balancer://redmine_cluster/>
        BalancerMember http://127.0.0.1:3000 loadfactor=20
        BalancerMember http://127.0.0.1:3001 loadfactor=20
        BalancerMember http://127.0.0.1:3002 loadfactor=20
    </Proxy>
    
</VirtualHost>

大体こんな感じです。
BalancerMemberで、立ち上げたThinのURLをプロセス分記入します。

ロードバランサだけならPoundやNginxとかでもいいのですが、通常Redmineだけでサーバ1つ占有することはないと思いますので、大体入っていると思われるApacheを使って設定するのが便利だと思います。

■余談
リポジトリ画面は、そのままだと毎回取得して遅いので、本番環境では必ずcronで取得するようにしましょう。
詳細はRedmine.jpの記事をご覧下さい。

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.