某フリマアプリを作成した際、AWSのEC2を利用して自動デプロイするとき、ものすごく手間がかかったので備忘録。
詰まったところをかいつまんで載せる。
まず
adapter: mysql2
database: (アプリ名)_production
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /var/lib/mysql/mysql.sock
をconfig/database.ymlに記載するわけですが、この記載場所は、
プロダクションのところに記述します。
例えば、
production:
<<: *default
adapter: mysql2
database: furima-(番号)_production
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /var/lib/mysql/mysql.sock
といった感じに。
次につまづきそうになるのが、
[ec2-user@ip-172-31-23-189 ~]$ cd /var/www/[リポジトリ]
[ec2-user@ip-172-31-23-189 <リポジトリ名>] git pull origin master
のところですが、昨今のGitではmasterではなくmainブランチという名称なので、
config/deploy.rbを
set :branch, "main" ←ここをmasterからmainにかきかえる
にする。
そして最後にCapistranoを使って自動デプロイする際は必ずローカルのターミナルで
% bundle exec cap production deploy
を実行する。
ここまででエラーがたくさん出たのですが、割愛。
大体がnginxでのエラーかマリアDB周りのエラーが多かった気がする。
nginxでエラーがでたらエラーログを見るわけですが、正直わからない・・・
マリアDBに関するエラーとしては最悪DBを一度作り直すという荒技があります。
参考リンク
https://qiita.com/potterqaz/items/ea6db5c5be2be389c0bb
あとはひたすらエラーとの勝負です。
nginxのエラーはとてもふりまわされたので、しっかり勉強したい。