Deploying multiple django apps on Apache with mod_wsgi

懵懂的女人 提交于 2019-11-27 17:53:25

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.

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

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!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!