1つのApacheサーバーでDjangoとPHPを一緒に実行するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1020390

  •  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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top