Nasıl bir Apache sunucu üzerinde birlikte Django ve PHP çalıştırabilirim?

3 Cevap php

Şu anda benim Apache sunucu üzerinde mod_wsgi veya PHP ile Django da çalıştırabilirsiniz.

Benim Django çalıştırmak projeler: http://localhost ve kaynak C :/ django_proj altındadır

Benim PHP projeleri çalıştırmak: http://php.localhost ve kaynak C :/ web de olduğunu

Ben, php.localhost ve localhost hem açarsanız Django proje gidin. Ben zaten Apache sanal konak yoluyla onları kurdum.

İşte httpd.conf ilgili bazı hatları şunlardır:

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"

Içinde ilgili hatlar apache_django_wsgi.conf olduğunu:

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>

Benim PHP proje akımı erişilemez. Herkes kaçırıyorum ne herhangi bir fikir var mı?

3 Cevap

Ben mod_wsgi / Django siteleri onlarca, PHP siteleri, ve tek bir Apache ile Rails site çalıştırmak.

Çoğunlukla sanal konaklar kullanıyorsanız yapılır ama aynı etki hem çalışan bazı var oluyor.

Sadece herhangi bir diğer Bulunduğu yer / Alias ​​direktiflerine sonra WSGIScriptAlias /... koymak gerekir.

Örneğin, ben bir Django site olarak aynı etki üzerinde phpMyAdmin çalıştırmak istiyorsanız, demek sağlar. Config gibi bir şey olacaktır:

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>

Edit:

Sizin yapılandırma Bu gibi görünmelidir:

<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>

Sen http.conf ... Sanal konaklar tüm yapılandırmayı yapmak bu <Directory> direktifleri gerekmez.

Ayrıca, tamamen <Directory /> bloğunda kurtulmak.

Sizin WSGIScriptAlias / ... direktifi Apache söylüyorum "/" Django'nın WSGI işleyici aracılığıyla beslenen almalısınız ile başlayan her şey isteği. Edilir Eğer WSGIScriptAlias /django-proj/ ... yerine, sadece "/ django-proj" ile başlayan istekleri okumak için değişti eğer Django geçti olacaktı.

Bir alternatif, her proje için sanal konaklar kurma başlamak olacaktır. Bu şekilde bunu kendi etki / adresindeki her projeyi koymak için Apache yapılandırma olabilir ve sizin diğer projelerinden birini etkileyen bir proje için yapılandırması hakkında endişelenmenize gerek olmazdı.

I had the same problem. Try removing this block <Directory /> in httpd-conf.

Httpd-Vhost.conf ve ve bağlantı noktası 80 dinler httpd-vhostları sanal konak bölümünde benim WSGIScriptAlias / "/somewhere/file.wsgi" puting deneyin içerir.