thin の自動起動スクリプト on Debian
サーバを再起動したときに,いちいち 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 だけにしたいというのもあるのです.まあ趣味の問題ですが.