我需要建立一个可在互联网上公开查看的django开发环境(我在学校这样做,我的项目需要由我的教授查看,这不是一个需要很多安全性的设置)。我有一个运行Ubuntu 8.04 LTS的虚拟服务器。
我需要在我的主站点的子目录中运行多个django应用程序。也就是说,我需要mysite.com作为静态页面,mysite.com/wordpress是我的wordpress博客,mysite.com/django1 mysite.com/django2等是django项目。
我正在使用apache,我将使用sqlite或mysql。
似乎有许多不同的方法来安装和配置django,因为有网站提供建议,并且所有这些方法都假定单个项目将成为网站的根。我非常感谢你的帮助,谢谢你。
答案 0 :(得分:3)
您可以使用
WSGIScriptAlias /django1 /home/keratacon/www/django1/wsgi.py
WSGIScriptAlias /django2 /home/keratacon/www/django2/wsgi.py
在您的apache+mod_wsgi config中,假设wsgi.py
是您的wsgi脚本的名称。
答案 1 :(得分:0)
Django文档有一个描述deployment on Apache的页面。还有一个关于运行multiple installations on the same server。
的部分答案 2 :(得分:0)
This blog解释了解决方案(假设使用mod_wsgi,与nginx / uwsgi,解决方案类似显然在nginx / uwsgi中这不是必需的。)
WSGIScriptAlias的第一个参数 - /sub-url
将从请求网址中删除,其余的将转到您的django应用程序。如果您的Django应用程序网址都以/sub-url
开头(由mod_wsgi删除),那么您将无法在这些网址上显示视图,除非您“重新插入”/sub-url
到请求路径部分。
import django.core.handlers.wsgi
_application = django.core.handlers.wsgi.WSGIHandler()
def application(environ, start_response):
#the line below will re-append the sub-url to all urls
environ['PATH_INFO'] = environ['SCRIPT_NAME'] + environ['PATH_INFO']
#this one will make django think that it's the only thing running on the server
environ['SCRIPT_NAME'] = '' # my little addition to make it work
return _application(environ, start_response)
同样在您的urls.py中,所有网址都必须以您感兴趣的子网址为前缀。
最后,WSGIScriptAlias必须与子url相同:
#the below line will "take-out" the sub-url and pass the rest
#to your wsgi script
WSGIScriptAlias /sub-url /path/to/wsgi_script
文件/path/to/wsgi_script
必须包含application
的定义,如第一个代码段所示。
为了在Django中使“sub-url”设置显式化,必须在Django框架内进行等效的请求路径修补。