初心者プログラマのひとり勉強部屋

若葉マークのプログラマー☺️

【HEROKU】djangoアプリのデプロイエラー

こんにちは

 

今回は前に開発していたdjangoアプリをHEROKUにデプロイしたらエラーではまりまくったのでその備忘録です。

 

基本的にはここを参考にデプロイ作業させていただきました。

https://qiita.com/frosty/items/66f5dff8fc723387108c#7-%E3%81%BE%E3%81%A8%E3%82%81

 

---------------------------------------------------------

$ git push heroku masterのエラー

 ①No default language could be detected for this app.

 ②App not compatible with buildpack: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/python.tgz

 ③$ heroku config:set DISABLE_COLLECTSTATIC=1

環境変数の設定エラー

  HEAROKUへの環境変数設定 

openCVの取り込みエラー

 ①ImportError: libSM.so.6: cannot open shared object file: No such file or directory

 App not compatible with buildpack: https://github.com/heroku/heroku-buildpack-apt 

---------------------------------------------------------

 

 

$ git push heroku masterのエラー

                       ①エラー:No default language could be detected for this app.

どうやらなんの言語か認識できないようです。

→buildpackからpythonを追加します

https://elements.heroku.com/buildpacks

python-buildpackを選択します。

CLI:(heroku-CLIをインストールしている必要があります。)

$ heroku create --buildpack https://github.com/heroku/heroku-buildpack-python.git

 

 

                        ②エラー:App not compatible with buildpack: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/python.tgz

どうやらHEROKUでpythonのファイルを読み込むのに必要なファイルが足りなかったようです。

下記3つのファイルをディレクトリルート配下に作成します。

必要ファイル

requirements.txt(pip list)

 $pip freeze > requirements.txt

runtime.txtpythonパージョン)

 $echo python-3.7.4 > runtime.txt

Procfile(よくわかっていません・・)

 echo web: gunicorn 【プロジェクトフォルダ名】.wsgi > Procfile

 

 ※3つのファイルを追加したら忘れずにgitに追加してプッシュしましょう

$ git add .

$ git commit -m "added"

$git push origin mastr

$ git push heroku master

(.gitignoreはプッシュ済みと想定します)

 

 

                        ③エラー:remote:  !     Error while running '$ python manage.py collectstatic --noinput'.

こちらは記載の通り

$ heroku config:set DISABLE_COLLECTSTATIC=1
をするだけです。
※参考
 
 
 
(ここからはマイグレーション$ heroku run python manage.py migrateに発生エラー)
環境変数の設定エラー
                        ・HEROKUへの環境変数設定
例えば私の場合、.envで環境変数を管理していたのでそこに記載の値をheroku configに設定していきます。
$heroku config:set ENV_VER="環境変数を指定" --app "アプリ名"

例)heroku config:set EMAIL_PORT="587" --app "アプリ名"

設定している変数の確認)$ heroku config

※参考

※SECRET_KEYのみは、"!"などの記号を読み込んでくれなかったので、シングルクォーテーション''で設定しました。
 
 
 
■penCVの取り込みエラー
                        ①マイグレーション結果、
    from .cv2 import *
ImportError: libSM.so.6: cannot open shared object file: No such file or directory
が表示されました。
 
openCVを入れていると出るエラーのようです。下記を参考にAptfileをルート配下に追加
 
まずheroku-buildpack-aptを追加します

$ heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt

 

Aptfile」を作り、アプリのルート配下におきます。(Procfileとかと同じところ)

Aptfileの内容

--------------

libsm6
libxrender1
libfontconfig1
libice6

--------------
gitにファイル追加・コミットして、デプロイ
$git push heroku master
 
 
                         ②エラー:App not compatible with buildpack: https://github.com/heroku/heroku-buildpack-apt
 
$git push heroku master
すると上記エラーが。
pip listを見るとopencv-python」は入っていてローカルでは正常に動いています。
調べてみると、顔認証などを入れている場合は
opencv-contrib-python」が必要とのこと

$ pip install opencv-contrib-python

gitにファイル追加・コミットして、デプロイ(もちろんrequirements.txt の内容も保存し直しました)
$git push heroku master

$ heroku run python manage.py migrate

$ heroku run python manage.py createsuperuser

※参考

https://ja.stackoverflow.com/questions/61146/heroku%E4%B8%8A%E3%81%A7%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BCattributeerror-module-cv2-cv2-has-no-attribute-face

 

⇨解決です。

 

 

 

■最後に

これで正常にデプロイできて動作しました。

ただ、あと問題が2つ残っています。

・bootstrapで作成しているdjango-allauthのCSSが適用されてない

・S3のストレージ設定ができていない

 

これらを解決するため頑張ります!