前提・実現したいこと
railsで作成した個人アプリをAWS上にデプロイを行いたいです。unicornの起動コマンド(下記)で以下のエラーメッセージが発生しました。
[ec2-user@ip-XXX-XX-X-XXX application]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
発生している問題・エラーメッセージ
ArgumentError: Already running on PID:3283 (or pid=/var/www/bucketList/tmp/pids/unicorn.pid is stale) /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:205:in `pid=' /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:137:in `start' /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/unicorn-5.4.1/bin/unicorn_rails:209:in `<top (required)>' /home/ec2-user/.rbenv/versions/2.5.1/bin/unicorn_rails:23:in `load' /home/ec2-user/.rbenv/versions/2.5.1/bin/unicorn_rails:23:in `<top (required)>'
関連ソースコード
#config/database.yml default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: socket: /tmp/mysql.sock development: <<: *default database: bucket_development test: <<: *default database: bucket_test production: <<: *default database: bucket_production username: root password: <%= ENV['DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock
ruby
1#config/unicorn.rb 2app_path = File.expand_path('../../', __FILE__) 3 4worker_processes 1 5 6working_directory app_path 7 8pid "#{app_path}/tmp/pids/unicorn.pid" 9 10listen 3000 11 12stderr_path "#{app_path}/log/unicorn.stderr.log" 13 14stdout_path "#{app_path}/log/unicorn.stdout.log" 15 16timeout 60 17 18preload_app true 19GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true 20 21check_client_connection false 22 23run_once = true 24 25before_fork do |server, worker| 26 defined?(ActiveRecord::Base) && 27 ActiveRecord::Base.connection.disconnect! 28 29 if run_once 30 run_once = false # prevent from firing again 31 end 32 33 old_pid = "#{server.config[:pid]}.oldbin" 34 if File.exist?(old_pid) && server.pid != old_pid 35 begin 36 sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU 37 Process.kill(sig, File.read(old_pid).to_i) 38 rescue Errno::ENOENT, Errno::ESRCH => e 39 logger.error e 40 end 41 end 42end 43 44after_fork do |_server, _worker| 45 defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection 46end
試したこと
エラーコードで検索したところ以下のページがヒットしたのでエラーメッセージにあるPID:3283をキルしてunicornの再起動をしても同様のエラーとなります。また、ターミナルやEC2インスタンスの再起動を行っても同様でした。
Railsを起動でUnicornのpidが原因で起きたエラーの対処法
補足情報(FW/ツールのバージョンなど)
ruby 2.5.1p57
Rails 5.2.4.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/17 03:12