Loading

Довелось не так давно сделать стартовый скрипт для приложения на ROR. Основные требования к приложению:

  • Ruby 2.1.4
  • Rails 4.1.8

Остальное ставилось согласно Gemfile

Сам стартовый скрипт(рабочий пример для Ubuntu 14.04 LTS):

#!/bin/sh

### BEGIN INIT INFO
# Provides: appname
# Required-Start:    $local_fs $remote_fs $network $syslog $named
# Required-Stop:     $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Appname APP
# Description: This file starts and stops Appname APP server
### END INIT INFO

INIT_PATH=/etc/init.d
. /lib/lsb/init-functions

export PATH=/usr/local/rvm/gems/ruby-2.1.4/bin:/usr/local/rvm/gems/ruby-2.1.4@global/bin:/usr/local/rvm/rubies/ruby-2.1.4/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

case "$1" in
 start)
   su - root -c 'cd /var/appname && rvm --default use ruby-2.1.4 && /usr/local/rvm/rubies/ruby-2.1.4/bin/ruby bin/rails s -d -b 127.0.0.1 -p 3000 -e production --pid /var/run/appname.pid'
   ;;
 stop)
   kill -9 $(cat /var/run/appname.pid)
   sleep 10
   ;;
 restart)
   kill -9 $(cat /var/run/appname.pid)
   sleep 20
   su - root -c 'cd /var/appname && rvm --default use ruby-2.1.4 && /usr/local/rvm/rubies/ruby-2.1.4/bin/ruby bin/rails s -d -b 127.0.0.1 -p 3000 -e production --pid /var/run/appname.pid'
   ;;
 *)
   echo "Usage: appname {start|stop|restart}" >&2
   exit 3
   ;;
esac

Потом нужно скрипту в /etc/init.d/ сделать chmod a+x /etc/init.d/appname && update-rc.d appname defaults