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?
Django isn't a HTTP server. You need a HTTP server like Apache, Nginx, etc along with the correct php module to run your PHP script. Then you can configure Django to run on the same server.
Django will work with any version of Apache which supports mod_wsgi. The official mod_wsgi documentation is your source for all the details about how to use mod_wsgi. You'll probably want to start with the installation and configuration documentation.
Django is a powerful web framework that can help you get your Python application or website off the ground quickly. Django includes a simplified development server for testing your code locally, but for anything even slightly production related, a more secure and powerful web server is required.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With