2009-06-19 1 views
22

私は現在、Apacheサーバ上でmod_wsgiまたはPHP経由でDjangoを実行できます。1つのApacheサーバーでDjangoとPHPを一緒に実行するにはどうすればよいですか?

私のDjangoがで実行されるプロジェクト:http://localhostとソースはCである:/ django_proj

私のPHPプロジェクトがで実行します。http://php.localhostとソースはCである:/ウェブ

私は、PHPの両方を有効にした場合。 localhostとlocalhostはDjangoプロジェクトに行きます。私はすでにApache仮想ホストを通してそれらを設定しました。ここで

は、httpd.confのいくつかの関連する行です:apache_django_wsgi.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" 

関連する行は次のようになります。HTTPD-vhosts.confインサイド

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

<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プロジェクトは現在アクセスできない。誰か私が逃しているアイデアはありますか?

答えて

29

私は、mod_wsgi/Djangoサイト、PHPサイト、および1つのApacheを持つRailsサイトを何十も実行しています。

これは主に仮想ホストを使用して行われますが、同じドメイン上で実行されているものもあります。

他の場所/エイリアス指令の後にWSGIScriptAlias /...を置くだけで済みます。

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

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> 

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

また、<Directory />ブロックを完全に削除します。

+0

http://php.localhost-> My PHP Proj 上記をどのように達成できるか知っていますか?私はすでに上記の仮想ホストとして動作しています。 –

+1

適切なブロック内にディレクティブを配置する必要があります。つまり、WSGIScriptAliasをServerNameがlocalhostのブロック内に配置します。私は私の答えを編集することでそれをより明確にします。 –

+0

ご協力ありがとうございます、それは動作しています。私は "エイリアス/ C:/ web"を削除し、今は正常に動作します。私はまた、httpd.confからDirectoryブロックを取り出しました。 –

7

あなたのWSGIScriptAlias/...ディレクティブは、 "/"で始まるすべてのリクエストがDjangoのWSGIハンドラを経由する必要があることをApacheに伝えています。代わりにWSGIScriptAlias /django-proj/ ...と読み替えると、 "/ django-proj"で始まるリクエストだけがDjangoに渡されます。

代わりに、プロジェクトごとに仮想ホストの設定を開始することもできます。こうすることで、各プロジェクトを自分のドメインに置くようにApacheを設定することができ、他のプロジェクトに影響を与える1つのプロジェクトの設定について心配する必要はありません。

0

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

httpd-vhostを含みます。confにと、私はあなたがApacheのはProxyPassを使用している場合、それはそれように、特定のURLパターンを拒否することも可能だということを追加したいポートに80

0

をリッスンにhttpd-バーチャルホストの仮想ホストセクションで私のWSGIScriptAlias/"/somewhere/file.wsgi"をputingしてみてくださいmod_phpに落ちる。 >私のジャンゴメニュープロジェクト - // localhostを: ます。http:知って良いことだが、私は、例えば、サブドメインに私のPHPプロジェクト間、yのメインドメインに私のDjangoのプロジェクトを指すようにしたい

ProxyPass /wordpress ! 
<Location /wordpress> 
    Require all granted 
</Location> 
関連する問題