環境はプロセスに関連付けられ、親プロセスが fork したときにコピーが継承されます。別のコマンドを実行する前に、bash で設定を環境に注入できます。
次のコマンドは./manage runserver
、既存の bash 環境で実行され、2 つの追加の環境変数DJANGO_SETTINGS_MODULE
とMY_DB_PASSWORD
.
DJANGO_SETTINGS_MODULE=myproject.settings.dev MY_DB_PASSWORD=foo ./manage.py runserver
あなたが提案したように、設定ファイルで次の Python コードを使用して、環境から値を抽出できます。
import os
db_passwd = os.environ.get('MY_DB_PASSWORD', 'default-db-password')
パスワードを に入れることもできますが.profile
、機密情報と非機密情報が混在するため、おそらく悪い考えです。次に、ファイルのアクセス許可を保護する必要があり.profile
ます。そうしないと、他の人がファイルを読み取ってパスワードを取得できてしまいます。
この場合の設定管理のより良いアプローチは、パスワードなどの機密設定専用の別のファイルを用意することだと思います。このファイルのパーミッションを保護して、それを必要とするユーザー (Web サーバーなど) だけが読み取れるようにします。次に、このパスワード ファイルを から読み取って、パスワードsettings.py
を取得できます。ここでは、Python ConfigParser モジュールの使用が役立つ場合があります。
必要に応じて環境変数を使用して、このファイルの場所を指定するか、何も指定されていない場合はデフォルトに戻すことができます。
例えば。DB_PASSWD_FILE=~/tmp/test_db_passwords.ini ./manage.py runserver
次にsettings.py
import os
db_passwd_file = os.environ.get('DB_PASSWD_FILE', '/etc/myproject/db_passwords.ini')
# Instantiate a ConfigParser object here to read passwords from db_passwd_file.
これにより、場所が環境変数/etc/myprojecdt/db_passwords.ini
によって上書きされていない限り、デフォルトの動作でシステム保護ファイルを検索できます。DB_PASSWD_FILE
DB_PASSWD_FILE
開発中に、開発目的で適切な場所を指すように設定できます.profile
。を指すパスは、DB_PASSWD_FILE
ファイル システムのアクセス許可を使用するだけで読み取りできるように保護できます。