Capistrano-Puma没有启动Puma Server

son*_*gyy 3 ruby-on-rails puma capistrano3

问题面临

当我跑步时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...
Run Code Online (Sandbox Code Playgroud)

然而,

  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
Run Code Online (Sandbox Code Playgroud)

这是Capfile:

require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rails'
require 'capistrano/rvm'
require 'capistrano/puma'
require 'capistrano/puma/nginx'
Run Code Online (Sandbox Code Playgroud)

这是config/deploy/production.rb:

server 'aws', user: 'my-username', roles: %w{app db web}
set :puma_bind, 'tcp://0.0.0.0:9294'
Run Code Online (Sandbox Code Playgroud)

任何想法:

  1. 问题的原因是什么?
  2. 怎么解决?

谢谢.

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

小智 7

我只是遇到同样的问题,并修复它.当你使用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
Run Code Online (Sandbox Code Playgroud)

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

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

 No such file or directory @ rb_io_reopen - /my_web_app_path/shared/log/puma_access.log 
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案!显示如何找到问题的原因 (2认同)