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