Na verdade, eu uso o script a seguir para iniciar / parar meus processos de trilhos de unicórnio. O script deve ser colocado no diretório /etc/init.d, neste caso, o nome canônico do arquivo é /etc/init.d/unicorn.
Nota: Para que este script funcione, as variáveis abaixo devem ser definidas corretamente.
#!/bin/bash
# /etc/init.d/unicorn
# ### BEGIN INIT INFO
# Provides: unicorn
# Required-Start: $network $remote_fs $local_fs
# Required-Stop: $network $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Stop/start unicorn
### END INIT INFO
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PROJ_NAME="<YOUR_PROJECT_NAME>"
PID_FILE=/var/run/$PROJ_NAME/unicorn.pid
OLD_PID_FILE=$PID_FILE.oldbin
PROJ_DIR=/var/www/$PROJ_NAME
TAG='[unicorn]'
UNICORN_CONFIG=config/unicorn.rb
DEPLOY_USER=deploy
RAILS_ENV=${RAILS_ENV:-production}
# Start the service
start() {
if [[ -f $PID_FILE ]]; then
logger -sit $TAG "There is a PID file in $PID_FILE. Service should be running"
exit 1
else
logger -sit "$TAG" "Trying to start server..."
su $DEPLOY_USER -c "bash -c 'cd $PROJ_DIR ; bin/unicorn_rails -c $UNICORN_CONFIG -E $RAILS_ENV -D'"
if [[ $? == 0 ]]; then
logger -sit "$TAG" "server started"
else
logger -sit "$TAG" "FAILED to start server"
exit 1
fi
fi
}
# Stop the service
stop() {
su $DEPLOY_USER -c "kill -TERM $(cat $PID_FILE)"
sleep 2
if [[ ! -f $PID_FILE ]]; then
logger -sit "$TAG" "Server stoped"
else
logger -sit "$TAG" "FAILED to stop server"
exit 1
fi
}
# Reload service
reload() {
logger -sit "$TAG" "Trying to reload server"
kill -USR2 $(cat $PID_FILE)
sleep 1
if [[ -f $OLD_PID_FILE ]]; then
logger -sit "$TAG" "Server reloaded"
else
logger -sit "$TAG" "FAILED to reload server"
exit 1
fi
}
restart() {
logger -sit "$TAG" "Restarting server"
kill -HUP $(cat $PID_FILE)
}
### main logic ###
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
*)
echo $"Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
Para que o sistema execute este script após a inicialização, você só precisa executar os seguintes comandos:
$ chmod +x /etc/init.d/unicorn
$ update-rc.d unicorn defaults