【初めてのデプロイ】エラー頻出!
こんにちは!
さてさて、昨日は一日デプロイ作業をしていたのですが、エラー出すぎて進まない進まない、、特にCapistranoを使った自動デプロイ・・
デプロイでのエラー箇所を備忘録。
使用材料
・Nnginx
・Githubデクストップ
・railsアプリケーション(スクールのカリキュラムで作成)
エラー内容
・手動デプロイでは普通にデプロイできたのに、Nginx導入して”We're sorry, but something went wrong.”と言われた!
→これこの後もたくさん出てきた。今回はNginx導入・設定した後にインスタンスの再起動していなかったのが原因。AWSからインスタンス再起動。Unicorn・MySQL・Nginx再起動
・Railsにはアクセスできたがアプリケーションでユーザ登録しようするとまた”We're sorry, but something went wrong.”
→$cd ”アプリ名”/log/production.logで確認
"
Mysql2::Error: Table '作ったテーブル名' doesn't exist: SHOW FULL FIELDS FROM `作ったカラム名`):
"
MySQLエラー。どうやらDB登録でダメみたい
$rails db:migrate RAILS_ENV=production
でマイグレートしてみるとrails aborted!
中間テーブルがうまく作成されてない。(ローカル環境で何度も修正したりしてやり直したところ)そういえば型変更したりして、マイグレートファイルから読み込むだけじゃうまくいかないはずだった。
→ローカルで
$rake db:drop
マイグレーションファイル編集
$rake db:migrate
→サーバ上で
$rake db:migrate RAILS_ENV=production
・ローカルの変更をサーバに反映しようとしてgit pull origin master打つとエラー
”error: Your local changes to the following files would be overwritten by merge:
Gemfile.lock
Please commit your changes or stash them before you merge. Aborting”
gemfile.lockがローカルと違いますよエラー
おぉ、さっきいらないから消したよ、、確かにstashファイルにあったけどね、使わないからね。。という言い訳(ファイル消去は慎重に!)
→Githubデスクトップでプッシュされてないコミット探し出し、マスターの状態でbuckup取った上でそれっぽいものを全部プッシュ
(まだマージされてないブランチ探すには$git branch --no-merged)
→ファイルが幸いなことにgemfile.lockだったため、ローカルのgemfile.lock削除、bundle installで解決(ローカルとサーバで同じ状態になればいいらしい)
・ローカルから自動デプロイすると
(SSHKit::Runner::ExecuteError)
→unicornログ確認(サーバ)
$アプリケーション/current/log/unicorn.stderr.log
argumenterror ローカルで設定したSSH鍵などの項目が反映されていなかった様子。
インスタンス再起動・Nginx・MySQL再起動後時間をおくと自動デプロイコマンドが動いた
自動デプロイとは関係ないエラー
(ローカル)Git secretを導入しようとすると
$brew install git-secrets
でError: Permission denied @ utime_internal - /Users/○○/Library/Caches/Homebrew/.cleaned
権限ないエラー
→下記を参考にさせていただきました。
https://qiita.com/cutenkey/items/2505710b4c494bac152b
経過
他にもエラーでつまるつまる。
上記手順をスクールの方に手伝っていただきながら解決できたわけだけど、自力で解決できるようにならなければ。。
自分の作ったアプリケーションを公開するというだけでも、とてつもなく作業がいるんだなあと実感。しかも一般に公開されるわけだから、セキュリティの面も踏まえてここは慎重に手順も内容も覚えておかないとですね。
メモ
Capistranoについてまだ理解が曖昧。実際にどのタスクを自動でやってくれているのか。unicorn起動、サーバに接続くらいしかわかってない。ログ追えばわかるだろうからまとめる。(次の機会に・・)