- Django Girls Tutorial: Extensionsが終わったのでHerokuにデプロイしてみる
tutorial-extensions.djangogirls.org
- 後から読んだら参考になった記事
目次
- Django Girls Tutorialを参考に進める
- herokuはRuby on Rails以来で久しぶりに利用する
- 前に作ったアカウントあったのでそれでログイン
- djangogirls.orgのherokuページは情報が古そうだった
- 途中で簡単なPythonAnywhereを導入してherokuの方はあまり手をつけられてなそう気がする
- whitenoiseの設定をそのまま書くとエラーが出る
各ファイルの追加や修正
- requirements.txt
- 依存パッケージのリストを記述
- Procfile
- runtime.txt
- herokuで使用するpython version
- 古いと警告が出るらしい
python-3.7.4
- mysite/local_settings.py
- mysite/settings.py
- mysite/wsgi.py
heroku
- ログイン
- アプリケーションを名前をつけてcarete
- git commit後にherokuへpush
web processをstart、databaseをmigrateしたり
$ heroku ps:scale web=1 $ heroku run python manage.py migrate # 管理画面のsuper userを作成 $ heroku run python manage.py createsuperuser
エラーログの確認
- URLにアクセスしたがエラーが出ているような画面が表示される
- herokuのlogを確認してみる
- リクエストエラーコード503
$ heroku logs --tail
- 以下問題となりそうなエラー
django.core.exceptions.ImproperlyConfigured: WSGI application 'mysite.wsgi.application' could not be loaded; Error importing module. Your WhiteNoise configuration is incompatible with WhiteNoise v4.0 This can be fixed by following the upgrade instructions at: http://whitenoise.evans.io/en/stable/changelog.html#v4-0
- pipを確認すると入れているのはWhiteNoiseは5.0.1だったのだが…
- ここでgoogleや公式documentで調べたりする
- WhiteNoise4.0以降から書き方が変更となっているようだ
whitenoiseの記述修正
- mysite/wsgi.py ファイルの記述が問題のようだ
from whitenoise.django import DjangoWhiteNoise application = DjangoWhiteNoise(application)
- settings.pyのMIDDLEWAREに以下を記述する
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', #ここに書き足す。 # ... ]
再度deploy
- Djangoのstaticfiles(静的ファイル/アセットファイル)にもう少し詳しくなろうと思ったのでした
Djangoで使用するMiddlewareについても勉強が必要だ
PRが作成されていたけど拡張のプロジェクトはあまり動いてないのかな github.com