Redmineは、バグ管理システム(BTS:Bug Tracking System)用のツールから出発して、課題管理システム(ITS:Issue Tracking System)、そしてWikiや掲示板機能を備えているのでチームの情報共有ツールとしても使われています。最近は、「チケット駆動開発(TiDD)」の基盤ツールとしても使われています。
Redmineは最初BTSとして使い始め、あるプロジェクトにおいてチケット駆動開発に使い始めました。バージョンは0.8.xから、最後は2.0に至っています。
Redmineは、Ruby on Rails上で動作するアプリケーションで、動作環境にはRuby実行環境、Ruby on Railsフレームワークが必要です。また、Railsが対応するいずれかのデータベースソフトが必要です。
Redmineは1.3.xまでは大きな変化がなく順当にバージョンアップができましたが、2012年に入って、Ver.1.4.x、Ver.2.0.x、Ver.2.1.xとそれぞれ大きな構造変革がありました。
- Ver.1.4 - Ruby 1.9対応
- Ver.2.0 - Railsのバージョンを2.3から3.2に変更。Redmineの機能としてはVer.1.4と変わらず。
- Ver.2.1 - JavaScriptの基盤ライブラリをprototype+scriptaculousからjQueryに変更。Redmineの機能追加あり。
この構造変革によって大きなあおりを受けたのはプラグインです。RedmineのプラグインはRuby on Railsのプラグイン機構を使っているので、Railsのバージョンアップで作りが変わります。そこで、Redmine1.x用と2.x用でほぼ作り直しが発生します。
また、JavaScriptを使用しているプラグインについては、Redmine 2.0と2.1用とで作り直しが発生します。
このため、今年に入ってからのRedmineのバージョンアップには、プラグインの対応状況の確認が必須となります。
そこで、プラグインを用いずに運用しているならば、Redmine 2.1.2へのバージョンアップはしてもよいでしょう。プラグインを使用しており、今後も使用し続けたいのであれば、プラグインのRedmine 2.1対応を確認し、対応が必要なものについて対応された時点でバージョンアップを行うのがよいでしょう。
データ移行
一方、データ移行については、0.8.xの頃から2.1.xへと継続的にマイグレートしてきましたが、身の回りで移行に失敗した事例はありませんでした。このデータ移行の容易さについては驚きを感じています。
Redmine 2.1.2
Redmine 2.1.2は、2012年9月にリリースされました。しかし、プラグインの2.1系への追従が進んでおらず、実環境のバージョンアップは待機状態でした。
Redmineは標準で豊富な機能を搭載していますが、やはり不足する機能があって、いくつかプラグインを追加しています。その中の主要プラグイン Wiki Extensionsが数日前にRedime 2.1対応されました。
Wiki Extensionsを使ってWikiページを作成しているので、Wiki Extensionsがないと、記述のところどころにマクロ文がそのまま表示されてしまい、ちょっと利用に耐えられない状況になってしまいます。
これで、2.1.2へのアップデートもOKです。なお、Code Reviewプラグインも昨日2.1.2対応したとのアナウンスがあったので、バージョンアップの良いタイミングとなりました。
以下に、CentOS 6上にRedmine 2.1.2をインストールする記述(プラグインの設定を含む)を記載しています。
Unicorn
Redmineは、Ruby on Rails上で動くアプリケーションなので、動作にはRuby(Ruby on Rails)プログラムを実行可能なHTTPサーバーが必要になります。
Redmineのセットアップを確認するために、Rubyに付属のWebrickで動かすことがありますが(インストール手順では大抵Webrickでの確認を含めている)、本格的に運用するには、それなりのサーバーを使用します。
そこで、よく使用されるのがPassenger+Apacheです。PassengerはApacheのモジュールとして作られているので、Apacheと一緒に使用します。Redmineのセットアップでは大抵Apache+Passengerが使われます。
ところが、Redmineのバージョンアップ検証にあたって、同一マシン上でVer.1.3系のRedmine(運用中)をApache+Passengerで動かしており、別にVer.2.0/2.1系のRedmineを評価のために動かしたいという状況で、Passengerでは対応が難しいことに気づきました。Passengerの場合、複数Railsアプリケーションを同一プロセスで扱うことになります。また、評価目的のため始終サーバーを上げ下げするので、運用中のRedmineとは分けたいのです。
そこで、よく話題になっているNginx+Unicornを使うことにしました。
実はUnicornだけでHTTPサーバーになるので、評価だけならNginx不要でした。
Unicornはマスター/ワーカープロセス構造で、1ワーカープロセスは1つのリクエストを処理する作りとなっています。
設定ファイル/自動起動スクリプトは用意されていないので、自前で作成する必要があり、少し手間がかかります。
セットアップについては、上述のWebページに記載しています。
Nginx
インターネット上で公開されているWebサイトで使われているHTTPサーバーのシェア第3位がNginxだそうです(1位はApache、2位はMicrosoft IIS)。
Nginxもマスター/ワーカープロセス構造で、1ワーカープロセスはデフォルト設定では1024接続まで対応します。
CentOS用RPMが用意されているので、インストールは簡単でしたが、設定を理解するのに難航しました・・・。
セットアップについては、上述のWebページに記載しています。
メモ
Passengerも次のバージョン(4.0)では大きく改善されるそうです。4.0新機能を紹介しているブログがありました。