AWSでCapistranoを利用した自動デプロイ設定をしています。
流れとしてEC2でインスタンスを作成→Rubyをインストール→Railsとデータベースの設定(Mysql)→GitHubにSSH鍵を登録→GiyHubからコードをクローン→本番環境の設定(Swap(スワップ)領域設定、本番環境でbundlerをインストール、railsの起動の設定、Nginxの設定まで完了させました。
その後、Capistanoを使用できるように設定をしているのですが、以下のようなエラーが出ている状態です。
unicorn.rb
1app_path = File.expand_path('../../../', __FILE__) 2 3 4worker_processes 1 5# currentを指定 6working_directory "#{app_path}/current" 7 8# それぞれ、sharedの中を参照するよう変更 9 10pid "#{app_path}/shared/tmp/pids/unicorn.pid" 11 12listen "#{app_path}/shared/tmp/sockets/unicorn.sock" 13 14stderr_path "#{app_path}/shared/log/unicorn.stderr.log" 15 16stdout_path "#{app_path}/shared/log/unicorn.stdout.log" 17#Railsアプリケーションの応答を待つ上限時間を設定 18timeout 60 19 20#以下は応用的な設定なので説明は割愛 21 22preload_app true 23GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true 24 25check_client_connection false 26 27run_once = true 28 29before_fork do |server, worker| 30 defined?(ActiveRecord::Base) && 31 ActiveRecord::Base.connection.disconnect! 32 33 if run_once 34 run_once = false # prevent from firing again 35 end 36 37 old_pid = "#{server.config[:pid]}.oldbin" 38 if File.exist?(old_pid) && server.pid != old_pid 39 begin 40 sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU 41 Process.kill(sig, File.read(old_pid).to_i) 42 rescue Errno::ENOENT, Errno::ESRCH => e 43 logger.error e 44 end 45 end 46end 47 48after_fork do |_server, _worker| 49 defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection 50end
しかし、自動デプロイをしようとすると以下のようなエラーで起動に失敗します。
#RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -Dを実行 #以下のエラー発生 `working_directory': config_file=config/unicorn.rb would not be accessible in working_directory=/var/www/current (ArgumentError) master failed to start, check stderr log for details
以下を確認してみたところ番号が違う為unicornが起動しないと考えています。この番号を合わせたいのですが、修正方法が分からず困っています。
#ps aux | grep unicorn ec2-user 4374 0.0 0.2 110536 2192 pts/0 S+ 13:19 0:00 grep --color=auto unicorn #cat shared/tmp/pids/unicorn.pid 4132
あなたの回答
tips
プレビュー