我一直在迁移我们的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。