【问题标题】:Capistrano-Puma Not Starting Puma ServerCapistrano-Puma 未启动 Puma 服务器
【发布时间】:2016-07-19 13:33:49
【问题描述】:

面临的问题

当我运行 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. 在服务器上,curl 0.0.0.0:9294 打印 curl: (7) Failed to connect to 0.0.0.0 port 9294: Connection refused
  3. 文件puma.pid在服务器上不存在,并且
  4. 如果我尝试在服务器上手动启动 Puma,它工作正常。

我的设置信息

这是我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. 如何解决?

谢谢。

更新:这里是带有 Capistrano 文件的 repo。我只留下了 Capistrano 部分(这是一个全新的项目):https://github.com/flyfy1/CodeRead/

【问题讨论】:

  • 从输出中,看起来 puma 确实启动了。是否有美洲狮日志可以告诉您为什么它可能会在之后立即死亡?
  • @will_in_wi 我没有找到任何 Puma Log.. 但我已将链接添加到 Capistrano 项目
  • 我在shared/logs/puma.access.logpuma.error.log找到了puma日志。

标签: ruby-on-rails capistrano3 puma


【解决方案1】:

问题

Capistrano-Puma 需要特定的shared directories,否则服务器将无法启动。

这些是:
tmp/pids
tmp/sockets log

解决方案

在 deploy.rb 中创建共享目录:

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

验证**

cap puma:start 说它已经启动但没有告诉你它然后失败。验证:

cap puma:status

ps -ax | grep puma

【讨论】:

    【解决方案2】:

    我刚刚遇到同样的问题,并解决了它。当你使用 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,不使用守护进程选项。

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

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

    【讨论】:

    • 很好的答案!显示如何找到问题的原因
    • 这告诉你出了什么问题,但不告诉你如何解决它......你能详细说明一下吗?
    • @Erick Maynard 在我的问题中,只需创建一个文件:/my_web_app_path/shared/log/puma_access.log
    猜你喜欢
    • 1970-01-01
    • 2016-09-13
    • 2021-05-03
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 2019-02-08
    相关资源
    最近更新 更多