Я написал этот скрипт в config / thin_example.sh
#!/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
Сильно модифицировано из сценариев единорога, которые Райан Бейтс использовал в своем развертывании VPS (только для профессионалов) .
Сделать его исполняемым
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, чтобы потом его можно было убить.