Я настроил Plone со следующим buildout (через http://build.pythonpackages.com/buildout/plone/4.2.x):
[buildout]
allow-hosts =
*.plone.org
*.python.org
extensions = buildout.bootstrap
extends = http://dist.plone.org/release/4.2b1/versions.cfg
find-links = http://dist.plone.org/thirdparty/elementtree-1.2.7-20070827-preview.zip
parts =
mod-wsgi
plone
plone-mod-wsgi
plone-paste
versions = versions
[mod-wsgi]
recipe = collective.recipe.modwsgi
eggs = ${plone:eggs}
config-file = ${buildout:directory}/plone-mod-wsgi.ini
[plone]
recipe = plone.recipe.zope2instance
eggs =
PasteScript
Pillow
Plone
WebError
repoze.retry
repoze.tm2
repoze.vhm
products =
user = admin:admin
scripts = paster
[plone-mod-wsgi]
recipe = collective.recipe.template
url = http://build.pythonpackages.com/buildout/plone/plone-mod-wsgi.ini.in
output = ${buildout:directory}/plone-mod-wsgi.ini
[plone-paste]
recipe = collective.recipe.template
url = http://build.pythonpackages.com/buildout/plone/plone-paste.ini.in
output = ${buildout:directory}/plone-paste.ini
[versions]
distribute = 0.6.24
zc.buildout = 1.5.2
Zope2 = 2.13.11
и Apache со следующим конфигом:
<VirtualHost *:80>
…
# Use only 1 Python sub-interpreter. Multiple sub-interpreters
# play badly with C extensions.
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess plone user=aclark group=staff processes=1 \
threads=4 \
python-path=/srv/aclark.net/eggs
WSGIScriptAlias / /srv/aclark.net/parts/mod-wsgi/wsgi
<Directory /srv/aclark.net>
WSGIProcessGroup plone
Order allow,deny
Allow from all
SetEnv HTTP_X_VHM_HOST http://aclark.net
SetEnv HTTP_X_VHM_ROOT /Plone
</Directory>
</VirtualHost>
Моя «декларативная» конфигурация WSGI (вызывается / srv / aclark.net / parts / mod-wsgi / wsgi ) выглядит следующим образом:
[app:plone]
use = egg:Zope2#main
zope_conf = /srv/aclark.net/parts/plone/etc/zope.conf
[pipeline:main]
pipeline =
egg:repoze.retry#retry
egg:repoze.tm2#tm
egg:repoze.vhm#vhm_xheaders
plone
# Begin logging configuration
[loggers]
keys = root
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = WARN
handlers = console
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
# End logging configuration
Это все частично работает, загружая http://aclark.net/Plone, когда вы запрашиваете http://aclark.net. Однако Zope2 все еще генерирует URL, которые начинаются с http://aclark.net/Plone.
Я что-то упустил? Или это ошибка Zope2 (при правильной настройке она не работает правильно с / 1030 * repoze.vhm )