【发布时间】:2016-04-12 00:49:11
【问题描述】:
我在迁移我们的 rails 应用的 capistrano 部署以使其可以部署多个用户时遇到了一些麻烦。最初,我们在 /tmp 下为我们的 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
我们用于 unicorn 部署的 gem 是 capistrano-unicorn。我们正在使用 ruby 2.1.5、capistrano 2.15.7 和 unicorn 5.0.1。
【问题讨论】:
标签: ruby-on-rails ruby deployment capistrano unicorn