redmineをMongrelで動かす

こちらを参考にredmineMongrelで動かしてみた。ほとんどそのままの手順。

  • サーバ起動時に自動起動させる
  • /etc/init.d/ でstart, stop, restartできるようにする
  • 環境はCentOS 5

Mongrelの導入

後でいろいろ使えそうで、サービス登録も簡単らしいmongrel_clusterを使用する。

# gem install mongrel_cluster 
Bulk updating Gem source index for: http://gems.rubyforge.org
Install required dependency gem_plugin? [Yn]
Install required dependency mongrel? [Yn]
Select which gem to install for your platform (i386-linux)
 1. mongrel 1.0.3 (ruby)
 2. mongrel 1.0.2 (ruby)
 3. mongrel 1.0.2 (mswin32)
 4. Skip this gem
 5. Cancel installation
>1
Install required dependency cgi_multipart_eof_fix? [Yn]
Install required dependency daemons? [Yn]
Install required dependency fastthread? [Yn]

Mongrelを実行するユーザとグループを作成

railsadmin:www-data でMongrelデーモンを動作せさる。
redmine本体は/home/railsadmin/配下に設置する。

# groupadd www-data
# useradd -g www-data railsadmin
# chmod 770 /home/railsadmin/
# su - railsadmin
% wget http://rubyforge.org/frs/download.php/22783/redmine-0.5.1.tar.gz
% tar xvfz redmine-0.5.1.tar.gz
% mv redmine-0.5.1 redmine

redmine自体の設定は割愛。
基本的にはDBの設定だけで動く。

pidを書き込むディレクトリを作成

# mkdir /var/run/mongrel 
# chown :www-data /var/run/mongrel/
# chmod 775 /var/run/mongrel/

redmine起動用の設定ファイルへのリンク作成

現時点ではリンク先は存在しないが先に作成しておく。

# mkdir /etc/mongrel_cluster
# mkdir /etc/mongrel_cluster/redmine
# ln -s /home/railsadmin/redmine/config/mongrel_cluster.yml /etc/mongrel_cluster/redmine/

起動用の設定ファイルを作成

# su - railsadmin
% cd redmine/
% mongrel_rails cluster::configure -e production -p 4000 -a 0.0.0.0 \
-l /home/railsadmin/redmine/log/mongrel.log -P /var/run/mongrel/redmine.pid \
-c /home/railsadmin/redmine -N 1 --user railsadmin --group www-data

こんな感じに出力される。
config/mongrel_cluster.yml

---
user: railsadmin
cwd: /home/railsadmin/redmine
log_file: /home/railsadmin/redmine/log/mongrel.log
port: "4000"
environment: production
group: www-data
address: 0.0.0.0
pid_file: /var/run/mongrel/redmine.pid
servers: 1

起動スクリプトを作成

サンプルファイルをコピーして編集する。

# cp /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.3/resources/mongrel_cluster \
/etc/init.d/mongrel_cluster_redmine

/etc/init.d/mongrel_cluster_redmine
(全文)

 #!/bin/bash

CONF_DIR=/etc/mongrel_cluster/redmine
PID_DIR=/var/run/mongrel_cluster
USER=root

RETVAL=0

# Gracefully exit if the controller is missing.
which mongrel_cluster_ctl >/dev/null || exit 0

# Go no further if config directory is missing.
[ -d "$CONF_DIR" ] || exit 0

case "$1" in
    start)
      # Create pid directory
      mkdir -p $PID_DIR
      chown $USER:$USER $PID_DIR

      mongrel_cluster_ctl start -c $CONF_DIR
      RETVAL=$?
  ;;
    stop)
      mongrel_cluster_ctl stop -c $CONF_DIR
      RETVAL=$?
  ;;
    restart)
      mongrel_cluster_ctl restart -c $CONF_DIR
      RETVAL=$?
  ;;
    status)
      mongrel_cluster_ctl status -c $CONF_DIR
      RETVAL=$?
  ;;
    *)
      echo "Usage: mongrel_cluster {start|stop|restart|status}"
      exit 1
  ;;
esac

exit $RETVAL

実行権限つける。

# chmod 755 /etc/init.d/mongrel_cluster_redmine

常時起動するように設定

# chkconfig mongrel_cluster_redmine on