現在、ApacheサーバーでDjangoからmod_wsgiまたは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プロジェクトは現在アクセスできません。誰かが私が欠けているアイデアを持っていますか?
私は数十のmod_wsgi/Djangoサイト、PHPサイト、およびRailsサイトを単一のApacheで実行しています。
これは主に仮想ホストを使用して行われますが、同じドメインで両方を実行しているものもあります。
WSGIScriptAlias /...
を他のLocation/Aliasディレクティブの後に置く必要があります。
たとえば、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 />
ブロックを完全に取り除きます。
WSGIScriptAlias / ...
ディレクティブは、「/」で始まるすべてのリクエストがDjangoのWSGIハンドラーを介して供給されるようにApacheに指示しています。代わりにWSGIScriptAlias /Django-proj/ ...
を読み取るように変更した場合、「/ Django-proj」で始まるリクエストのみがDjangoに渡されます。
別の方法は、プロジェクトごとに仮想ホストのセットアップを開始することです。このようにして、各プロジェクトを独自のドメインの/に配置するようにApacheを構成でき、1つのプロジェクトの構成が他のプロジェクトの1つに影響を与えることを心配する必要はありません。
Apache ProxyPassを使用している場合、特定のURLパターンを拒否してmod_phpに分類される可能性があることを追加したいと思います。
ProxyPass /wordpress !
<Location /wordpress>
Require all granted
</Location>
私も同じ問題を抱えていました。 httpd-confでこのブロック<Directory />
を削除してみてください。
Httpd-vhost.confをインクルードし、ポート80をリッスンするhttpd-vhostsの仮想ホストセクションにWSGIScriptAlias / "/somewhere/file.wsgi"
を配置してみてください。