0
Help us understand the problem. What are the problem?

posted at

Django デプロイ前後のエラー対処(初学者)

はじめに

こちらの記事はDjangoで作成したものをHerokuにてデプロイする際にエラーにとてもつまずいたので、また見返す用に作成しました。誰かのためになれば嬉しいです。

目次

  1. push前のエラー
  2. push後のエラー
  3. 参考文献

push前のエラー

「error: failed to push some refs to」について

Herokuで「git push heroku main」を実行する際に、以下のようなエラーが出ることがあります。

To https://git.heroku.com/<アプリ名>.git
![remote rejected]main -> main (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/<アプリ名>.git'

上記のエラーは、To から始まるログの前に複数行のログが表示されているのですが、その中にAbortingなど、エラーを示唆する文言があるエラー行があるのでそこを見ることで解決につながりました。
例えば、

Requested runtime (python-3.8.1) is not available for this stack ~.

のようなHerokuに対応していないPythonのバージョンを「runtime.txt」で指定する。
あるいは

remote:  !     Error while running '$ python manage.py collectstatic --noinput'.

というエラーもありました。
こちらのエラーは、「push」する前に、

heroku config:set DISABLE_COLLECTSTATIC=1

というふうにすることでエラーを解決できました。push後は、

heroku config:set DISABLE_COLLECTSTATIC=0

という様に戻すことを忘れないでください。

push後のエラー

デプロイした後にもいくつかのエラーが出ました。
1つ目は、
「Internal Server Error」です。
これについての1つ目の原因は、「settings.py」において、

DEBUG=False

を入れ忘れていたことです。凡ミスですね。
2つ目の原因は、
「Procifile」にありました。
「Procifile」は、BASE_DIRにありますが、このファイルを作成する際に「wsgi.py」のディレクトリ指定が間違っていたいことが原因でした。
このファイルのルールとしては、

web: gunicorn (あなたのプロジェクトのwsgi.pyがあるディレクトリの名前).wsgi

と書く必要があります。つまり、wsgi.pyがprojectディレクトリに入ってる場合は、以下の様に書きます。

web: gunicorn project.wsgi

2つ目のエラーはデータベースについてのエラーです。1つ目のエラーを解消し後で次の様なエラーが出てきました。

django.db.utils.OperationalError: no such table:

あれ、テーブルあるはずなのになとおもいましたが、調べていくとこれは、.gitignoreファイルでデータベースを無視する様に書いていたからでした。なので、.gitignoreから「db.sqlite3」を削除すれば解決しました。

参考文献

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?