91s

プログラミング関係、日記などを書きます

【Rails】EC2再起動時にunicornを起動する方法

はじめに

EC2の再起動に合わせてunicornを起動する必要があったのでそのメモを残しておきます。

最初から再起動時を何かしらで取得してそのタイミングで実行したいコマンドを設定しておく というところまでは直感でわかりましたが、何を使うかは調べないとわかりませんでした。

調べたところcronに@rebootという再起動時を指定できる方法があったのでそれを使用しました。

実際の設定

crontab -eを実行して、

@reboot sudo nginx start && {unicorn_railsのフルパス} -c {unicorn.conf.rbのフルパス} -D -E {RAILS_ENV(環境変数に入っていれば指定しなくてもok)}

と設定します。 これでOKです。

設定できているか確認する際は、crontab -lで、確認できます。

注意点

  • nginxを使用していない場合、もちろん前半は不要です
  • unicorn_railsのフルパスはwhich unicorn_railsで確認できます
  • 環境によってunicorn_railsのフルパスが異なる場合もありますので、stagingで書いた設定を本番サーバーでコピペしないように気をつけてください
  • unicorn_railsをフルパスにしないと、
/bin/sh: unicorn_rails: command not found

というエラーが出て失敗すると思います。

これは、cron実行時のPATHのせいだそうです。cronでPATHを通す方法もあるようですが、設定するコマンドの量が多くなかったので今回はwhichでフルパスを調べて設定しました。

環境変数について

6/9 追記

cronの実行時、環境変数が足りずに色々なエラーが起きる可能性があるので、

rvm cron setup

を実行するとrvmがいい感じに設定してくれます