3

現在、Django を使用してアプリごとに書き換えている Web サイトがあります。サーバーは RedHat です。Apache 2 を実行しています。mod_wsgi をインストールしました。すべて正常に動作します。素晴らしい。

http://www.example.com/にアクセスすると、(PHP で) 既存のメイン サイトにアクセスできます。

私は mod_wsgi を実行していて、問題なく動作しています。http://www.example.com/django/にアクセスすると、Django を利用したホームページにアクセスできます。

私はそれでうまくいくいくつかのアプリを持っています:

すべての逆 URL ルックアップは正常に機能します。すべてが優れています。

Apache の httpd.conf のグローバル エントリは次のとおりです。

WSGIScriptAlias /django /path/to/django/mysite/mysite/apache/django.wsgi

ただし、これを本番環境に展開するときに、URL の /django 部分を含めたくありません。

したがって、http://www.example.com/softwareへのリクエストは、Django ソフトウェア アプリを実行します。

http://www.example.com/newsletterへのリクエストは、Django ニュースレター アプリを実行します。

http://www.example.com/をルート Django wsgi アプリケーションにリダイレクトすることはまだできません。これは、サイト全体の Django の書き換えが完了する数か月後に発生する可能性があります。

では、私の Django アプリを現在のセットアップで動作させる方法はありますか?

アプリごとの wsgi ファイル (例: /path/to/django/mysite/mysite/apache/software.wsgi および /path/to/django/mysite/mysite/apache/newsletter.wsgi) をアプリごとに作成する必要がありますか? httpd.conf ファイルに? そのような:

WSGIScriptAlias /software /path/to/django/mysite/mysite/apache/software.wsgi
WSGIScriptAlias /newsletter /path/to/django/mysite/mysite/apache/newsletter.wsgi

この特定のスタイルのセットアップに関する具体的なドキュメントがあまり見つからないようです。ほとんどのドキュメントでは、1 つのメイン wsgi ファイルと Django (urls.py 経由) を使用してすべてのリクエストを仲介していると想定しています。私はそれを望んでいますが、今はそれができません。

それは、私が論争しなければならない Apache ディレクティブのカンフーかもしれません。その場合はお知らせください。

ティア。

4

2 に答える 2

2

www.example.com のすべての新しい部分を少しずつ展開していることを理解しています。のような新しいサブドメインを持つ別の新しい Apache 仮想ホスト コンテナーに Django プロジェクト全体をセットアップするのはどうnew.example.comですか? root Django アプリは http://new.example.com からアクセスできソフトウェア アプリはhttp://new.example.com/softwareなどからアクセスできます。メイン ドメイン www.example.com の場合は、リダイレクトを設定するだけです。

www.example.com/django -> new.example.com
www.example.com/software -> new.example.com/software
www.example.com/newsletter -> new.example.com/newsletter

スイッチをスローした後と同じ URL 構造でプロジェクト全体をテストできます。スイッチをスローするとServerName、2 つの仮想ホストのディレクティブが置き換えられるだけです。

于 2012-09-07T15:29:59.443 に答える
0

同様の問題がありましたが、その逆です。私は、パーティーごとにdjangoのインストール部分をphp-installationに置き換えたいと思っていました。

サイトの使用のための Apaches 仮想ホスト構成で

WSGIScriptAliasMatch ^(/(software|newsletter)) /path/to/django/mysite/mysite/apache/django.wsgi$1

それ以外の

WSGIScriptAlias /software /path/to/django/mysite/mysite/apache/software.wsgi
WSGIScriptAlias /newsletter /path/to/django/mysite/mysite/apache/newsletter.wsgi

urls.pyで、django に、マウント ポイントが次の/ようなルート URL であると信じ込ませます。

...
url(r'^software/', include('software.urls')),
url(r'^newsletter/', include('newsletter.urls')),
...

このようにして、サイトを完成させ、django からのルート URL を含むすべてを提供したい場合は、WSGIScriptAliasMatchエントリを次のように置き換えるだけです。

WSGIScriptAlias / /path/to/django/mysite/mysite/apache/django.wsgi

それだけです。

詳細については、次の Q&A を確認してください。

Apache 仮想ホストで共存する Django (wsgi) と Wordpress

新しいphpソースからWebサイトのルートを提供し、古いdjangoサイトから特定のサブURLを提供するようにApacheを再構成する

于 2015-11-20T07:31:41.323 に答える