無料でdjangoブログ運用(2)-HEROKUへのデプロイ

投稿 2021.5.10

目次

この章では HEROKU の無料枠に
デプロイするところまでを記載していきます。


HEROKUアカウントの作成

以下のリンクからHEROKUアカウントを作成
https://jp.heroku.com/


デプロイ準備

PJフォルダに移動

$ cd develop/testSite

「Heroku CLI」をインストール

$ brew tap heroku/brew && brew install heroku

ローカルのPythonバージョンを確認

$ python --version

python-3.9.4でなければPJフォルダ配下の「runtime.txt」を任意のバージョンに書き換え

「runtime.txt」でHEROKU上で稼働するPythonバージョンを指定する

$ sed -i '' -e "s/python-3.9.4/python-[任意のバージョン]/g" runtime.txt 

PJフォルダ配下で「.gitignore」ファイルを作成しプッシュしないファイルを指定

$ echo -e __pycache__/\\n.DS_Store\\nenv/\\nstaticfiles/\\n.gitignore\\nREADME.md\\ndb.sqlite3 > .gitignore 

シェルを起動

$ python3.9 manage.py shell

djangoアプリ用のSECRET_KEYを生成

>>> from django.core.management.utils import get_random_secret_key
>>> get_random_secret_key()
'eje#ie(7)sn$ntj1gt6&-*4*#2pmvmvy$ku+(yono0um&sci)3'
>>> quit()

この部分を控えておく

'eje#ie(7)sn$ntj1gt6&-*4*#2pmvmvy$ku+(yono0um&sci)3'

ソースコードをgitにプッシュする

$ git init
$ git add -A
$ git commit -m "initial commit"

※以下ファイルがプッシュされているか確認してください

blog/migrations/0001_initial.py
blog/migrations/__init__.py

「migrations」フォルダは「makemigrations」コマンド実行時に自動生成されるものですが、HEROKUの仕様なのか自動生成してくれません。
「migrate」コマンド実行時に「relation "[APP名]" does not exist」というエラーが出ます。
ローカルで生成したものをプッシュしてあげてください
念のためプッシュファイル一覧を記載します

Procfile
blog/__init__.py
blog/admin.py
blog/apps.py
blog/forms.py
blog/models.py
blog/static/blog/css/blog.css
blog/templates/blog/category_list.html
blog/templates/blog/category_post.html
blog/templates/blog/comment_form.html
blog/templates/blog/index.html
blog/templates/blog/post_detail.html
blog/templates/blog/reply_form.html
blog/templates/blog/search_post.html
blog/templates/blog/snippets/comments.html
blog/templates/blog/snippets/main_post_list.html
blog/templates/blog/snippets/pagination.html
blog/templates/blog/snippets/pagination_b.html
blog/templates/blog/snippets/search_form.html
blog/templates/blog/snippets/sidebar.html
blog/templates/blog/tag_list.html
blog/templates/blog/tag_post.html
blog/templatetags/markdown_extras.py
blog/tests.py
blog/urls.py
blog/views.py
blog/migrations/0001_initial.py
blog/migrations/__init__.py
djangoNiceguy/__init__.py
djangoNiceguy/asgi.py
djangoNiceguy/context_processors.py
djangoNiceguy/settings/__init__.py
djangoNiceguy/settings/base.py
djangoNiceguy/settings/local.py
djangoNiceguy/settings/production.py
djangoNiceguy/sitemaps.py
djangoNiceguy/urls.py
djangoNiceguy/wsgi.py
manage.py
requirements.txt
runtime.txt
static/css/base.css
static/js/base.js
templates/base.html
templates/base/navbar.html
templates/flatpages/default.html

HEROKU環境準備

ターミナルからHEROKUにログイン
PJを作成する

$ heroku login
$ heroku create [PJ名]
Creating ⬢ [PJ名]... done
https://[PJ名].herokuapp.com/ | https://git.heroku.com/[PJ名].git

先ほど控えたSECRET_KEYをHEROKUの環境変数に登録

$ heroku config:set SECRET_KEY='eje#ie(7)sn$ntj1gt6&-*4*#2pmvmvy$ku+(yono0um&sci)3'
Setting SECRET_KEY and restarting ⬢ djangoniceguy... done, v3
SECRET_KEY: eje#ie(7)sn$ntj1gt6&-*4*#2pmvmvy$ku+(yono0um&sci)3

本番環境用の設定ファイルをHEROKUの環境変数に登録

env $ heroku config:set DJANGO_SETTINGS_MODULE=testSite.settings.production
※「testSite」の部分は任意のPJフォルダ名

デプロイ

HEROKUにソースコードをプッシュ

env $ git push heroku master

HEROKUのDynoを起動

env $ heroku ps:scale web=1

DBのURLをHEROKUの環境変数に登録

env $ heroku config:set DATABASE_URL='[DBのURL]'

DBのURLはHEROKUの画面から確認ができます。

DB登録

env $ heroku run python manage.py makemigrations
env $ heroku run python manage.py makemigrations blog
env $ heroku run python manage.py migrate

管理者ユーザを作成

env $ heroku run python manage.py createsuperuser
Running python manage.py createsuperuser on ⬢ [PJ名]... up, run.3782 (Free)
ユーザー名 (leave blank to use 'u59463'): [任意のユーザ名]
メールアドレス: [任意のメールアドレス]
Password: [任意のパスワード]
Password (again): [任意のパスワード]

HEROKUで生成されたURLでアクセスできる

env $ heroku open

この記事を書いた人

avatar

にいよん

WEBエンジニアで0&2歳娘のパパです。フルリモートでちいたまに引きこもり中。密かにFIRE目指してます。こんな情報を発信中→投資、IT技術、副業、仮想通貨、暗号資産、NFT、メタバース、ブロックチェーン

© 2021 - 2023 24365.dev