サーバを再起動したときに,いちいち mongrel/thin を立ち上げないといけないのがどうもなーと思っていたので,さっと書いてみました.
まずは下記ファイルを /etc/init.d/webapp とかに保存します.
#!/usr/bin/env bash
### BEGIN INIT INFO
# Provides: webapp
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop thin application server
### END INIT INFO
PATH=$PATH:/opt/ruby-enterprise/bin
BASEDIR=/var/repos/webapp
CURRENT_NAME=$BASEDIR/current
THIN_CONFIG=$BASEDIR/shared/config/thin.yml
case $1 in
start)
thin -c $CURRENT_NAME -C $THIN_CONFIG start
;;
stop)
thin -c $CURRENT_NAME -C $THIN_CONFIG stop
;;
restart)
thin -c $CURRENT_NAME -C $THIN_CONFIG stop
thin -c $CURRENT_NAME -C $THIN_CONFIG start
;;
*)
echo "Usage: webapp (start|stop|restart)"
;;
esac
そしておもむろに
$ sudo chmod a+x /etc/init.d/webapp
$ sudo update-rc.d webapp start 95 2 3 4 5 . stop 20 0 1 6 .
$ sudo invoke-rc.d webapp start
Starting server on 0.0.0.0:4000 ...
と入力すると自動的に thin が起動します.mongrel や他のサーバを使う場合は適宜書き換えてみてください.
「Passenger 使えばいいじゃん」と言われそうですが,Passenger は Apache/Nginx とか入れないとダメだし,「gateway -> App server」みたいな構成だと thin だけにしたいというのもあるのです.まあ趣味の問題ですが.
comments powered by Disqus