我一直在遷移我們的rails應用程序的capistrano部署方面遇到了一些麻煩,以便讓多個用戶可以部署。最初,我們在用戶所擁有的/ tmp下爲我們的獨角獸服務器提供了一個套接字,該用戶將進行部署。這不適用於多個用戶,因爲他們沒有修改文件的權限。爲多用戶Capistrano部署設置Unicorn
我們嘗試了第二種方法,將套接字文件放在應用程序的tmp目錄下。每次部署後,我們將套接字文件的所有權重置爲用戶之間共享的部署者組。這可以用於用戶的第一次部署,但如果同一用戶連續進行第二次部署,則不會。如果不同的用戶部署,它可以正常工作。
基本上我們最終得到了一個部署系統,在這個系統中,每個人只需要一次部署一次,然後再請求另一個人部署一次。 看起來就像第二次又進一步部署時,獨角獸進程沒有正確重啓。在第一個部署麒麟日誌中成功部署顯示了這一點:
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
在第二次部署失敗的記錄是這樣的:
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
我們正在使用我們的麒麟部署創業板Capistrano酒店-獨角獸。我們使用的是ruby 2.1.5,capistrano 2.15.7和獨角獸5.0.1。