Redmine セットアップ手順

本手順は FreeBSD 9.x プラットフォームでの Redmine 2.3.x のセットアップを対象にしています。FreeBSD では Portsパッケージマネージャ を使用することで簡単にRedmineのインストールを行うことが出来ます。 以下のシステム構成で稼動させます。
  • Nginx(port 80) => Unicorn(Unix Domain Socket) => Redmine
  • Unicorn のワーカープロセスは redmine ユーザ、redmine グループで実行します

1. 前提作業

  • Nginxはセットアップ済みであること
  • 使用するデータベースはセットアップ済みであること

2. 依存パッケージ

Redmine2.3 が依存するパッケージは以下のとおりです。これらはRedmineをインストールする事で自動的にインストールされます。
  • ruby-1.9*
  • ruby19-gems-1.8.*
上記とは別にアプリケーションサーバーとして Unicorn もインストールします。
  • unicorn
Redmine では以下の任意のデータベースが使用出来ます。使用する予定のデータベースがセットアップされていない場合はセットアップする必要があります。
  • MySQL 5.0 以上
  • PorstgreSQL 8以上
  • SQLite 3

3. インストール手順

3.1. Redmineパッケージのインストール

Ports を使用して Redmine をインストールします。同時に依存するパッケージがインストールされます。
cd /usr/ports/www/redmine
make config
以下のオプションと使用するデータベースに応じてチェックを付ける。
  • [X] RMAGIC Enable Gantt Charts support
MySQLを使用する場合は MySQLのC bindingをインストールすることでパフォーマンスを向上させる事ができます。
make install
/usr/local/wwww/redmine にインストールされます。 以下のエラーが発生した場合
Installing RDoc documentation for nokogiri-1.5.0...
ERROR:  While generating documentation for nokogiri-1.5.0
... MESSAGE:   "\xE2" from ASCII-8BIT to UTF-8
下記の環境変数を設定することで回避できます。
setenv LANG "en_US.UTF-8"
setenv LC_ALL "en_US.UTF-8"

3.2. Redmineの設定

cd /usr/local/www/redmine/config
cp database.yml.example database.yml
vi database.yml
MySQLを使用する場合
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: my_password
SQLite3 を使用する場合
production:
  adapter: sqlite3
  database: /home/redmine/redmine.sqlite
  timeout: 5000
  encoding: utf8
セッションストア秘密鍵を生成する
cd /usr/local/www/redmine
rake generate_secret_token
テーブルとRedmineの管理者アカウントを作成します。
setenv RAILS_ENV production
rake db:migrate
任意でRedmineのデフォルトのロール、トラッカー、ステータス、ワークフロー、列挙項目の推奨設定をインポートする場合は以下のコマンドを実行します。
rake redmine:load_default_data
webrick で動作確認します。
cd /usr/local/www/redmine
ruby script/rails server webrick -e production
webrickが起動したらブラウザで http://localhost:3000/ を開いてください。RedmineのWelcomeページが表示されるはずです。webrickは開発向けの簡易アプリケーションサーバーですので、正常動作が確認できれば停止させます。

3.3. Nginx – Unicorn の連携設定

Nginx に Unicorn との連携の設定を追加します。
 vi /usr/local/etc/nginx/nginx.conf
編集内容
  • /redmine/以下のアクセスをすべてアプリケーションサーバー(Unicorn)にバイパスします
  • アプリケーションサーバー(Unicorn)との連携は Unix Domain Socket を使用します
http{
~ 省略 ~ 
    upstream backend-redmine {
        server unix:/tmp/unicorn.sock;
    }

~ 省略 ~ 
   server{
        location /redmine/ {
            proxy_pass http://backend-redmine;
        }
    } 
}
設定ファイルをテストします。
/usr/local/etc/rc.d/nginx configtest
問題が無ければNginx を再起動して設定を有効にします。
/usr/local/etc/rc.d/nginx restart

3.4. Unicornパッケージのインストール

Ports を使用してUnicornをインストールを行います。
cd /usr/ports/www/rubygem-unicorn
make install

3.5. Unicorn の設定

vi /usr/local/www/redmine/config/unicorn.rb
unicorn.rbを以下のように編集します。
  • Unix Domain Socket を使用して Nginx と連携します。
  • ワーカープロセス数はCPUコア数を目安にします。
  • redmine ユーザで Unicornのワーカープロセスを実行します
listen '/tmp/unicorn.sock'
pid "/tmp/unicorn.pid"
worker_processes 2
working_directory "/usr/local/www/redmine"
preload_app true
user "redmine" "redmine"
※ preload_app設定項目に true を指定するとワーカーをforkする前のアプリケーションの先読みを有効にします。 CoW(copy-on-write)効果によりメモリを節約できます。 redmine ユーザを adduser コマンドで追加します。
ユーザの設定内容
Usernameredmine
Full Nameredmine service user
Groupsredmine
Home/home/redmine
Shell/usr/sbin/nologin
ワーカープロセスがRedmineのファイルリソースにアクセス出来るようにアクセス権限を設定します。
chown -R redmine:redmine /usr/local/www/redmine/

4. 運用手順

4.1. Unicorn – Redmine の起動

cd /usr/local/www/redmine
unicorn_rails -D -E production --path /redmine -c config/unicorn.rb
ブラウザでアクセスした際に以下のエラーがログに出力され –path オプションを無視される場合は、 /usr/local/www/redmine/config.ru のファイルをリネームする等して、unicornに読ませないようにすることで 回避できます。
ActionController::RoutingError (No route matches [GET] "/redmine"):

4.2. Unicorn – Redmine の停止

 cat /tmp/unicorn.pid
 kill 上記で確認したPID

4.3. バックアップ

Redmine のアプリケーションデータは基本的にはデータベースに蓄積されていきますが、添付ファイルは files ディレクトリ以下に蓄積されます。従って以下のリソースをバックアップする必要があります。
  • Redmineのデータベース
  • /usr/local/www/redmine/files/*

5. 参考