我如何在相同的 domain.I 下部署多个 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

我需要在同一个域名下部署两个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

配置中的最后一行需要是

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

您的配置存在一些问题:

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 装载博客。
  • /blogWSGIScriptAlias 移动到 /WSGIScriptAlias 之前,以便它优先,否则 / 将始终首先匹配,并且永远不会通过博客网站。
  • 根据最佳实践,使用 WSGIDaemonProcess 指令的 python-home 来指定虚拟环境的位置,而不是使用 python-path.
  • 添加 site-packages
  • 使用 process-group 选项 WSGIScriptAlias 来指示要使用哪个守护进程组。这使它更精确。您对 WSGIProcessGroup 的使用不会起作用,因为它不符合 LocationDirectory 范围,因此两个 WSGIProcessGroup 指令中的最后一个将覆盖第一个.
  • application-group设置为%{GLOBAL}以强制使用每个守护进程的主解释器上下文。这解决了 Python 的某些第三方扩展模块无法在子解释器上下文中工作的问题。