หลังจากใช้ 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 ไปอีกพอสมควร