wa-yu_snj
@wa-yu_snj (わーゆ)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

capistranoによる自動デプロイ時のエラー

解決したいこと

Ruby on Railsによるwebアプリケーションの自動デプロイを導入後、アクセスが出来なくなった為、これを解決したいと思っています。

発生している問題・エラー

[9ba7caf5-3928-481c-9390-3ed926a4b38b] ActionController::RoutingError (No route matches [POST] "/api/jsonws/invoke"):
[9ba7caf5-3928-481c-9390-3ed926a4b38b]   
[9ba7caf5-3928-481c-9390-3ed926a4b38b] actionpack (6.0.3.3) lib/action_dispatch/middleware/debug_exceptions.rb:36:in `call'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] actionpack (6.0.3.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] railties (6.0.3.3) lib/rails/rack/logger.rb:37:in `call_app'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] railties (6.0.3.3) lib/rails/rack/logger.rb:26:in `block in call'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] activesupport (6.0.3.3) lib/active_support/tagged_logging.rb:80:in `block in tagged'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] activesupport (6.0.3.3) lib/active_support/tagged_logging.rb:28:in `tagged'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] activesupport (6.0.3.3) lib/active_support/tagged_logging.rb:80:in `tagged'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] railties (6.0.3.3) lib/rails/rack/logger.rb:26:in `call'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] actionpack (6.0.3.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] actionpack (6.0.3.3) lib/action_dispatch/middleware/request_id.rb:27:in `call'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] rack (2.2.3) lib/rack/method_override.rb:24:in `call'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] rack (2.2.3) lib/rack/runtime.rb:22:in `call'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] activesupport (6.0.3.3) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
[9ba7caf5-3928-481c-9390-3ed926a4b38b] actionpack (6.0.3.3) lib/action_dispatch/middleware/executor.rb:14:in `call'

環境

Mac Catalina
Ruby 2.6.5
Ruby on Rails 6.0.0
Mysql
AWS
unicorn
Nginx
capstrano3

自分で試した事

以下、ルーティングエラーが発生していた為、routes.rbとrails routesでルーティングを確認しましたが、下記のようなルーティングは存在せず、また、開発環境では問題なくアクセスできる状況です。
ActionController::RoutingError (No route matches [POST] "/api/jsonws/invoke"):

また、手動でサーバーを再起動させてみたところ、unicornが起動せず、以下のようなエラーが発生しました。

/home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/unicorn-5.4.1/lib/unicorn/configurator.rb:592:in `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

capstranoのデプロイコマンド自体は問題なく完了するので、原因がどこにあるのか見当が付かず、手がつけられない状況です。何かお分かりの方がいらっしゃればご教授いただければと思います。

0

1Answer

unicornのエラーについて

同じ症状になったことがないので詳しくは分かりませんが、

手動でサーバーを再起動させてみたところ、unicornが起動せず、以下のようなエラーが発生しました。

この件については、capistranoを導入したことでデプロイ先のサーバーのディレクトリの構成が変わり、unicorn側が新しいディレクトリの情報を読めていないことが原因ではないでしょうか。

今のプロジェクトの設定ファイルの構成がどうなっているかは私には分かりませんが、例えばcapistranoの、config/deploy.rbなどの設定と、unicornの、config/unicorn.rbなどの設定に食い違いが生じていないかを確認してみるのはどうでしょうか。

  1. デプロイ先のサーバーのどこにファイルをデプロイしているのか確認する(例:/var/www/app/currentなど)
  2. unicornの設定でunicorn.sockなどの場所の設定が正しい位置になっていることを確認する
unicorn.rb
# unicornの設定をcapistranoの構成に合わせる。例えばこんな感じ
app_path = '/var/www/app'
working_directory File.join(app_path, 'current')

listen "#{app_path}/shared/tmp/sockets/unicorn.sock"
pid "#{app_path}/shared/tmp/pids/unicorn.pid"

その他

/api/jsonws/invokeはliferayというフレームワーク? サービス? でそういうAPIが定義されるようですが、私は全然知りません。無関係だったらごめんなさい。

参考

https://capistranorb.com/documentation/getting-started/structure/
https://teratail.com/questions/229963

0Like

Your answer might help someone💌