How do I run Django and PHP together on one Apache server?
apache-config, django, php
Solution
I run dozens of mod_wsgi/Django sites, PHP sites, and a Rails site with a single Apache.
It's mostly done using virtual hosts but I have some that are running both on the same domain.
You just need to put your `WSGIScriptAlias /...` after any other Location/Alias directives.
Lets say, for example, I want to run phpMyAdmin on the same domain as a Django site. The config would look something like this:
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:
Your configuration should look something like this:
<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>
You don't need those `<Directory>` directives in `http.conf`... do all your configuration in the Virtual hosts.
Also, completely get rid of the `<Directory />` block.
Problem
I can currently run either Django through mod_wsgi or PHP on my Apache server. My Django projects run at: http://localhost and source is at C:/django_proj My PHP projects run at: http://php.localhost and source is at C:/web If I turn both on, php.localhost and localhost go to the Django project. I've already set them up through Apache virtual hosts. Here are some relevant lines in 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" ``` The relevant lines in `apache_django_wsgi.conf` is: ``` WSGIScriptAlias / "C:/django_proj/apache/proj.wsgi" <Directory "C:/django_proj/apache"> Order allow,deny Allow from all </Directory> ``` Inside 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> ``` My PHP project is current inaccessible. Does anyone have any ideas what I'm missing?