Capistrano-Puma没有启动Puma Server

时间:2016-03-31 08:07:48

标签: ruby-on-rails capistrano3 puma

问题面对

当我运行bundle exec cap production puma:start时,我得到了Puma成功启动的响应:

DEBUG [e4382d1e]    * Pruning Bundler environment
DEBUG [e4382d1e]
DEBUG [e4382d1e]    [2599] Puma starting in cluster mode...
DEBUG [e4382d1e]
DEBUG [e4382d1e]    [2599] * Version 3.0.2 (ruby 2.2.1-p85), codename: Plethora of Penguin Pinatas
DEBUG [e4382d1e]
DEBUG [e4382d1e]    [2599] * Min threads: 0, max threads: 16
DEBUG [e4382d1e]
DEBUG [e4382d1e]    [2599] * Environment: staging
DEBUG [e4382d1e]
DEBUG [e4382d1e]    [2599] * Process workers: 2
DEBUG [e4382d1e]
DEBUG [e4382d1e]    [2599] * Phased restart available
DEBUG [e4382d1e]
DEBUG [e4382d1e]    [2599] * Listening on tcp://0.0.0.0:9294
DEBUG [e4382d1e]
DEBUG [e4382d1e]    [2599] * Daemonizing...

然而,

  1. 当我运行bundle exec cap production puma:status时,它表示找不到文件puma.pid,因此我认为Puma没有运行,它不是正在运行,
  2. 服务器上的
  3. curl 0.0.0.0:9294打印curl: (7) Failed to connect to 0.0.0.0 port 9294: Connection refused
  4. 文件puma.pid在服务器上不存在,
  5. 如果我尝试手动启动服务器上的Puma,它可以正常工作。
  6. 我的设置信息

    这是Gemfile的一部分:

    gem 'puma'
    
    group :development do
      gem 'spring'
      gem 'capistrano', '~> 3.0'
      gem 'capistrano-rails'
      gem 'capistrano-rvm'
      gem 'capistrano3-puma'
    end
    

    这里是Capfile

    require 'capistrano/setup'
    require 'capistrano/deploy'
    require 'capistrano/rails'
    require 'capistrano/rvm'
    require 'capistrano/puma'
    require 'capistrano/puma/nginx'
    

    这里是config/deploy/production.rb

    server 'aws', user: 'my-username', roles: %w{app db web}
    set :puma_bind, 'tcp://0.0.0.0:9294'
    

    任何想法:

    1. 问题的原因是什么?
    2. 如何解决?
    3. 感谢。

      更新:这里是Capistrano文件的回购。我只剩下Capistrano部分(这是一个全新的项目):https://github.com/flyfy1/CodeRead/

2 个答案:

答案 0 :(得分:6)

我只是遇到同样的问题,并修复了它。当你使用cap puma:start时,你会在终端看到以下句子:

 puma:start
      using conf file /your_web_app_path/shared/puma.rb
      01 ~/.rvm/bin/rvm default do bundle exec puma -C /your_web_app_path/shared/puma.rb --daemon

在your_web_app_path / current /执行bundle exec puma -C /your_web_app_path/shared/puma.rb,没有deamon选项。

它会告诉你应用程序有什么问题。对我来说,它告诉我

 No such file or directory @ rb_io_reopen - /my_web_app_path/shared/log/puma_access.log 

答案 1 :(得分:0)

问题

Capistrano-Puma期望具体shared directories,否则服务器不会开始。

这些是:
  tmp/pids
  tmp/sockets log

解决方案

使用以下命令在deploy.rb中创建共享目录:

set :linked_dirs, %w(tmp/pids tmp/sockets log)

验证**

封面美洲狮:开始说它已经开始但是并没有告诉你它然后失败了。验证:

cap puma:status

ps -ax | grep puma