私はRails 5アプリケーションをAWS EC2インスタンスにデプロイするためにCapistranoを使用しています。私が入力したとき:Capistrano puma:再起動しませんが、puma:startは
cap production deploy
事はスムーズに進み、展開は成功です。しかし、プーマを再起動するプロセスは機能していません。私のように見る最後のタスク:
puma:restart
01 ~/.rvm/bin/rvm ruby-2.4.0 do bundle exec pumactl -S /home/deploy/myapp/shared/tmp/pids/puma.state -F /home/deploy/myapp/s…
01 Command restart sent success
しかし、私は私のウェブサイトを訪問したときに、私は以下を参照してください
502 Bad Gateway
nginx/1.4.6 (Ubuntu)
がcap production puma:status
を行うには、プーマが実行されていないことを私に警告します。興味深いことに、cap production puma:start
次エコーで完璧に動作します:私は問題が何であるかを見つけるためにしようとして数時間を費やしている
puma:start
using conf file /home/deploy/myapp/shared/puma.rb
01 ~/.rvm/bin/rvm ruby-2.4.0 do bundle exec puma -C /home/deploy/myapp/shared/puma.rb --daemon
01 Puma starting in single mode...
01
01 * Version 3.9.1 (ruby 2.4.0-p0), codename: Private Caller
01
01 * Min threads: 0, max threads: 8
01
01 * Environment: production
01
01 * Daemonizing...
01
。再起動やphased_restartタスクの代わりにPumaサーバーを起動すると、問題を回避できます。しかし、これを引き起こす原因は何ですか?私は2週間前に同様のアプリをデプロイしました(APIのみのアプリでした)、問題なく動作しました。ここで
は私deploy.rbです:
lock "3.8.2"
set :application, "myapp"
set :repo_url, "[email protected]:myorg/myapp.git"
# set :branch, :master
set :branch, :release
set :deploy_to, '/home/deploy/myapp'
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 :linked_dirs, %w{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.4.0'
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"
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
私のconfig /展開/ production.rb:
server 'myapp.com', user: 'deploy', roles: %w{web app db}
マイpuma.rb:
#!/usr/bin/env puma
directory '/home/deploy/myapp/current'
rackup "/home/deploy/myapp/current/config.ru"
environment 'production'
daemonize true
tag ''
pidfile "/home/deploy/myapp/shared/tmp/pids/puma.pid"
state_path "/home/deploy/myapp/shared/tmp/pids/puma.state"
stdout_redirect '/home/deploy/myapp/shared/log/puma_error.log', '/home/deploy/myapp/shared/log/puma_access.log', true
threads 0,8
bind 'unix:///home/deploy/myapp/shared/tmp/sockets/puma.sock'
workers 0
prune_bundler
on_restart do
puts 'Refreshing Gemfile'
ENV["BUNDLE_GEMFILE"] = "/home/deploy/myapp/current/Gemfile"
end
私は本当に立ち往生していますここに。数時間の研究の後でさえ、私はうまくいく解決策を見つけることができません!
capistrano3-pumaの宝石のバグであるようです:https://github.com/seuros/capistrano-puma/issues/237 –
リンクがありがとうございました。それは私の心を安心させます。 この問題を解決する過程で、私はイライラしていましたが、カピストラーノについて何も知らないことから、それについて公正なアイデアを得ることに行きました。問題が修正されるまで、私は仕事をモッキーにしました。私は猿パッチを答えとして共有しています - あなたがこれが良いと思うか、より良い選択肢があるかどうかを私に知らせてください。 – arunt