【问题标题】:how can I deploy multiple django cms projects under same domain.I am using apache 2.2 and mod_wsgi如何在同一个域下部署多个 django cms 项目。我使用的是 apache 2.2 和 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

【问题讨论】:

    标签: django apache python-2.7 cpanel mod-wsgi


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2012-12-19
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多