LoginSignup
20
27

More than 5 years have passed since last update.

初心者がHerokuにDjangoアプリをデプロイする方法

Last updated at Posted at 2018-04-18

HerokuにDjangoアプリをデプロイするまで

Djangoでアプリケーションを作成

以下を参考にDjangoアプリを作成する。

いろいろアプリを作りこむ。('ω')ノ

アプリの設定

terminal
# Herokuにデプロイするのに必要なものをインストール
$ pip install dj-database-url gunicorn whitenoise

プロジェクトファイルのルート階層で以下を実行
psycopg2は適宜最新版を指定するとよい。

terminal
# インストール済みの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を編集する。

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を新規作成。

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に以下の内容を追記したら設定完了。

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。

terminal
$ wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh

Herokuにログイン

terminal
$ heroku login

Git

gitignoreの作成

gitignoreを手動で作成するのはしんどい。

gitignore.ioでPythonやDjangoと指定してあげるとgitignoreを作ってくれるのでこれを設置する。

初期設定

プロジェクトのルートディレクトリで以下を実行

terminal
$ 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となるので他とかぶらない名前を付ける必要有。
アプリ名を省略したら自動的に名前を付けてくれる。

terminal
$ heroku create [アプリ名]

# アプリ名を変えたいときは以下を実行する
$ heroku apps:rename [変更後のアプリ名]

Herokuにデプロイ

gitのリモートレポジトリにherokuというレポジトリが自動で登録されているのでそこにpushする。

terminal
$ git push heroku master

エラーが出なければOK。

Herokuのウェブプロセスを起動。

terminal
# ウェブプロセスが1つ起動。1より大きな値をセットするには課金する必要がある。
$ heroku ps:scale web=1

初回デプロイ時のみDBをセットアップする。

terminal
$ heroku run python manage.py migrate
$ heroku run python manage.py createsuperuser

これでWebサイトが見れるようになる。

アプリを開く

アプリを開くには以下のコマンドを実行する。

terminal
$ heroku open

Herokuのログをチェック

エラーなどが起きた時、herokuのログをチェックするには以下のコマンドを打つ。

terminal
$ heroku logs

アプリの更新

アプリの更新はherokuに再pushすればよい。

terminal
$ git add .
$ git commit -m 'modify hogehoge'
$ git push heroku master

アプリの削除

アプリの削除は2通りの方法がある。

方法1

Herokuにアクセスして、削除対象のアプリの設定ページに行く。
Delete app...ボタンを押すとアプリ名の確認があるのでアプリ名を入力して実行すると削除できる。

しかし手元の環境にはまだ残っているので、対象のリモートレポジトリを削除する。

terminal
$ git remote rm heroku

これできれいに消える。

方法2

herokuコマンドを使用すると、Heroku上のアプリもリモートリポジトリの設定もすべて消してくれる。

terminal
$ heroku apps:destroy --app アプリ名

アプリ名の確認を求められるので入力して削除を実行する。

以下のコマンドを入力すれば一発で削除できる。

terminal
$ heroku apps:destroy --app アプリ名 --confirm アプリ名

参考サイト

20
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
27