本手順は 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 コマンドで追加します。
Username | redmine |
---|---|
Full Name | redmine service user |
Groups | redmine |
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/*