11375


rails + unicorn + nginx  
の環境でサイトを運営しています。

サイトに変更を加えた時、railsとunicornを再起動するのですが、終了してから起動するまでの間にアクセスするとnginxから500がかえってしまいます(当然ですが)。

このダウンタイムをなくするにはどうしたらよいのでしょうか。

ちなみに今は以下のコマンドを実行して再起動しています。

[code]

    kill -9 `cat /tmp/unicorn.pid`
    bundle exec unicorn -D -c /rails/config/unicorn_production.rb -E production
    
[/code]


CC BY-SA 3.0
2015-06-15T13:12:30.613
11372
2015-06-16T08:39:20.147
9149
question
ruby-on-rails ruby nginx unicorn
railsを再起動する時に500エラーを出さないようにしたい


[biola/turnout](https://github.com/biola/turnout)
を使うと、簡単にメンテナンス中の画面を表示することができます。

Gemfile

[code]

    gem 'turnout'
    
[/code]

bundle install

[code]

    $ bundle intall
    
[/code]

メンテナンスモードスタート

[code]

    $ rake maintenance:start
    
[/code]

メンテナンスモード終了

[code]

    $ rake maintenance:end
    
[/code]

参考サイト  
<http://morizyun.github.io/blog/turnout-maintenance-rails/>  
※ Capistranoと連携してデプロイ処理の一環としてメンテ画面を出すことも可能です。


CC BY-SA 3.0
2015-06-15T13:44:22.560
11375
2015-06-15T13:44:22.560
10150
11372
answer


SIGKILL（-9）ではなくUSR2シグナルを送れば良いです。

[code]

    kill -USR2 masterのPID
    
[/code]

そうすれば、旧プロセスを残しつつ新しいプロセスを起動できます。

  * <http://tachesimazzoca.github.io/wiki/rails3/unicorn.html>
  * <http://techracho.bpsinc.jp/piichan1031/2010_07_09/2075>


CC BY-SA 3.0
2015-06-16T08:39:20.147
11405
2015-06-16T08:39:20.147
9608
11372
answer