C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

setup: Redmine + Thin + Arch Linux

  • Redminesvnなりから入手。設定はRedmine.JPでも見ればよいかと。
    • pacman -S ruby // 1.9.2p0
    • gem install rails -v=2.3.14
    • gem install rack -v=1.1.1
  • sqlite3使うなら。
    • pacman -S sqlite3 // 3.7.10
    • gem install sqlite3 // 1.3.5
  • Thinもgemる。
    • gem install thin // 1.3.1

動作テストはredmineを置いた場所で、

thin -e production -p 45678 start

とか。

実際にこれで運用するつもりならデーモン化したりアレコレというわけで参考程度に起動スクリプトは下記な感じでどうぞ。

/etc/rc.d/thin-redmine とか作って、

#!/bin/bash

. /etc/rc.conf
. /etc/rc.d/functions

name=redmine
prog="/usr/bin/thin -e production -p 45678 -c /srv/http/redmine -d -u http -g http"

case "$1" in
start)
        stat_busy "Starting $name daemon"
        eval $prog start &>/dev/null \
        && { add_daemon $name; stat_done; } \
        || { stat_fail; exit 1; }
        ;;
stop)
        stat_busy "Stopping $name daemon"
        eval $prog stop &>/dev/null \
        && { rm_daemon $name; stat_done; } \
        || { stat_fail; exit 1; }
        ;;
restart)
        $0 stop
        sleep 2
        $0 start
        ;;
*)
        echo "usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

chmod +x しといて、 rc.d start thin-redmine とかなんとか試して問題が無ければ /etc/rc.conf の DAEMONS=() に入れるなりもすると良いでしょう。

thinのオプションについては thin --help で必要量の情報は出てきました。-dはデーモンモード、-cでディレクトリを指示、-uはユーザー、-gはグループ。

ちなみに、-Pでpidファイルのパスを指定もできると書いてあったけれど、同時にデフォルトではtmp/pids/thin.pidとか書いてあったので上記スクリプトではそのパスからcatでPIDを拾う事に・x・

実際にはこれにnginxなりApacheなりからリバースプロクシを設定して運用、かな。

<追記>

  • rc.dスクリプトでstopをPIDからkillする状態で初稿しましたが、thinのオプションで普通にstopできる&PIDとか直接触れずとも問題無いので、スクリプトを修正しました。
  • PIDファイルのテストコマンドも要らないのでスクリプトを修正しました。