如何在同一个域下部署多个 django cms 项目。我使用的是 apache 2.2 和 mod_wsgi

Posted

技术标签:

【中文标题】如何在同一个域下部署多个 django cms 项目。我使用的是 apache 2.2 和 mod_wsgi【英文标题】:how can I deploy multiple django cms projects under same domain.I am using apache 2.2 and mod_wsgi 【发布时间】:2017-01-30 21:22:28 【问题描述】:

我需要在同一个域名下部署两个 Django Cms 项目。调用以下域时,我需要检索这两个站点。 http://rndbkw.tk http://rndbkw.tk/blog

我在 httpd.conf 中有两个 wsgi 配置

为http://rndbkw.tk

ServerName rndbkw.tk
WSGIDaemonProcess rnd python-path=/home/rndbkw/djangocms:/home/rndbkw/virtualenv2.7/lib/python2.7/site-packages/
WSGIProcessGroup rnd
WSGIScriptAlias / /home/rndbkw/djangocms/rnd/wsgi.py

ServerName rndbkw.tk
WSGIDaemonProcess blog python-path=/home/rndbkw/projects/djangocms:/home/rndbkw/projects/virtualenv2.7/lib/python2.7/site-packages/
WSGIProcessGroup blog
WSGIScriptAlias / /home/rndbkw/projects/djangocms/rnd/wsgi.py

但我无法回复http://rndbkw.tk/blog

【问题讨论】:

【参考方案1】:

您的配置存在一些问题:

ServerName rndbkw.tk
WSGIDaemonProcess rnd python-path=/home/rndbkw/djangocms:/home/rndbkw/virtualenv2.7/lib/python2.7/site-packages/
WSGIProcessGroup rnd
WSGIScriptAlias / /home/rndbkw/djangocms/rnd/wsgi.py

ServerName rndbkw.tk
WSGIDaemonProcess blog python-path=/home/rndbkw/projects/djangocms:/home/rndbkw/projects/virtualenv2.7/lib/python2.7/site-packages/
WSGIProcessGroup blog
WSGIScriptAlias / /home/rndbkw/projects/djangocms/rnd/wsgi.py

改为使用:

ServerName rndbkw.tk

WSGIDaemonProcess blog python-home=/home/rndbkw/projects/virtualenv2.7 python-path=/home/rndbkw/projects/djangocms
WSGIScriptAlias /blog /home/rndbkw/projects/djangocms/rnd/wsgi.py process-group=blog application-group=%GLOBAL

WSGIDaemonProcess rnd python-home=/home/rndbkw/virtualenv2.7 python-path=/home/rndbkw/djangocms
WSGIScriptAlias / /home/rndbkw/djangocms/rnd/wsgi.py process-group=rnd application-group=%GLOBAL

所做的更改是:

/blog 的子 URL 上挂载博客。 将WSGIScriptAlias/blog 移到/ 之前,这样它就具有优先权,否则/ 将始终首先匹配,并且任何内容都不会通过博客站点。 根据最佳实践,使用WSGIDaemonProcess 指令的python-home 指定虚拟环境的位置,而不是使用python-path 添加site-packages。 使用process-group 选项到WSGIScriptAlias 来指示要使用哪个守护进程组。这使它更精确。您对 WSGIProcessGroup 的使用不会起作用,因为它不适用于 LocationDirectory 范围,因此两个 WSGIProcessGroup 指令中的最后一个将覆盖第一个。 将application-group设置为%GLOBAL以强制使用每个守护进程的主解释器上下文。这解决了一些 Python 的第三方扩展模块在子解释器上下文中不起作用的问题。

【讨论】:

我使用了相同的配置,它可以正常工作。但是当我登录到 rndbkw.tk/blog 时。签名后,它将重定向到 rndbkw.tk。我不知道会发生什么。当我删除 rndbkw.tk 时,rndbkw.tk/blog 出现在没有样式的浏览器中。出了什么问题?请帮助我.. 除非你应该把你的实际mod_wsgi配置这样才能验证它是正确的,否则是不可能的。还要显示您在 Django 设置中设置的登录 URL 设置。但是不要在这里这样做,去问一个描述你的问题的新问题。您不应该针对旧问题提出问题。【参考方案2】:

配置中的最后一行需要是

WSGIScriptAlias /blog /home/rndbkw/projects/djangocms/rnd/wsgi.py

【讨论】:

以上是关于如何在同一个域下部署多个 django cms 项目。我使用的是 apache 2.2 和 mod_wsgi的主要内容,如果未能解决你的问题,请参考以下文章

django 可重用应用程序:删除迁移中的依赖项?

django cms 搜索多个站点?

如何在服务器上/同一域下的多个 ColdFusion 应用程序之间共享会话?

如何在 django-cms 中使用表单?

如何在 nginx 上托管的单个域下托管多个烧瓶应用程序?

weblogic 集群 中 一个域下一个服务 启动报错。错误代码如下,请帮忙