##HerokuにデプロイしたWebサイトがひらけない
Application errorが発生した。
logを開いて詳細を見ろとあるが、logの見方がそもそもわからないので調べてみた。
このようなエラーが発生した。解読してみる。
2019-10-23T12:26:25.860762+00:00 heroku[router]: at=error code=H10
desc="App crashed" method=GET path="/favicon.ico"
host=urog.herokuapp.com request_id=2da7814a-4064-4aa8-9424-2dc03bbd8e7c
fwd="150.46.200.24" dyno= connect= service= status=503 bytes= protocol=https
##Heroku logの読み方
ログはこのような形式で出力される。
timestamp source[dyno]: message
timestamp:ログの出力時刻
source:ログの発生源
dyno:sourceより細かなログの発生源
つまり、
このログの出力時刻は2019-10-23T12:26:25.860762+00:00 で
このログの発生源はherokuのrouterである。
そしてそれ以降がメッセージ。そのメッセージの中身を見ていきます。
つまり、このエラーはherokuのrouterあたりが原因となっている。
###メッセージ前半
at:重要度(必ずinfoになる)
code:エラーコード
(詳細はここhttps://devcenter.heroku.com/articles/error-codes#h10-app-crashed)
desc:エラーに対する説明
つまり、このエラーメッセージは、
アプリがクラッシュしたエラー(H10)を示しており、
(descでも記載されている)
###メッセージ後半(HTTP関連)
method: HTTPリクエストのメソッドを表す
path: HTTPリクエストの リクエストターゲットの パス部分以降を表す
host:HTTPリクエストのリクエストターゲットのホスト部分を表す
request_id:HTTPリクエストのHerokuにおける識別子を示す
fwd:HTTPリクエストを送信したクライアントのIPアドレスを表す
dyno:HTTPリクエストを処理した仮想マシンの名称を示す
service:クライアントとHTTPリクエストを処理する仮想マシンとの間のデータのやりとりにかかった時間をミリ秒単位で表す
status:HTTPレスポンスのステータスコードを示す
bytes:HTTPレスポンスの長さをバイト単位で表す。
つまり、
urog.herokuapp.com/favicon.ico
に対してHTMLのGETメソッドを送ったときにエラーがでているのがわかる。
エラーの理由はサービスが停止していることだとわかる(503)。
結果、よくわからないが
heroku run rake db:migrate
したら動くようになり解決
ーーーーー
後日談
Railsの標準DBはSQLite
↓
Herokuの標準DBはPostgreSQL
Herokuで動かすためには本番環境のDBをSQLiteからPostgreSQLに変えないといけない。
そのために3つの手順が必要↓こちらを参考に
https://qiita.com/hmmrjn/items/e2dff8036fbbd74f049a