HerokuにDjangoアプリをデプロイするまで
Djangoでアプリケーションを作成
以下を参考にDjangoアプリを作成する。
いろいろアプリを作りこむ。('ω')ノ
アプリの設定
# Herokuにデプロイするのに必要なものをインストール
$ pip install dj-database-url gunicorn whitenoise
プロジェクトファイルのルート階層で以下を実行
psycopg2は適宜最新版を指定するとよい。
# インストール済みのpackage情報をrequirements.txtに保存
$ pip freeze > requrements.txt
# herokuでpostgreを使うために以下のパッケージを追記
$ echo 'psycopg2==2.7.4' >> requirements.txt
# 新規にProcfileを作成し、設定を書き込む
$ echo 'web: gunicorn mysite.wsgi' > Procfile
# 新規にruntime.txtを作成し、自身のpythonのバージョン情報を書きこむ
$ echo 'python-3.6.4' > runtime.txt
local環境ではSQLite3, herokuではPostgreSQL環境で動作させるためプロジェクトファイルの設定を書いているsettings.pyを編集する。
# ~省略~
# 以下を末尾に追記
import dj_database_url
DATABASES['default'] = dj_database_url.config()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
ALLOWED_HOSTS = ['*']
STATIC_ROOT = 'staticfiles'
DEBUG = False
try:
from .local_settings import *
except ImportError:
pass
settings.pyと同じディレクトリにlocal_settings.pyを新規作成。
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
DEBUG = True
以上の設定を終えるとlocal_settings.pyがある時にはローカルの設定にしてくれる。
wsgi.pyに以下の内容を追記したら設定完了。
# ~省略~
# 以下を末尾に追記
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)
Heroku
Herokuの無料アカウントを作成
Herokuの無料アカウントを作成する。
https://id.heroku.com/signup/www-home-top
Heroku CLIをインストール
Heroku CLIをインストールする。インストール済みの場合は飛ばしてOK。
$ wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh
Herokuにログイン
$ heroku login
Git
gitignoreの作成
gitignoreを手動で作成するのはしんどい。
gitignore.ioでPythonやDjangoと指定してあげるとgitignoreを作ってくれるのでこれを設置する。
初期設定
プロジェクトのルートディレクトリで以下を実行
$ git init
$ git config user.name "Your Name"
$ git config user.email you@example.com
$ git add .
$ git commit -m 'first commit'
Deploy
準備
以下のコマンドを実行してherokuにアプリを作成する。[アプリ名]
は好きな名前を設定できる。
ただしURLが[アプリ名].herokuapp.com
となるので他とかぶらない名前を付ける必要有。
アプリ名を省略したら自動的に名前を付けてくれる。
$ heroku create [アプリ名]
# アプリ名を変えたいときは以下を実行する
$ heroku apps:rename [変更後のアプリ名]
Herokuにデプロイ
gitのリモートレポジトリにherokuというレポジトリが自動で登録されているのでそこにpushする。
$ git push heroku master
エラーが出なければOK。
Herokuのウェブプロセスを起動。
# ウェブプロセスが1つ起動。1より大きな値をセットするには課金する必要がある。
$ heroku ps:scale web=1
初回デプロイ時のみDBをセットアップする。
$ heroku run python manage.py migrate
$ heroku run python manage.py createsuperuser
これでWebサイトが見れるようになる。
アプリを開く
アプリを開くには以下のコマンドを実行する。
$ heroku open
Herokuのログをチェック
エラーなどが起きた時、herokuのログをチェックするには以下のコマンドを打つ。
$ heroku logs
アプリの更新
アプリの更新はherokuに再pushすればよい。
$ git add .
$ git commit -m 'modify hogehoge'
$ git push heroku master
アプリの削除
アプリの削除は2通りの方法がある。
方法1
Herokuにアクセスして、削除対象のアプリの設定ページに行く。
Delete app...
ボタンを押すとアプリ名の確認があるのでアプリ名を入力して実行すると削除できる。
しかし手元の環境にはまだ残っているので、対象のリモートレポジトリを削除する。
$ git remote rm heroku
これできれいに消える。
方法2
herokuコマンドを使用すると、Heroku上のアプリもリモートリポジトリの設定もすべて消してくれる。
$ heroku apps:destroy --app アプリ名
アプリ名の確認を求められるので入力して削除を実行する。
以下のコマンドを入力すれば一発で削除できる。
$ heroku apps:destroy --app アプリ名 --confirm アプリ名