備忘録 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