[解決済み] Django 開発設定と本番設定をどのように管理するか?
質問
私は基本的なアプリを開発しています。現在、デプロイメントの段階で、ローカル設定と本番設定の両方が必要であることが明らかになりました。
以下について教えていただけると幸いです。
- 開発用と本番用の設定をどのように扱うのがベストか。
- django-debug-toolbar のようなアプリを開発環境のみにとどめておく方法。
- その他、開発・デプロイ設定に関するTipsやベストプラクティス。
解決方法は?
その
DJANGO_SETTINGS_MODULE
環境変数
は、Django がどの設定ファイルを読み込むかを制御します。
したがって、それぞれの環境に対して別々の設定ファイルを作成することになります(もちろん、どちらの環境でも構わないことに注意してください)。
import *
を別の共有設定ファイルから読み込んでください。
DJANGO_SETTINGS_MODULE
を使用して、どちらを使用するかを制御します。
その方法を紹介します。
Django のドキュメントに書かれている通りです。
DJANGO_SETTINGS_MODULE の値は、Python のパス構文、例えば mysite.settings である必要があります。settings モジュールは Python のインポート検索パス上になければならないことに注意してください。
では、仮に
myapp/production_settings.py
と
myapp/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
プロセスマネージャを使用する
環境を設定する起動スクリプトを書くのが好きでないなら(そう思うのにはとても良い理由があります!)、プロセスマネージャを使うことをお勧めします。
-
スーパーバイザー
を使用すると、管理対象プロセスに環境変数を渡すことができます。
プログラムの
environment
コンフィギュレーションキー . -
本草
(RubyのForemanに相当する純粋なPython)では、環境変数を
環境(quot;environment" )
.env
) ファイル .
最後に、以下のことに注意してください。
できる
を利用する。
PYTHONPATH
変数を使用して、まったく別の場所に設定を保存します (たとえば、本番用サーバーでは
/etc/
). これにより、設定とアプリケーションのファイルを分離することができます。これは、アプリの構造にもよりますが、必要な場合もあれば、そうでない場合もあります。
関連
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み] Djangoでローカルと本番の設定を管理する方法とは?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
Python関数の高度な応用を解説
-
python implement mysql add delete check change サンプルコード
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み】Pythonでオペレーティングシステムを確認するには?