如何在同一个域下部署多个 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
的使用不会起作用,因为它不适用于 Location
或 Directory
范围,因此两个 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的主要内容,如果未能解决你的问题,请参考以下文章