当我运行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
在服务器上不存在,这是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/
答案 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