หลังจากใช้ Teambox มาได้ครึ่งปีและคอยตามอัพเกรดพบว่า Teambox นั้นยังไม่ Stable เท่าไหร่แถมทรัพยากรที่ใช้ก็มากพอดู เมื่อวานเลยมองหาทางเลือกอื่นอีกครั้งเพื่อเอา Teambox ออกจากระบบ เริ่มแรกคิดว่าจะย้ายไปใช้ Service นอกอย่าง Flow แต่คิดไปคิดมาทำไมต้องเสียตังด้วย เลยมาจบลงที่ Redmine นี่แหละ
วิธีลง Redmine บน Nginx ถ้าค้นหาตัวไม่ส่วนใหญ่จะให้ใช้กับ Phusion Passenger™ ซึ่งถ้าเป็น Apache จะลงแล้วทำตามทันที แต่สำหรับ Nginx ความยากมันมีเพิ่มขึ้นมาเมื่อต้อง compile Nginx ใหม่เลยเปลี่ยนทางเลือกเป็น FastCGI แทน
สำหรับสิ่งที่ต้องเตรียมลงก่อนล่วงหน้าคือ nginx, spawn-fcgi (ถ้าใช้ Debian 5.0 ต้องลงจาก lighttpd), redmine (จะใช้จาก apt หรือดาวโหลดมาขยายลงแฟ้มซักแฟ้มก็ได้)
script สำหรับ start redmine ผ่าน spawn-fcgi ใน init.d
#! /bin/sh
#
# fcgi-hg Startup script for the nginx HTTP Server
#
# chkconfig: - 84 15
# description: Loading php-cgi using spawn-cgi
# HTML files and CGI.
#
# Author: Ryan Norbauer <ryan.norbauer@gmail.com>
# Modified: Geoffrey Grosenbach http://topfunky.com
# Modified: David Krmpotic http://davidhq.com
# Modified: Kun Xi http://kunxi.org
export RAILS_ENV=production
export LANG=en_US.UTF-8
PATH=/opt/python/bin:$PATH
DAEMON=/usr/local/bin/spawn-fcgi
FCGIHOST=127.0.0.1
FCGIPORT=9001
FCGIUSER=www-data
FCGIGROUP=www-data
FCGIAPP=/var/redmine/public/dispatch.fcgi
PHPCHILD=3
PIDFILE=/var/run/fcgi-redmine.pid
DESC="Redmine in FastCGI mode"
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
test -x $FCGIAPP || exit 0
start() {
$DAEMON -a $FCGIHOST -p $FCGIPORT -C $PHPCHILD -u $FCGIUSER -g $FCGIGROUP -f $FCGIAPP -P $PIDFILE 2> /var/log/redmine.err || echo -en "\n already running\n"
}
stop() {
kill -QUIT `cat $PIDFILE` || echo -en "\n not running"
}
restart() {
kill -HUP `cat $PIDFILE` || echo -en "\n can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: "
start
;;
stop)
echo -n "Stopping $DESC: "
stop
;;
restart|reload)
echo -n "Restarting $DESC: "
stop
# One second might not be time enough for a daemon to stop,
# if this happens, d_start will fail (and dpkg will break if
# the package is being upgraded). Change the timeout if needed
# be, or change d_stop to have start-stop-daemon use --retry.
# Notice that using --retry slows down the shutdown process somewhat.
sleep 1
start
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
exit 3
;;
esac
exit $?
ตามด้วย nginx config
server {
listen 80;
server_name redmine.local;
root /var/redmine/public;
gzip on;
location ~ \.fcgi$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9001;
}
location / {
root /var/redmine/public;
index dispatch.fcgi;
if (!-e $request_filename) {
rewrite ^/(.+)$ /dispatch.fcgi last;
}
}
}
เวลา start redmine ก็ตามด้วยสองคำสั่งคือ
#/etc/init.d/nginx start #/etc/init.d/fcgi-redmine start
หลังจากทำเสร็จลองเปรียบเทียบ memory ที่ใช้ระหว่าง Teambox กับ Redmine พบว่า Redmine ใช้น้อยกว่ามาก น่าประทับใจ คงได้อยู่กับ Redmine ไปอีกพอสมควร