我在 config/thin_example.sh 中编写了这个 shell 脚本
#!/bin/sh
set -e
# Feel free to change any of the following variables for your app:
TIMEOUT=${TIMEOUT-60}
APP_ROOT=/home/deployer/apps/example/current
PID=$APP_ROOT/tmp/pids/thin.pid
CMD="cd $APP_ROOT; bundle exec rackup -D -P $PID $APP_ROOT/config/faye.ru -s thin -E production"
AS_USER=deployer
set -u
startme() {
run "$CMD"
}
stopme() {
run "pkill -f $PID"
}
run () {
if [ "$(id -un)" = "$AS_USER" ]; then
eval $1
else
su -c "$1" - $AS_USER
fi
}
case "$1" in
start) startme ;;
stop) stopme ;;
restart) stopme; startme ;;
*) echo "usage: $0 start|stop|restart" >&2
exit 1
;;
esac
从 Ryan Bates 在他的VPS 部署 railscast (pro only)中使用的独角兽脚本进行了松散的修改。
使其可执行
chmod +x config/thin_example.sh
您需要将其符号链接到 init.d (在 chmod +x 之后使其可执行)
sudo ln -nfs /home/deployer/apps/example/current/config/thin_example.sh /etc/init.d/thin_example
然后,如果您希望它与服务器一起启动
sudo update-rc.d thin_example defaults
否则你应该能够/etc/init.d/thin_example [start|stop|restart]
。需要注意的重要一点是,我告诉 rackup 以守护程序模式 (-D) 启动并显式设置 PID,以便以后可以将其终止。