sinataraサーバーをEC2の起動時に自動的に起動して、
さらにTwitterのStreaming APIを監視するRubyプログラムも同時起動するのに一苦労。

– chkconfigで起動するシェル (td_aircon) を作成

$sudo su
# cd /etc/init.d/
# touch td_aircon
# chmod 755 td_aircon
# vim td_aircon

td_airconの内容

#!/bin/sh
# chkconfig: 2345 99 10
# description: launch TD_AIRCON sinatra server

export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"

cd /home/ec2-user/aircon/aircon-api/
thin start -C thin.yml
ruby tweet_checker.rb

今回は、thinを使ってsinatraサーバーを起動するので、以下のファイルを作る。

$ cd ~/aircon/aircon-api/
$ touch config.ru
$ vim config.ru

config.ruの中身

require 'rubygems'
require 'sinatra'

require File.expand_path "app", File.dirname(__FILE__)
run Sinatra::Application

thinの設定ファイルをつくる

$ cd ~/aircon/aircon-api/
$ thin config -C thin.yml 

出来た thin.yml の中身のポート番号を変更


---
chdir: /home/ec2-user/aircon/aircon-api
environment: development
address: 0.0.0.0
port: 4567
timeout: 30
log: log/thin.log
pid: tmp/pids/thin.pid
max_conns: 1024
max_persistent_conns: 100
require: []
wait: 30
daemonize: true

自動起動をchkconfigに設定・確認する

# cd /etc/init.d/
# chkconfig --add td_aircon
# chkconfig --list