Tech-Joho.info

Django 1.11 Herokuでデプロイ

Python独学ならTech-Joho TOP > django入門/ > Django 1.11 Herokuでデプロイ

Herokuは無料枠もあるPaasです。
Djangoで作ったWebアプリケーションを無料で公開できます。

Ruby on Railsではよく使っていましたが、Djangoは初めてだったので試してみました。

参考
https://qiita.com/Shitimi_613/items/6627d0ce042d38b86893

アプリはこちらのやつ
Django 1.11 モデルの追加とマイグレーション

windows上で開発しているので、関連箇所あり。

> pip install django-toolbelt

Procfileを作成

web: gunicorn djangoTestApp2.wsgi --log-file -

runtime.txtを作成

python-3.6.2

requirements.txtを作成

pip freeze > requirements.txt

この後、pywin23の行を削除する
そのほか、pipにいらないパッケージがあった場合も削除
いるものだけ書けばよい

settings.py に追記

STATICFILES_DIRS = (
  os.path.join(BASE_DIR, 'static'),
)
# DATABASES~の下あたりに追記
import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=400)
DATABASES['default'].update(db_from_env)

djangoTestApp/wsgi.pyを変更

import os

from dj_static import Cling # これ追記
from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoTestApp.settings")

application = Cling(get_wsgi_application()) # ここ変更

Herokuのツールのインストール
https://devcenter.heroku.com/articles/heroku-cli

herokuでログイン

> heroku login
Enter your Heroku credentials:
Email: xxxx@xxxxx.net
Password: ************
Logged in as xxxx@xxxx.net

herokuのプロジェクト作成

> heroku create
Creating app... done, xxxx-xxxx-xxxx
https://xxxx-xxxx-xxxx.herokuapp.com/ | https://git.heroku.com/xxxx-xxxx-xxxx.git

注意!! 以下のようにすれば後々のビルドパックの指定がいらなかった

> heroku create --buildpack heroku/python

ここででてきたアプリのホストを、settings.pyに追加

ALLOWED_HOSTS = [
    'xxxx-xxxx-xxxx.herokuapp.com'
]

よくわからない設定(静的ファイル関係だと思うけど)

heroku config:set DISABLE_COLLECTSTATIC=1

デプロイ

git push heroku master

エラー出た

> git push heroku master
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (17/17), done.
Writing objects: 100% (19/19), 4.91 KiB | 1005.00 KiB/s, done.
Total 19 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote:  !     No default language could be detected for this app.
remote:                         HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
remote:                         See https://devcenter.heroku.com/articles/buildpacks
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to salty-river-85500.
remote:
To https://git.heroku.com/xxxx-xxxx-xxxx.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/xxxx-xxxx-xxxx.git';


webのほうで、Pythonのビルドパックを追加した

再度

git push heroku master

マイグレーション

> heroku run python manage.py migrate


アプリを開く

> heroku open