ブログでのアウトプット習慣が染み付いてきてコード書きたい!!的な欲望が出てきました。そこで、目に見える成果としてWEBアプリケーションを作ってみることにしました。まずは公開する手順をさっさと身につけようと思い、Djangoをherokuにあげてみることにしました。これはその手順です。
ほぼこちらの記事通りにやりましたが、バージョンが違ったり、ところどころ躓いたところがあったので、 自分なりにアレンジしているところがあります。
TL;DR
- Djangoをherokuにあげるよ
- WEBアプリケーションを公開できるよ
- やった気になれる(戒め
目次
- 前提条件
- Djangoのプロジェクトを作成する
- gitにプッシュする
- Herokuにデプロイする
前提条件
Djangoのアプリを作成する
仮想環境に入ります。 まずは、仮想環境を作成しDjangoをインストールする。
YOUR PC:workspace user$mkdir django_heroku YOUR PC:workspace user$python -m venv django_heroku/ YOUR PC:workspace user$cd django_heroku/ YOUR PC:django_heroku user$ source bin/activate (django_heroku) YOUR PC:django_heroku user$ pip install django (django_heroku) YOUR PC:django_heroku user$ pip install django-toolbelt
プロジェクトを作成し、マイグレーションをする
(django_heroku) YOUR PC:django_heroku user$ django-admin.py startproject config ./ (django_heroku) YOUR PC:django_heroku user$ python manage.py migrate
サーバを起動する
(django_heroku) YOUR PC:django_heroku user$ python manage.py runserver Performing system checks... System check identified no issues (0 silenced). June 16, 2018 - 07:19:32 Django version 2.0.6, using settings 'config.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
ブラウザを立ち上げて
http://127.0.0.1:8000/にアクセスし、下の画面が出れば成功。(versionによっては違う画面が出ることがあるかも知れません

gitにプッシュする
vim .gitignoreでファイルを作成する
*.pyc staticfiles db.sqlite3
gitにコミットとプッシュする
git init git add . git commit -m "create Django app"
Herokuにデプロイする
foremanが最新バージョンだと動かないらしいので、0.61をインストールする
gem install foreman -v 0.61
Procfileファイルとrequirements.txtファイルを作成する
echo "web: gunicorn config.wsgi --log-file -" > Procfile pip freeze > requirements.txt
vim config/settings.pyでsettings.pyの末尾に下記の内容を追加する
# Parse database configuration from $DATABASE_URL
import dj_database_url
db_from_env = dj_database_url.config()
DATABASES['default'].update(db_from_env)
# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# Allow all host headers
ALLOWED_HOSTS = ['*']
# Static asset configuration
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
vim config/wsgi.pyでwsgi.pyの内容を書き換える
"""
WSGI config for config project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/
"""
import os
from dj_static import Cling #文を新しく記述する
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
application = Cling(get_wsgi_application()) #文を変更する
Herokuアプリを作る
Heroku Command Line Interface (CLI) をインストールしていない場合、インストールする
brew install heroku/brew/heroku
Herokuにログインしていない場合、ログインをする ユーザ名とパスワードは、Herokuアカウントを作成したときのもの
heroku login
Herokuアプリを作る
heroku create
Herokuの環境変数を設定する
heroku config:set DISABLE_COLLECTSTATIC=1
Heroku内でマイグレーションをする
heroku run python manage.py migrate
Herokuでアプリケーションが動いてるかを確認する
heroku open
画面が表示されれば成功

まとめ
- Djangoをherokuにあげました
- WEBアプリケーションを公開できました
これから開発頑張っていくぞ
おまけ
Djangoのバージョン確認方法
pythonコマンドで起動させて
>>>import django >>>django.get_version() '2.0.6'