2

運用サーバーでは、確かに別の設定が必要であり、ローカル設定とは異なります。

私たちのオープンソース プロジェクトは github でホストされています。したがって、マスター ブランチは製品コードではありません (少なくとも設定構成まで)。

さて、プロジェクト(django)をホストする必要があります..そのために、私が見つけた最も簡単な解決策は、新しいブランチをローカルに作成し、プロダクション設定をセットアップし、サーバーgitをリモートとして追加し、そのブランチをリモートオリジンにプッシュすることです.

そのため、いつでも最新の安定版リリースを本番ブランチにマージできます..簡単に

しかし、github でのファイルの管理にはいくつかの問題があります。

django の設定が "proj/settings.py" で提供されているとします。ローカル設定はシステムごとに異なるため、システム固有のローカル設定 (静的ファイルの場所など) を上書きするために「proj/local_settings.py」を作成しました。このファイルは .gitignore を使用して Git によって無視されます。

ここで、本番ブランチでこのファイルを使用して本番設定を構成すると、現在は無視されていますが、Git.. を使用することはできません。

local_settings.py をローカルの運用ブランチから運用サーバーにプッシュするには、その特定のブランチの .gitignore でその場所を削除する必要があります。

すべてがうまく、ここまで受け入れられます..

ここに実際の問題があります。

新しい変更を本番サーバーにプッシュしたいときは、最初にそれらを production-local-branch にプッシュし、次に本番サーバーにプッシュする必要がありました...しかし今、

.gitignore ファイルがリリースに存在するものに変更されます (つまり、local_settings.py が再度追加されます)。

このため、何かをマージするたびに production-local-branch の gitignore で local_settings.py を手動で削除する必要があります...

確かに、上記のすべては大きな混乱です..どうすれば簡単に処理できますか

4

1 に答える 1

1

私がお勧めするのは、配置されている場所に依存する設定をsettings.pyから削除することです。これらの設定を環境変数に入れます。例えば:

STATIC_ROOT = os.environ.get('STATIC_ROOT')

次に、Web サーバーを実行する前に、これらの環境変数を設定する必要があります。

ローカルで:

STATIC_ROOT=`pwd`/static python manage.py runserver

本番環境では、デプロイ方法によって異なります。ドキュメントを参照してください。

環境変数への構成のこの原則は、Twelve Factor App で公開されています: http://www.12factor.net/config

于 2013-03-29T11:02:14.187 に答える