前提・やりたいこと
- DjangoでWebアプリを作成したけれど、ローカル環境で動かすことを前提としたフォルダ構成になっている。
- サーバへデプロイすることを考えたフォルダ構成にする。
やったこと
1. プロジェクトフォルダ名を「config」に変更
プロジェクトは設定系のファイルしか入っておらず、それを明示したフォルダ名のほうが分かりやすいと考えたため。
2. settings.pyを分割
ローカル環境と本番環境で設定内容が異なるところがあるため、settings.pyをローカル・本番共通、ローカルだけに適用する設定、本番にだけ適用する設定、の3ファイルに分割。
3. 環境変数を.envファイルに記載(django-environを使用)
本番環境用のsettings.pyにはDB接続情報などを記載する必要があるが、直接settings.pyに書くとgithubにコミットする際に一緒に公開されてしまうので、.envファイルに記載してgithubには公開しないように設定。
4. requirements.txtをローカル用と本番用に分割
インストールするパッケージが、ローカルと本番で異なっているため分離。
完成
完成したフォルダ構成と実際のコードを載せておきます。
GitHub : フォルダ構成を修正したアプリのコード(todoリストアプリ)
django-want2study/
├ config/
│ └ settings/
│ └ base.py
│ └ development.py
│ └ production.py
├ want2studyApp/
├ templates/
├ venv/
├ .gitignore
├ db.sqlite3
├ requirements/
│ └ base.txt
│ └ production.txt
├ manage.py
└ .env
まとめ
ローカルで動かすことだけを考えただけのフォルダ構成だと、やっぱりいろいろ足りないなあと思いました。まだデプロイ自体はできていないので、デプロイ結果によってはもしかしたら少し修正したりするかもしれませんが、とりあえずこのフォルダ構成で行ってみようと思います。