小村の開発環境構築(18) Django Rest FrameworkのHerokuへのデプロイ

  • こんばんは!小村だよ!

  • 今回は前回作成した簡易APIをherokuにデプロイするよ!

  • よろしくね!



やること

  1. 環境変数を用意
  2. Herokuへのデプロイに必要なものを用意
  3. ローカル環境と本番環境で異なる動作をするsettings.pyを用意
  4. herokuへデプロイ



前提条件

  • Ubuntuにリモート接続していること(これまでの環境構築参照)



手順

はじめに

  • 私のDjangoRestFrameworkでは下記DB構成を予定してます

    • local(開発):sqlite3

    • heroku(本番):postgres

  • これを実現するために、最初に本番とローカルで動作を変える必要があります

  • 一般的にこのような環境による変化は、環境変数で識別することが多いです



環境変数を用意

  • というわけで早速環境変数を用意するよ!

  • 環境変数名はAPP_ENVにします

    • 何がいいのか探したけどいまいち出てこなかった
  • envを実行してAPP_ENVが定義されていないことを確認

  • 下記を実行

export APP_ENV="local"
  • その後printenv APP_ENVを実行し、localが表示されることを確認

    • venvに入っているなら、venv内で設定しないといけない(ちょいはまりした)
f:id:kom314_prog:20210731145625p:plain



SECRET_KEYを環境変数

  • ついでにsettings.pyのSECRET_KEYも環境変数を使用するように変更しました!

  • これでソースを公開しても後悔しないぜ!

SECRET_KEY = os.environ.get('SECRET_KEY')



Herokuへのデプロイに必要なものを用意

  • ふむふむふむふむ!!!!

  • 色々参考にした!

  • そして色々インストール時にエラー吐いた!

  • 何が悪いんや!!!

  • DjangoアプリをHerokuへデプロイするのには下記が必要みたい

    • gunicorn
    • django-heroku
    • dj_database_url
pip install gunicorn
pip install django-heroku
pip install dj_database_url
  • どうやらpsycopg2(postgressを使用するライブラリ)のインストールで失敗

  • 下記を実行してから再度実行でインストールできました!

    • エラーのストレスと作業時間の都合でまとめきれてないのでいつかまたまとめる
sudo apt install libpq-dev
pip install wheel



Herokuへのデプロイ成功したけどアプリケーションエラー

  • なんやかんやしてデプロイは完了した!!!!!!!!

  • 今まとめる気おきないけど、後々のためにやったこと書くと

  • そんな感じでgit push heroku mainを実行!

  • 無事デプロイできたぜ!アプリケーションエラーおきてるけどな!!!

f:id:kom314_prog:20210801163018p:plain



エラー原因調査

f:id:kom314_prog:20210802221236p:plain
f:id:kom314_prog:20210802221305p:plain



別のエラー

f:id:kom314_prog:20210802221400p:plain
f:id:kom314_prog:20210802221733p:plain



おわりに

  • 静的ファイルに問題ありで崩れちゃってるけど、いったんこれでデプロイOKで

  • あまあま設定でいきます!疲れたんだもん!

  • ではでは、ちゃお!