2016-04-26 9 views
1

現在、私はDjangoで書かれた1つのアプリケーションで動作する30以上のWebサイトを展開しています。サイトは小グループにまとめられています。たとえば、ドイツ、フランス、スイスなどのウェブサイトを含むグループヨーロッパがあります。これらのグループは7つです。DRY設定で複数のDjangoサイトを展開するには?

デプロイメント用には、uwsgi(Emperiorモードで動作)、nginx(グループソケットに渡すuwsgi)、supervisord (タスクワーカー用)が使用されます。アプリケーションは、すべてのWebサイトに対して単一のデータベースを使用しています。

次のようにプロジェクトの設定ファイルの構造は現在、次のとおりです。

  • project.settings.general_settings
  • project.settings.<group_name>

これまでのところ、私は単に7 uwsgiを持っており、7には十分だろうと思いましたいくつかのウェブサイトがカスタムDjango設定を必要とすることを理解し、DJANGO_SETTINGS_MODULEを個別のWebサイトごとに定義する必要があります(これらのWebサイトの一部はdiffeです家賃の言葉で言えます)。心に留めておくべき

もの:

  • すべてのそれら〜30点の異なるウェブサイトの設定を維持するための戦略でしょうか?グループ設定もインポートする必要があります。
  • 現在、DJANGO_SETTINGS_MODULEはNginxとuwsgiの両方の設定ファイルで指定されています。この重複を避ける方法はありますか?
  • uwsgiアプリケーションの量を減らす方法はありますか(おそらくuwsgiは7つのuwsgiグループしかなく、nginxからのみ設定モジュールを指定します)。
  • ボーナス:本番環境に加えて、ステージング環境もあります。そこにも重複を避ける最良の方法は何でしょうか?これまで考えられていた何

  • は、ウェブサイトの設定(LANGUAGESLANGUAGE_CODE、など)データベースに保存され、動的に要求ごとに変更のいくつかを持っています。その考えは拒否された、as it obviously sucks
  • 仮想ホスティングモードでuwsgiを使用してください。 7つのuwsgiアプリしか持たず、Nginxとは異なる設定を指定することができます。拒否されました:insecure, unreliable, scaling issues
+0

nginxの設定で 'DJANGO_SETTINGS_MODULE'を指定する必要はありません。ここで何か間違っているので、あなたのnginxとuwsgi設定ファイルを表示してください。 – GwynBleidD

+0

Nginxの設定:http://pastebin.com/1xC79Uir uWSGIの設定:http://pastebin.com/8S4hmZz1 –

+1

nginxの設定から安全に削除できます。何も変更されません。 – GwynBleidD

答えて

1

emperorモードを使用していて、uWSGI設定がソケットとDJANGO_SETTINGS_MODULEでのみ異なる場合は、すべてのサイトに1つの設定ファイルを使用することを検討してください。基本的にuWSGIの皇帝のディレクトリにシンボリックリンクを作成することで新しいサイトを開始し、その設定の中の特別な変数はソケット名を作成し、DJANGO_SETTINGS_MODULE変数はシンボリックリンク名に基づいています。

urlpatterns、言語、およびリクエストに応じて決定できる他の値だけが心配な場合は、組み込みサイトモジュールの代わりにdjango-hostsを使用できます。これにより、1つのワーカープールに複数のサイトを提供することもできます。その目的のためにミドルウェアを作成することもできます。

環境変数(uWSGI設定ファイルで設定可能)を使用して、いくつかの設定を行うこともできます。設定ファイルでos.environを使用して抽出してください。

最後に、設定ファイルは、他の変数に基づいてwsgi.pyファイル内で動的に設定できます。

+0

symlinkファイル名の読み方については、['%n'magic変数](http://uwsgi-docs.readthedocs.org/en/latest/Configuration.html#magic-variables)を使用する必要があります。回答? –

+0

はい。いくつかのiniファイルをテンプレートとして含める場合は、 '%N'を使用することもできます。 – GwynBleidD

+0

よろしくお願いいたします。そして、Djangoプロジェクト内の設定ファイルのためにどのような構造を提案しますか?グループ、ウェブサイト、ステージング、プロダクションの設定を覚えていますか? –

関連する問題