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