Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I run Django and PHP together on one Apache server?

Tags:

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?

like image 291
Thierry Lam Avatar asked Jun 19 '09 22:06

Thierry Lam


People also ask

Can you use PHP with Django?

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.

Can I use Django with Apache?

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.

What is Django Apache server?

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.


1 Answers

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.

like image 162
Van Gale Avatar answered Sep 20 '22 04:09

Van Gale