投稿 2021.5.10
この章では 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にログイン
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