ブログでのアウトプット習慣が染み付いてきてコード書きたい!!的な欲望が出てきました。そこで、目に見える成果として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'