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...
然而,
- 当我运行
bundle exec cap production puma:status
,它说它找不到文件puma.pid
,因此我觉得Puma没有运行,而且它没有运行, - 在服务器上,
curl 0.0.0.0:9294
打印curl: (7) Failed to connect to 0.0.0.0 port 9294: Connection refused
, - 服务器上不存在文件
puma.pid
,和 - 如果我尝试手动启动服务器上的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'
任何想法:
- 问题的原因是什么?
- 怎么解决?
谢谢。
更新:这是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