1つのApacheサーバーでDjangoとPHPを一緒に実行するにはどうすればよいですか?
-
06-07-2019 - |
質問
現在、Apacheサーバーでmod_wsgiまたはPHPを介してDjangoを実行できます。
私の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プロジェクトにはアクセスできません。誰かが私が見逃しているアイデアを持っていますか?
解決
1つのApacheで多数のmod_wsgi / Djangoサイト、PHPサイト、およびRailsサイトを実行しています。
ほとんどは仮想ホストを使用して行われますが、同じドメインで両方を実行しているものがあります。
他のLocation / Aliasディレクティブの後にWSGIScriptAlias /...
を置くだけです。
たとえば、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 / ...
ディレクティブは、すべてが<!> quot; / <!> quotで始まるリクエストであることをApacheに伝えています。 DjangoのWSGIハンドラーを介してフィードする必要があります。代わりにWSGIScriptAlias /django-proj/ ...
を読むように変更した場合、<!> quot; / django-proj <!> quot;で始まるリクエストのみ。 Djangoに渡されます。
別の方法は、各プロジェクトの仮想ホストのセットアップを開始することです。このようにして、各プロジェクトを独自のドメインの/に配置するようにApacheを構成できます。また、あるプロジェクトの構成が他のプロジェクトの1つに影響することを心配する必要はありません。
同じ問題がありました。
httpd-confでこのブロック<Directory />
を削除してみてください。
httpd-vhost.confを含めて、ポート80をリッスンするhttpd-vhostsの仮想ホストセクションにWSGIScriptAlias / "/somewhere/file.wsgi"
を入れてみてください。
Apache ProxyPass を使用している場合、特定のURLパターンを拒否してmod_phpに分類できることを追加します。
ProxyPass /wordpress !
<Location /wordpress>
Require all granted
</Location>