私は、複数のユーザが展開できるように、私たちのrailsアプリケーションのカピストラ展開を移行することにいくつか問題がありました。もともとは、デプロイを行うユーザが所有する/ tmpの下にユニコンサーバ用のソケットがありました。これは、ファイルを変更する権限がないため、複数のユーザーでは機能しません。マルチユーザのCapistranoデプロイメント用にUnicornを設定する
私たちは、tmpディレクトリにあるアプリケーションの下にソケットファイルを置くという2番目の方法を試しました。各デプロイ後、ソケットファイルの所有権を、ユーザー間で共有されるデプロイヤーのグループにリセットします。これは、ユーザーによる最初の展開では機能しますが、同じユーザーが2回目の展開を行った場合は機能しません。別のユーザーがデプロイすると、正常に動作します。
基本的に私たちは、一人一人の人が一度に一度だけ配備できる配備システムになりました。 2回目以降の展開で、ユニコーンプロセスが正しく再起動されていないようです。最初に成功した展開のためのユニコーンログを配備では、このことを示しています
INFO -- : executing ["/var/www/dashboard/shared/bundle/ruby/2.1.0/bin/unicorn", "-c", "/var/www/dashboard/current/config/unicorn/production.rb", "-E ", "deployment", "-D", {11=>#<Kgio::UNIXServer:/var/www/dashboard/current/tmp/dashboard.socket>}] (in /var/www/dashboard/releases/20160405234438)
INFO -- : forked child re-executing...
INFO -- : inherited addr=/var/www/dashboard/current/tmp/dashboard.socket fd=11
INFO -- : Refreshing Gem list
INFO -- : reaped #<Process::Status: pid 22939 exit 0> worker=0
INFO -- : reaped #<Process::Status: pid 22942 exit 0> worker=1
INFO -- : reaped #<Process::Status: pid 22945 exit 0> worker=2
INFO -- : reaped #<Process::Status: pid 22948 exit 0> worker=3
INFO -- : master complete
INFO -- : worker=0 ready
INFO -- : worker=1 ready
INFO -- : worker=2 ready
INFO -- : master process ready
INFO -- : worker=3 ready
私たちはユニコーンの展開に使用している宝石がカピストラーノです:第二障害が発生したログは、次のようになります展開オン
INFO -- : Refreshing Gem list
INFO -- : listening on addr=/var/www/dashboard/current/tmp/dashboard.socket fd=11
INFO -- : worker=0 ready
INFO -- : worker=1 ready
INFO -- : worker=2 ready
INFO -- : master process ready
INFO -- : worker=3 ready
-ユニコーン。 Ruby 2.1.5、capistrano 2.15.7、unicorn 5.0.1を使用しています。