備忘録 Heroku に Django を iMac でデプロイして引っかかったところとか
公式の Getting Started with Django on Heroku とか Heroku で Django 動かす方法 を見ればなんとかなるんだけど、それでも個人的に幾つか詰まったりしたところがあったので、備忘録がてらに。しかし、出るわ出るわ 500 Internal Server Error(CGIスクリプトなどでエラーが出た)で本当に泣かされました 。
① Procfile
Procfile を作成、記述する作業があります。ここには、自分のプロジェクト名を書く必要がありました。ファイル名は Procfile で拡張子は無。
web: gunicorn hellodjango.wsgi --log-file - ^^^^^^^^^^^ ここを自分のプロジェクト名に書き換える。 my_project_name.wsgi みたいな。
② Settings.py
settings.py を書き換える箇所があるんですが、下のように書き換えてエラーで怒られました。
# 下の記述を全部コメントアウト # DATABASES = { "default: ... # ... # 新規に下記1行を追加。 DATABASES['default'] = dj_database_url.config()
しかし、これでは DATABASES が定義されていないとエラーで返されますので、次のように書き換え。
DATABASES = {}
DATABASES['default'] = dj_database_url.config()
heroku logs -t でログを確認すると ImportError: No module named DATABASES が発生していて手がかりを掴む(きっかけになったサイト)。
③ Django error in Heroku: “Please supply the ENGINE value”
Settings.py その2みたいなものです。実は dj_database_url.config() だけでは足りず、引数を与える必要がありました。
DATABASES = {} # DATABASES['default'] = dj_database_url.config() DATABASES['default'] = dj_database_url.config( default='postgres://user:pass@localhost/dbname' )
そうするとユーザ名?パスワード?DBのアドレス?ドメイン名?どこに書いてるの?みたいな感じになるのですが、以下のように DB を選択し、次のページの Overview タブで URL をそのままコピペするようなイメージです。
Django PostgreSQL DatabaseError: relation “categories” does not exist
④ runtime.txt
自分は Python3 を使っていますが、そのまま Heroku にあげると Python2 の環境になってしまいますので、以下の runtime.txt ファイルをプロジェクトのルートディレクトリに保管。
python-3.4.1
⑤ relation “categories” does not exist
model を修正したのに migrate を適用していなかったら出てきました。local の環境では migrate しなくても動いてたのにな...
Django PostgreSQL DatabaseError: relation “categories” does not exist
そのほか
Git チュートリアル コマンドの説明もあってわかりやすい。
heroku 上の DB の初期化
heroku pg:reset DATABASE
hobby dev の上限を超過して..
8415 sh git_push.sh 8416 sh git_push.sh 8417 cat tools/git_push.sh 8418 cat tools/postgresD.sh 8419 sh git_push.sh 8420 heroku login 8421 sh git_push.sh 8422 cat tools/git_push.sh 8423 git pull heroku maser 8424 git pull heroku master 8425 cat tools/git_push.sh 8426 sh git_push.sh 8427 git pull heroku master 8428 git pull 8429 sh git_push.sh 8430 heroku create 8431 heroku run python manage.py shell 8432 heroku run python manage.py syncdb 8433 history | grep heroku 8434 heroku run python manage.py syncdb 8435 python manage.py migrate 8436 heroku run python manage.py migrate