2016-04-12 37 views
1

Birden çok kullanıcının dağıtabilmesi için raylar uygulamasının capistrano dağıtımını gerçekleştirme konusunda bir sorun yaşıyorum. Başlangıçta, dağıtımı yapacak kullanıcı tarafından sahip olunan/tmp altındaki tek boynuzlu sunucu için bir soket vardı. Bu, dosyayı değiştirmek için izinlere sahip olmayacakları için birden fazla kullanıcıyla çalışmaz.Çok kullanıcılı Capistrano dağıtımı için Unicorn ayarlama

Soket dosyasını uygulama altında tmp dizinine yerleştirdiğimiz ikinci bir yaklaşım denedik. Her dağıtımdan sonra, soket dosyasının sahipliğini, kullanıcılar arasında paylaşılan dağıtıcı grubu grubuna sıfırlarız. Bu, bir kullanıcı tarafından ilk dağıtım için çalışır, ancak aynı kullanıcı bir satırda ikinci bir dağıtım yaptıysa olmaz. Farklı bir kullanıcı dağıtırsa, iyi çalışır.

Temel olarak, her bir kişinin başka bir kişiyi aralarında konuşlandırmasını istemek zorunda kalmadan önce her defasında yalnızca bir kez dağıtılabileceği bir dağıtım sistemi ile sonuçlandık. İkinci ve daha fazla dağıtılmış gibi görünüyor, tek boynuzlu at süreçleri düzgün yeniden başlatılmıyor.

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 

bizim tek boynuzlu at dağıtım için kullandığınız mücevher capistrano geçerli: İkinci başarısız günlük şöyle dağıtan On

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 

: İlk başarılı dağıtmak için tek boynuzlu günlüğünü dağıtmak bu gösteriyor -unicorn. Ruby 2.1.5, capistrano 2.15.7 ve unicorn 5.0.1 kullanıyoruz.

cevap

1

Tek bir geliştiriciyle (www) ilgili olmayan bir kullanıcı altında tek boynuzlu at 'u çalıştırmalısınız. Daha sonra tek boynuzlu atlı soket başka bir yerde olabilir, örn. /tmp. Capistrano'yu yeniden yüklemek veya verilen kullanıcı altında tek boynuzlu at sunucusunu yeniden başlatmak için unicorn_user seçeneğini kullanın (bkz. gem readme).

Ayrıca geliştiricileriniz için bir sudo kuralı oluşturmalısınız, böylece parola vermeden www kullanıcı komutlarını çalıştırabilirler. /etc/sudoers dosyaya böyle bir şey ekleyin:

%developers ALL=(www) NOPASSWD: ALL 

Uyarı: bu şifreyi vermeden www kullanıcı olarak herhangi komutu çalıştırmak için developers grubundaki herhangi bir kullanıcı sağlar! Daha temiz ve daha güvenli bir yaklaşım, tek boynuzlu atlayışa başlamak ve tekrar yükleme/durdurma için sinyalleri göndermek için sadece komutlara izin vermek olacaktır.

İlgili konular