1
0

More than 1 year has passed since last update.

djangoでアプリを作成するまで(herokuへデプロイする)

Last updated at Posted at 2022-02-07

概要

PythonのフレームワークであるDjangoでアプリを作ってherokuに更改するまでをまとめてみた。
今回は「heroku」へのデプロイ編
※前回のdjangoでアプリを作成するまでの手順は以下を参考
https://qiita.com/tky529/items/e340ab404a89c359ecd3

前提

仮想環境で構築しておりますが、仮想環境以外でも同様の事が可能です。
Python 3.7.12

手順

まずはherokuでアプリを動かすために必要なパッケージをインストールします

% pip install dj-database-url gunicorn whitenoise

次に必要な「django-heroku」もインストールしたいのだが、私の環境(pythonのバージョン等の関係?)だとpsycopg2のエラーが出てしまうため、以下のサイトを参考にインストールした
参考
https://e-tec-memo.herokuapp.com/article/197/

まずは依存関係のパッケージをインストールせずにdjango-herokuのみをインストール

% pip install --no-deps django-heroku

その後psycopg2をインストールするとエラーとなるためわかりに以下をインストール

% pip install psycopg2-binary

インストールが終わったらrequirements.txtファイルへ書き込みます。
requirements.txtはサーバーにアプリで使用するパッケージをHerokuに教えるためのファイルです。

% pip freeze > requirements.txt

Procfileファイル

次にProcfileを作成します。
これは、Heroku起動時に実行するコマンドを伝えます。
ルートフォルダ直下にProcfileというファイルを作成し、以下の内容を記載します。
※gunicornはpython manage.py runserverの凄いバージョンらしい

web: gunicorn mysite.wsgi

runtime.txtファイル

runtime.txtファイルはHerokuに使用するpythonのバージョンを知らせるためのファイルです。ルートフォルダ直下にruntime.txtを作成します。

runtime.txt
python-3.6.4

アプリケーションディレクトリ/local_settings.py

アプリケーションディレクトリ直下にlocal_settings.pyファイルを作成しましょう。
同じ階層のアプリケーションディレクトリ/settings.pyからDATABASE設定をコピーしていきます。
SECRET_KEYもこちらに設定します。

config/local_settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

SECRET_KEY = 'django-*******'

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

DEBUG = True

アプリケーションディレクトリ/settings.py

先程の設定を受けてsettings.pyも修正します。
SECRET_KEYは削除してください

config//settings.py
import dj_database_url

...

DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com']

...

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'name',
        'USER': 'user',
        'PASSWORD': '',
        'HOST': 'host',
        'PORT': '',
    }
}


...
# 最後の行に追加
# ローカルではlocal_settingsを使用する設定
try:
    from .local_settings import *
except ImportError:
    pass

# SECRET_KEYを環境変数として使用する設定
if not DEBUG:
    SECRET_KEY = os.environ['SECRET_KEY']
    import django_heroku #追加
    django_heroku.settings(locals())


db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)


Herokuへデプロイ

まずはherokuにログインする

% heroku login

herokuアプリを作成する
※testappは好きな名前(他人と重複しない名前)
※アプリ名は忘れないようにする

% heroku create testapp

Gitコマンドを打っていく

% git status
% git add -A .
% git commit -m "first commit"
% git push heroku master

次にherokuにコマンド

% heroku ps:scale web=1
% heroku run python manage.py migrate
% heroku run python manage.py createsuperuser
・・・ユーザー名、メールアドレス、パスワードは任意のもので設定する
% heroku open

これでheroku常にアプリが公開(デプロイ)された

image.png

お疲れ様でした!!

参考
https://tutorial.djangogirls.org/ja/

1
0
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
1
0