capistrano部署后,ec2服务器中缺少puma.sock

在通过capistrano将生产ruby on rails项目部署到ec2上的实例后,我在nginx错误日志中收到以下错误。 亚马逊公共主机显示502 Bad Gateway nginx / 1.10.0(Ubuntu)。 我按照https://www.sitepoint.com/deploy-your-rails-app-to-aws/上的教程进行操作。当我运行cap生产部署时,似乎没有创建puma.sock。

2017/06/28 01:09:57 [crit] 12802#12802: *1 connect() to unix:/home/deploy/app_name/shared/tmp/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream, client: 173.198.30.2, server: localhost, request: "GET / HTTP/1.1", upstream: "http://unix:/home/deploy/app_name/shared/tmp/sockets/puma.sock:/", host: "host" 

以下是我的deploy.rb

 set :application, 'app_name' set :repo_url, 'git@github.com:github_account/app_name.git' # Edit this to match your repository set :branch, :master set :deploy_to, '/home/deploy/app_name' set :pty, true set :linked_files, %w{config/database.yml config/application.yml} set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system public/uploads} set :keep_releases, 5 set :rvm_type, :user set :rvm_ruby_version, 'ruby-2.3.3' # Edit this if you are using MRI Ruby set :puma_rackup, -> { File.join(current_path, 'config.ru') } set :puma_state, "#{shared_path}/tmp/pids/puma.state" set :puma_pid, "#{shared_path}/tmp/pids/puma.pid" set :puma_bind, "unix://#{shared_path}/tmp/sockets/puma.sock" #accept array for multi-bind set :puma_conf, "#{shared_path}/puma.rb" set :puma_access_log, "#{shared_path}/log/puma_error.log" set :puma_error_log, "#{shared_path}/log/puma_access.log" set :puma_role, :app set :puma_env, fetch(:rack_env, fetch(:rails_env, 'production')) set :puma_threads, [0, 8] set :puma_workers, 0 set :puma_worker_timeout, nil set :puma_init_active_record, true set :puma_preload_app, false 

请帮忙! 提前致谢!

在使用Capistrano和nginx安装Rails的EC2实例上工作时,我遇到了同样的错误

如果你得到502错误在需要’capistrano / puma’之后将install_plugin Capistrano::Puma添加到你的Capfile中。

尝试使用以下行

 set :puma_bind, "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock" 

代替

 set :puma_bind, "unix://#{shared_path}/tmp/sockets/puma.sock" 

我不知道Capistrano的新版本打破了整个环境。 我在deploy.rb的’3.8.2’处锁定了capistrano。 将其切换到3.5.0解决了问题。 -_-

我不知道,但最新版本的Capistrano Puma Gem遇到了同样的问题,但是……尝试接下来的两件事:

  1. 设置我猜部署用户在deploy.rb文件中。
设置:用户,'部署'
  1. 将此代码推送到您的github项目,然后运行命令“cap production deploy”两次。 我不明白为什么,但它对我有用。 我知道,这真的听起来很愚蠢但是我发现的解决方案。