2012-01-14 7 views
0

django/apacheでは、djangoアプリケーションの一部を一方向に、部分を他の方法で配備することは可能ですか?たとえば、www.coolsite.comの通常のユーザー用のインターフェイスがあるとしますが、www.coolsite.com:1234の管理者ビューにアクセスしたいとします。それは1つのアプリ内で実行可能ですか?別のポートに管理インターフェイスを配備する

また、2つの異なるdjangoアプリを別々に配備することもできます(ポート80には「Web」アプリ、ポート8888には「api」アプリがあります)。

のこのソートはあなたに答える

おかげで、

答えて

1

を私は別のプロジェクトにアプリケーションを移動することができます知っているが、私は(彼らは設定やモデルを共有)する必要がない限り、私はそれらを分割しないだろう質問。

ほとんどの場合私は3つのサーバーセットアップ - dev、ステージング、プロダクションを使用していますが、時にはである必要があります。私がそれをするとき、私はしばしばDjangoのdevサーバを8000(あるいは何でも)実行し、それに接続します。

ポートが8000 ... 8002の場合にのみ印刷するデバッグ用のものがたくさんあります。技術的にはまったく別のサーバーを使用していますが、プロダクションと同じ設定/ DB /コードを使用しています。適切なポート範囲をテストするsettings.pyにDEBUG_PRINT値を設定するだけです。

これはあなたのニーズを満たすように聞こえますか?

更新:

ALLOW_ADMIN = '800' in HOST_PORT 

、その後urls.pyにあなたはこのような何か行うことができます:settings.py

あなたはこのようなものができ

if settings.ALLOW_ADMIN: 
    urlpatterns += patterns((r'^admin/', include(admin.site.urls))) 
else: 
    urlpatterns += patterns((r'^admin/.*', 'views.no_admin')) 

をそしてあなたができますそれらをviews.no_adminで叫ぶか、他のサーバーへのリンクを与えてください。

+0

もう1つのサーバー/インスタンスを別の方法で実行すると解決策になるかもしれませんが、1つのポートで管理者リクエストをブロックする方法を理解する必要があります。私はデバッグについては言及していませんが、継続的なメンテナンスです。クライアントのITスタッフに管理者アクセス権を与えたいと考えています。 – Goro

0

私が頭の上から考えている簡単な方法の1つは、複数のプロジェクトのアイデアのスピンです。あなたのコードがソースバージョニングシステムにあれば(なぜそうではないのでしょうか?)、同じブランチまたはタグの別々のプルを簡単に作成し、それぞれ異なる方法でサービスすることができます。つまり、ポート80、ポート8000、まったく別のドメインのものなど

あなたがする必要があるのは、プル固有のurls.py(ソースバージョン管理システムでは無視します)を作成することだけです。 local_urls.pyのようなものです(自分で試したことはありません)。各バージョンでは、その特定の環境でやっていない、あるいは望まないURLパターンをオン/オフすることができます。ポート8000​​の管理者だけが必要ですか?そのURLパターンをポート8000​​で提供されているプルに入れてください。

0

ここには、複数のプロセス/プロジェクトを必要としない別のアプローチがあります。

class ProtectAdminMiddleware(object): 
    def process_request(self, request): 
     if request.path.startswith("/admin") and request.META["SERVER_PORT"] != "1234": 
      raise Http404 
関連する問題