Deploying multiple django apps on Apache with mod_wsgi
Solution 1
This is a problem with the wsgi.py file generated by Django 1.4. It will not work where trying to host two distinct Django instances in the same process, even though in separate sub interpreters.
Change:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site1.settings")
to:
os.environ["DJANGO_SETTINGS_MODULE"] = "site1.settings"
Or better still use daemon mode and delegate each to run in distinct daemon process groups.
That is, instead of:
WSGIScriptAlias /site1 /var/www/py/site1/site1/wsgi.py
WSGIScriptAlias /site2 /var/www/py/site2/site2/wsgi.py
WSGIPythonPath /var/www/py/site1:/var/www/py/site2
use:
WSGIDaemonProcess site1 python-path=/var/www/py/site1
WSGIScriptAlias /site1 /var/www/py/site1/site1/wsgi.py process-group=site1 application-group=%{GLOBAL}
WSGIDaemonProcess site2 python-path=/var/www/py/site2
WSGIScriptAlias /site2 /var/www/py/site1/site2/wsgi.py process-group=site2 application-group=%{GLOBAL}
UPDATE
Note that there is a whole blog post about this and other causes now.
Solution 2
Graham Dumpleton's response is the one you probably want to read closest, but I would suggest saving yourself a lot of heartburn by hosting your two Djangos at the root of different subdomains rather than at non-root locations on the same domain. There are lots of gotchas for running non-root Django sites IMHO.
Good luck!
Solution 3
Your apps listen on the same port, and there doesn't seem to be a proxy that delegates them to different ones.
You either have to setup VirtualHosts within apache or use Nginx, lighttpd or something else to create a proper proxy
Serafeim
Serafeim S. Papastefanos received his Diploma (2005) and Phd (2010) in EE from the National Technical University of Athens. He has been awarded for his academic progress from State Scholarships Foundation (SSF). His research interests include network management, network protocols, video coding, video indexing and video streaming. Since then he is working as a Software Engineer, starting from automating business processes with the Appian platform (heavy usage of Java/Javascript) and continuing with Django web development. He also keeps a small blog about various programming stuff @ http://spapas.github.io/ SOreadytohelp
Updated on August 04, 2022Comments
-
Serafeim over 1 year
I want to deploy two different django apps in the same host: The first will correspond to the url /site1 and the second to the url /site2. Here's my configuration:
LoadModule wsgi_module modules/mod_wsgi.so WSGIScriptAlias /site1 /var/www/py/site1/site1/wsgi.py WSGIScriptAlias /site2 /var/www/py/site2/site2/wsgi.py WSGIPythonPath /var/www/py/site1:/var/www/py/site2 <Directory "/var/www/py/site1/site1"> <Files wsgi.py> Order deny,allow Allow from all </Files> </Directory> <Directory "/var/www/py/site2/site2"> <Files wsgi.py> Order deny,allow Allow from all </Files> </Directory>
Also here's the wsgi.py file for both applications
import os import sys path = '/var/www/py/site1' if path not in sys.path: sys.path.append(path) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site1.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
Now, here's my problem. When I go to my server, let's say http://app1.sites.gr/site1 it some times loads site1, and some other times it loads site2 !!!! The same goes when I visit http://app1.sites.gr/site2 ... Sometiems I get the welcome page for site1, sometimes I get the welcome page for site2 ! I am hitting F5 and getting different welcome pages. I have checked everything for the previous hours and did not find anything strange...
Please, tell me what could be the problem before I go crazy ...
Thanks !