ブログでのアウトプット習慣が染み付いてきてコード書きたい!!的な欲望が出てきました。そこで、目に見える成果としてWEBアプリケーションを作ってみることにしました。まずは公開する手順をさっさと身につけようと思い、Djangoをherokuにあげてみることにしました。これはその手順です。
ほぼこちらの記事通りにやりましたが、バージョンが違ったり、ところどころ躓いたところがあったので、
自分なりにアレンジしているところがあります。
qiita.com
TL;DR
- Djangoをherokuにあげるよ
- WEBアプリケーションを公開できるよ
- やった気になれる(戒め
目次
- 前提条件
- Djangoのプロジェクトを作成する
- gitにプッシュする
- Herokuにデプロイする
前提条件
仮想環境に入ります。
まずは、仮想環境を作成し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をインストールする
初心者がHerokuでハマったポイント - 暗号通貨.py
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
devcenter.heroku.com
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アプリケーションを公開できました
これから開発頑張っていくぞ
おまけ
python
コマンドで起動させて
>>>import django
>>>django.get_version()
'2.0.6'