はじめに
以前 Django を学習していたころ Web サービスを作っていた。そのときのものを Render.com にデプロイする。テーマは「音楽をより深く楽しむサービス」である。
Render.com とは
Render.com はウェブアプリのデプロイを簡単にするクラウドプラットフォームである。開発者はインフラ管理の手間を省き迅速にサービスを展開できる。GitHub リポジトリからの自動デプロイができ、無料枠がある。
デプロイした URL
- 音楽をより深く楽しむためのサービス - MusicMemo - / GitHubリポジトリ
- 物語をより深く楽しむためのサービス - NovelReview - / GitHubリポジトリ
※Render.com の無料枠では DB が1個しか持てないので NovelReview はデプロイできなかった
デプロイで参考にさせていただいた Youtube 教材
こちらの動画一本だけで知識ゼロからデプロイできました(人'▽`)
デプロイで少し詰まったところ
1.環境変数を設定しないと動かない
GitHub のリポジトリを選択すると自動でデプロイが始まるが、環境変数を設定していないので失敗する。また環境変数の設定画面を開くと SECRET_KEY がデフォルトで設定されているが、Djangoのものに変える。
↓ 自分は django-allauth などの設定もしているので少し多い。
2.requirements.txt の設定
あらかじめバージョンを指定しておくとインストールエラーが出た。なので指定せずインストールしてから pip freeze でバージョンを出した。
requirements.txt
# Django==5.0.6
Django==4.2.14
django-environ==0.11.2
pillow==10.2.0
whitenoise==6.7.0
django-allauth==0.63.3
# for Render.com
asgiref==3.8.1
dj-database-url==2.2.0
dj-static==0.0.6
django-model-utils==4.5.1
gunicorn==22.0.0
packaging==24.1
psycopg2-binary==2.9.9
python-decouple==3.8
python-dotenv==1.0.1
sqlparse==0.5.1
static3==0.7.0
typing_extensions==4.12.2
tzdata==2024.1
3.settings.py の DEBUG 設定
原因究明しようか迷ったが一旦飛ばした部分。print で確認すると正しく else: の方に行っているのになぜか上手くいかない。
settings.py(デプロイ失敗)
if DEBUG:
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
else:
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATICFILES_DIRS = []
settings.py(デプロイ成功)
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATICFILES_DIRS = []
おわりに
少し詰まる部分もあったが、簡単にデプロイできた。Render.com は有料版もとても良いらしいので、機会があればまた使いたい。