Capistrano-Puma没有启动Puma Server

问题面临

当我运行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文件的回购。 我只剩下Capistrano部分(这是一个全新的项目): https : //github.com/flyfy1/CodeRead/

我只是遇到同样的问题,并修复它。 当你使用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 

问题

Capistrano-Puma需要特定的共享目录,否则服务器将无法启动。

这些是:
TMP /的PID
tmp /套接字日志

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

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

validation**

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

 cap puma:status 

要么

 ps -ax | grep puma