FreeBSD 9.1 jail環境にredmineを入れる(手抜き版)

FreeBSD 9.1-RELEASE-p5にredmineをインストールしたのでその際のメモ。

redmineはrubyやrailsやgemや諸々が関係してインストールに苦労する。特にrubyとrailsのバージョンで失敗しやすいので、他のWebサービスとの共存が必要ならapacheのmod_proxyで飛ばすことにして、ruby*が他とぶつからない様にjail環境を起こし動かすことにする。
基本的にcopy & paseteでインストール作業が進む様に纏めた(つもり)。

とか書いてるのに、いきなりjail環境はezjailでサックリ作ったので省略。
make → mysql-serverの設定 & redmine用DB作成 → redmineの設定 → apacheの設定 & 起動
の流れで進む。

redmineをpkgから入れるとrubyが1.8系列になるのでportsよりインストール。
※時間がかかるがひたすら待つ。
※2014-04-30追記: Release 10.0のPKGでは1.9系列になっているので今はpkgからインストールが一番簡単。

# cd /usr/ports/www/redmine
# make -DWITH_PASSENGER BATCH=yes install clean
# cd /usr/ports/databases/mysql55-server
# make BATCH=yes install clean

mysql-server設定ファイルの作成

# cp /usr/local/share/mysql/my-medium.cnf /usr/local/etc/my.cnf

mysql-serverをserviceで起動する為の記述を/etc/rc.cnfに追加

# echo mysql_enable="YES" >> /etc/rc.cnf
# echo mysql_args="--bind-address=xxx.xxx.xxx.xxx" >> /etc/rc.conf
  ※xxx.xxx.xxx.xxxはIP-Adressで置き換える事

mysql-serverの起動

# service mysql-server start

mysql rootパスワードの設定

# mysqladmin password <パスワード> -u root

redmine用ユーザーとDBの作成

# mysql -u root -p
Enter password:<パスワード>
mysql> create database redmine character set utf8;
mysql> create user 'redmine'@'localhost' identified by '<パスワード>';
mysql> grant all privileges on redmine.* to 'redmine'@'localhost';
mysql> flush privileges;
mysql> exit

redmineの設定ファイルのコピー
(重要)/usr/local/www/redmine/config.ruがrootユーザーのままだとpassengerがnobodyで動作するため開けないページが発生するのでwwwユーザーに変更しておく。

# cd /usr/local/www/redmine
# cp config/configuration.yml.example config/configuration.yml
# cp config/database.yml.example config/database.yml
# chown www config.ru

config/database.ymlのDBへの接続情報を修正

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine        # 作成しておいたユーザー名
  password: "<パスワード>"   # passwordを記載
  encoding: utf8

必要なgemの確認と不足分のインストール

# bundle install --without development test

セッションデータ改竄防止用鍵の作成、DBへのテーブル作成、デフォルトデータの登録。

# rake generate_secret_token
# rake db:migrate RAILS_ENV="production"
# rake redmine:load_default_data RAILS_ENV="production"

Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja
====================================
Default configuration data loaded.

公開用リンクの作成

# ln -s /usr/local/www/redmine/public /usr/local/www/apache22/data/redmine

apache22と連携するpassengerの設定ファイルを作成
※passengerを更新した場合はこちらも再度実施すること。

# passenger-install-apache2-module --snippet > /usr/local/etc/apache22/Includes/passenger.conf

apache22用redmine設定ファイルの作成

# echo "RailsBaseURI /redmine" > /usr/local/etc/apache22/Includes/redmine.conf

apache22を起動すればブラウザでアクセス可能になる。

# service apache22 start

※2014-04-30追記
rubygem-passengerのメンテナのミス? passenger-install-apache2-moduleのbuild時にopenssl hedersが見つからなくてbuildに失敗する事がある。(passenger-4.0.41)
FreeBSDは標準でヘッダーファイルが入っており、チェック方法のミスだけなので該当チェック部分を削除してbuildし直す事で回避。

# cd /usr/local/lib/ruby/gems/1.9/gems/passenger-4.0.41/bin
# cp -p passenger-install-apache2-module passenger-install-apache2-module2
## passenger-install-apache2-module2をエディタで開き、"openssl-dev"を検索して
## 該当行を削除する。
# passenger-install-apache2-module2 --snippet > /usr/local/etc/apache22/Includes/passenger.conf