Joe*_*e J 8 python apache django
我正在寻找一种很好的方法,只使用一个域名在同一台服务器上安装多个完全不同的Django项目.关键是我想要浏览以下内容:
http://192.168.0.1/gallery/#jango 照片库项目
http://192.168.0.1/blog/#a blogging project
这样,我可以通过引用不同的URL在同一台服务器上开发和测试多个django项目.(注意:我不认为这个Django Sites模块是我正在寻找的,因为项目需要与众不同).作为一个例子,PHP的行为就像这样,因为我可以在同一台服务器上安装类似php-gallery和phpmyadmin的东西,只是使用不同的URL路径.
有没有人知道如何使用Apache(使用mod_python或mod_wsgi)在单个服务器上的多个URL下设置多个Django项目的任何好资源?我想知道的事情是如何设置apache.conf,可能的virtualenv设置,以及对urls.py的更改以适应这种情况.我看到的大多数Django部署示例都是针对每个域或子域的一个应用程序.
任何建议都非常感谢.
谢谢,
乔
Van*_*ale 15
我一直处在无法使用子域的情况下,实际上用Django处理这个问题的方法非常简单.
设置文件中的所有内容都与常规Django应用程序类似,但确保这些设置包含项目路径除外:
MEDIA_URL = 'http://192.168.0.1/gallery/media/'
ADMIN_MEDIA_PREFIX = '/gallery/admin_media/'
SESSION_COOKIE_PATH = '/gallery'
LOGIN_REDIRECT_URL = '/gallery/'
LOGIN_URL = '/gallery/accounts/login/'
LOGOUT_URL = '/gallery/accounts/logout/'
Run Code Online (Sandbox Code Playgroud)
SESSION_COOKIE_PATH对于防止同一域中的所有应用程序重写彼此的cookie至关重要.
上面的说明应该涵盖Django方面,但在Web服务器端还有更多工作要做.例如,如果你使用apache + mod_wsgi,你需要确保每个项目都有自己的wsgi脚本,加载方式如下:
WSGIScriptAlias /gallery /path/to/gallery/apache/gallery.wsgi
Alias /gallery/media /path/to/gallery/media
Alias /gallery/admin_media /path/to/gallery/venv/lib/python2.6/site-packages/django/contrib/admin/media
Run Code Online (Sandbox Code Playgroud)
等等
在您的问题中,您似乎正在使用projects
并apps
可互换.它们意味着Django中的单独事物.A project
包括安装文件,数据库配置和整体urlconf,您可以在域的根目录中使用它.An app
是一个单独的功能代码,它(通常)执行一项任务.
如果要部署多个应用程序,则需要创建单个项目并将每个应用程序复制到项目目录中.如果你看一下教程,你会看到如何在urlconf中包含一个应用程序.只需对每一个重复一遍,确保正则表达式是正确的.
这里的关键点是你让apache为你的整个django项目工作,然后你使用Django的内部urlconf来设置每个应用程序可以访问的位置.不要试图在同一个网址的根目录下运行多个项目 - 这几乎可以肯定是你做错了.
如果您指的是在单个域下运行多个项目,我们使用子域解决此问题.
由于我们正在构建的Django的项目(一般)设计用于居住在域的根时,他们实际部署中,如果你使用app1.example.com
和app2
等,你可以测试你一样会被部署在每个域的根.您可以像配置顶级域一样配置子域,然后轻松转移到最终部署.
如果您正在尝试实际部署这样的应用程序,请创建一个单独的Django项目,并使用urlconfs将每个Django应用程序包含在不同的子URL中.
归档时间: |
|
查看次数: |
5085 次 |
最近记录: |