26

現在、mod_wsgi を介して Django を実行するか、Apache サーバーで PHP を実行できます。

私の Django プロジェクトはhttp://localhostで実行され、ソースは C:/django_proj にあります

私の PHP プロジェクトはhttp://php.localhostで実行され、ソースは C:/web にあります。

両方をオンにすると、php.localhost と localhost が Django プロジェクトに移動します。私はすでに Apache 仮想ホストを介してそれらをセットアップしました。

httpd.conf の関連する行を次に示します。

DocumentRoot "C:/web"

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

<Directory "C:/web">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Directory "C:/django_proj">
    Order allow,deny
    Allow from all
</Directory>

Include "C:/django_proj/apache/apache_django_wsgi.conf"

関連する行apache_django_wsgi.confは次のとおりです。

WSGIScriptAlias / "C:/django_proj/apache/proj.wsgi"
<Directory "C:/django_proj/apache">
    Order allow,deny
    Allow from all
</Directory>

httpd-vhosts.conf 内:

<Directory C:/web>
    Order Deny,Allow
    Allow from all
</Directory>

<Directory C:/django_proj>
    Order Deny,Allow
    Allow from all
</Directory>

<VirtualHost *:80>
    DocumentRoot "C:/django_proj"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/web"
    ServerName php.localhost
</VirtualHost>

私の PHP プロジェクトは現在アクセスできません。誰かが私が見逃しているアイデアを持っていますか?

4

4 に答える 4

35

私は多数の mod_wsgi/Django サイト、PHP サイト、および 1 つの Apache を使用する Rails サイトを実行しています。

ほとんどの場合、仮想ホストを使用して行われますが、同じドメインで両方を実行しているものもあります。

WSGIScriptAlias /...他の Location/Alias ディレクティブの後に your を配置するだけです。

たとえば、Django サイトと同じドメインで phpMyAdmin を実行したいとします。構成は次のようになります。

Alias /phpmyadmin /full/path/to/phpmyadmin/
<Directory /full/path/to/phpmyadmin>
   Options -Indexes
   ...etc...
</Directory>

WSGIScriptAlias / /full/path/to/django/project/app.wsgi
<Directory /full/path/to/django/project>
    Options +ExecCGI
    ...etc...
</Directory>

編集

構成は次のようになります。

<VirtualHost *:80>
    DocumentRoot "C:/django_proj"
    ServerName localhost
    WSGIScriptAlias / "C:/django_proj/apache/proj.wsgi"
    <Directory "C:/django_proj/apache">
        Options +ExecCGI
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/web"
    ServerName php.localhost
    Alias / C:/web
    <Directory C:/web>
        Options Indexes FollowSymLinks
        AllowOverride None
        Order Deny,Allow
        Allow from all
    </Directory>
</VirtualHost>

<Directory>これらのディレクティブは必要ありませんhttp.conf...仮想ホストですべての構成を行います。

また、<Directory />ブロックを完全に取り除きます。

于 2009-06-20T01:12:47.697 に答える
8

あなたのWSGIScriptAlias / ...ディレクティブは、「/」で始まるすべてのリクエストが Django の WSGI ハンドラを介して供給されるように Apache に伝えています。代わりに read に変更するとWSGIScriptAlias /django-proj/ ...、「/django-proj」で始まるリクエストのみが Django に渡されます。

別の方法は、プロジェクトごとに仮想ホストのセットアップを開始することです。このようにして、各プロジェクトを独自のドメインの / に配置するように Apache を構成でき、1 つのプロジェクトの構成が他のプロジェクトの 1 つに影響を与えることを心配する必要がなくなります。

于 2009-06-19T23:21:45.283 に答える
0

私も同じ問題を抱えていました。<Directory />httpd-conf でこのブロックを削除してみてください。

httpd-vhost.conf をインクルードWSGIScriptAlias / "/somewhere/file.wsgi"し、ポート 80 をリッスンする httpd-vhosts の仮想ホスト セクションに my を配置してみてください。

于 2011-10-14T12:37:56.497 に答える