1. ホーム
  2. python

[解決済み] Django 開発設定と本番設定をどのように管理するか?

2022-04-21 07:06:36

質問

私は基本的なアプリを開発しています。現在、デプロイメントの段階で、ローカル設定と本番設定の両方が必要であることが明らかになりました。

以下について教えていただけると幸いです。

  • 開発用と本番用の設定をどのように扱うのがベストか。
  • django-debug-toolbar のようなアプリを開発環境のみにとどめておく方法。
  • その他、開発・デプロイ設定に関するTipsやベストプラクティス。

解決方法は?

その DJANGO_SETTINGS_MODULE 環境変数 は、Django がどの設定ファイルを読み込むかを制御します。

したがって、それぞれの環境に対して別々の設定ファイルを作成することになります(もちろん、どちらの環境でも構わないことに注意してください)。 import * を別の共有設定ファイルから読み込んでください。 DJANGO_SETTINGS_MODULE を使用して、どちらを使用するかを制御します。

その方法を紹介します。

Django のドキュメントに書かれている通りです。

DJANGO_SETTINGS_MODULE の値は、Python のパス構文、例えば mysite.settings である必要があります。settings モジュールは Python のインポート検索パス上になければならないことに注意してください。

では、仮に myapp/production_settings.pymyapp/test_settings.py をソースリポジトリに追加してください。

その場合、それぞれ DJANGO_SETTINGS_MODULE=myapp.production_settings を使用するようにし DJANGO_SETTINGS_MODULE=myapp.test_settings を使えば、後者を使うことができます。


これ以降、問題は DJANGO_SETTINGS_MODULE 環境変数

設定方法 DJANGO_SETTINGS_MODULE スクリプトやシェルを使って

そして、ブートストラップスクリプトやプロセスマネージャを使って正しい設定を読み込む (環境を設定する) か、Django を起動する前にシェルから実行すればよいのです。 export DJANGO_SETTINGS_MODULE=myapp.production_settings .

このエクスポートは、シェルからいつでも実行できることに注意してください。 .bashrc などがあります。

設定方法 DJANGO_SETTINGS_MODULE プロセスマネージャを使用する

環境を設定する起動スクリプトを書くのが好きでないなら(そう思うのにはとても良い理由があります!)、プロセスマネージャを使うことをお勧めします。


最後に、以下のことに注意してください。 できる を利用する。 PYTHONPATH 変数を使用して、まったく別の場所に設定を保存します (たとえば、本番用サーバーでは /etc/ ). これにより、設定とアプリケーションのファイルを分離することができます。これは、アプリの構造にもよりますが、必要な場合もあれば、そうでない場合もあります。