LoginSignup
6
7

More than 5 years have passed since last update.

UnicornにUSR2シグナル送って、再起動する時、エラーが出る

Last updated at Posted at 2015-05-21

サーバーの環境

rbenv 0.4.0-129-g7e0e85b
ruby 2.1.0p0
Rails 4.1.6
capistrano 3.1.0

どんなバグでしょうか

デプロイの時に以下のコマンドで、unicornにUSR2シグナルを送って、再起動しています。

kill -USR2 `cat #{fetch :unicorn_pid_file}`

unicornのログを見ると、時々unicornを見つからなくて再起動できませんでした。

I, [2015-05-20T09:45:31.070833 #11781]  INFO -- : executing ["/var/www/pinpg_prot/releases/20150515054058/vendor/bundle/ruby/2.1.0/bin/unicorn_rails", "-c", "/var/www/pinpg_prot/current/config/unicorn.rb", "-E", "staging", "-D", {12=>#<Kgio::UNIXServer:fd 12>, 13=>#<Kgio::TCPServer:fd 13>}] (in /var/www/pinpg_prot/releases/20150520004521)
/var/www/pinpg_prot/current/vendor/bundle/ruby/2.1.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:475:in `exec': No such file or directory - /var/www/pinpg_prot/releases/20150515054058/vendor/bundle/ruby/2.1.0/bin/unicorn_rails (Errno::ENOENT)

おかしいかな、なんでbin/unicornは1vendor/bundleに置いたのでしょうか。
デプロイのログを確認してみたら、問題を発見しました。

bundle install --without development test --deployment --quiet

上記はgemをインストールしたコマンドですね。問題なのは--deploymentです。
--deploymentとは管理権限を持たないサーバーにデプロイする場合、プロジェクトディレクトリにvendorディレクトリを作成し、gemをインストールするというアプローチです。
管理権限を持つ場合、--deploymentが不要でしょうか。解決方法は--deploymentを外すだけで、すごく簡単です。config/deploy.rbに以下の設定を追加したら、解決完了です。

set :bundle_flags, "--quiet"
6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7