我正在寻找一种仅使用单个域名在同一服务器上安装多个完全不同的Django项目的好方法。关键是我想浏览至以下内容:

http://192.168.0.1/gallery/#一个Django相册项目
http://192.168.0.1/blog/#一个博客项目

这样,我可以通过引用不同的URL在同一服务器上开发和测试多个django项目。 (注意:我不希望这个Django Sites模块是我想要的,因为项目需要有所区别)。例如,PHP的行为方式是这样的,因为我可以在同一服务器上安装php-gallery和phpmyadmin之类的东西,只是使用不同的URL路径。

有谁知道如何使用Apache(使用mod_python或mod_wsgi)在单个服务器上的多个URL下设置多个Django项目的任何好的资源?我想知道的事情是如何设置apache.conf,可能的virtualenv设置以及对urls.py的更改以适应这种情况。我看到的大多数Django部署示例都是针对每个域或子域一个应用程序。
任何建议深表感谢。

谢谢,

最佳答案

我曾遇到无法使用子域的情况,而使用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/'

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

等等。

10-01 04:02