2016-04-12 6 views
1

私は、複数のユーザが展開できるように、私たちの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を使用しています。

答えて

1

ユニコーンは別のユーザーの下で実行する必要があります。wwwなど、個々の開発者には関係ありません。ユニコーンソケットは、他の場所、例えば、 /tmpにあります。オプション(gem readmeを参照)を使用して、指定したユーザーの下でCapistranoを再ロードまたは再起動させます。

また、パスワードを入力せずにwwwユーザーとしてコマンドを実行できるように、開発者グループにはsudoルールを設定する必要があります。これはdevelopersグループ内の任意のユーザーが実行する任意のコマンドをwwwユーザーとして、パスワードを与えることなく可能に:警告

%developers ALL=(www) NOPASSWD: ALL 

/etc/sudoersファイルにこのような何かを追加!よりクリーンで安全な方法は、ユニコンを起動するコマンドだけを許可し、再読み込み/停止などのための信号を送信することです。

関連する問題