3

展開後にユニコーンを手動で停止および開始することによるダウンタイムを許容したい場合、アプリは正常に展開されます。ただし、ゼロ ダウンタイム ユニコーン設定を使用したいのですが、起動する新しいユニコーン プロセスが古いデプロイ リリース パスを参照しているため、機能していません。特別なことはなく、deploy.rb でキャップを再起動するだけです:

desc "Zero-downtime restart of Unicorn"
    task :restart, :except => { :no_release => true } do
        run "cd #{current_path}; #{try_sudo} kill -s USR2 `cat /var/www/appname/shared/pids/unicorn.pid`"
    end

keep_releasesビューが変更されない場合、1 または 2 に設定すると、起動しようとしているディレクトリが削除されたため、ユニコーンのログにエラーが表示されるため、間違ったディレクトリを参照していることがわかります。

/var/www/appname/shared/bundle/ruby/1.9.1/gems/unicorn-4.4.0/lib/unicorn/http_server.rb:425:in `chdir': No such file or directory - /var/www/appname/releases/20130330104246 (Errno::ENOENT)

私はこれを数週間オンとオフでデバッグしようとしています。これを機能させるための助けがあれば大歓迎です!

4

1 に答える 1

6

unicorn の起動時にこの環境変数を設定します

BUNDLE_GEMFILE=$APP_PATH/current/Gemfile

それ以外の場合は、特定のリリース ディレクトリを指し、説明した動作が発生します。

例えば。

cd $APP_PATH/current && BUNDLE_GEMFILE=$APP_PATH/current/Gemfile bundle exec unicorn_rails -c $APP_PATH/current/config/unicorn.rb -E $RAILS_ENV -D
于 2013-03-31T00:15:53.103 に答える