サーバー起動時にRails Sを自動起動させる

起動・停止スクリプトを書く

vagrant/dev-starter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#! /bin/sh

case "$1" in

  start)
      cd /vagrant
      rails s -b 0.0.0.0 > /dev/null 2>&1 &
      ;;
  stop)
      kill -9 $(lsof -i tcp:3000 -t)
      ;;
esac

exit 0

コマンド打ちたくない人が開発できるようにするために書いたものなので、 Stopの挙動は適当です。

あとは実行権限も付与しておく。

1
chmod a+x dev-starter

サービス用のプログラムを書く

/etc/init.d/dev-starter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#! /bin/sh
### BEGIN INIT INFO
# Provides:          dev-starter
# Required-Start:    $network
# Required-Stop:
# Should-Start:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: 
# Description: 
### END INIT INFO

case "$1" in
  start)
    /vagrant/dev-starter start
    ;;
  stop)
    /vagrant/dev-starter stop
    ;;
  *)
    echo "Usage: service dev-starter {start|stop}" >&2
    exit 1
    ;;
esac

exit 0

ここも実行権限も付与しておく

1
chmod a+x dev-starter

サービスを登録する

1
2
 sudo apt-get install sysv-rc-conf
 sudo sysv-rc-conf dev-starter on

これでサーバーを再起動した時にrails sが起動してくれすはず。

ここまでするのなら、DevelopmentでUnicornを使ったほうがいいのではとも思っている。