我有一个安装的Plone 4.3.3与一个网站。首先,将构建器配置为在var/filestorage中使用Data.fs文件,在var/ blob存储中使用共享blob存储。然后,我向构建器添加了一个Relstorage,并将Data.fs文件的内容转换为底层的MySQL数据库。现在Plone使用的是Relstorage而不是Data.fs。
但是现在我也想使用Relstorage而不是But存储。因为我对Plone比较陌生,尤其是Relstorage,所以我的想法是首先设置一个新的空Plone。然后,我将buildout.cfg和base.cfg从第一个复制到新的。然后,我创建了一个新的数据库userZodb,并更改了使用新数据库的base.cfg,还更改了zeoserver和客户端的端口。下一步是重新配置不使用基于文件的based存储的重新存储。
rel-storage =
type mysql
db userZodb
user zodbuser
passwd innzop
blob-dir ${buildout:var-dir}/blobstorage
shared-blob-dir false
# shared blobs are much faster if we're on the same server.
# if not, turn it off.
shared-blob = off然后我跑了大楼。一切都是成功建造的。启动zeoserver之后,我从客户端获得了以下错误:
user@server:~/Plone433-dev/zeocluster3$ ./bin/zeoserver start
.
daemon process started, pid=35136
user@server:~/Plone433-dev/zeocluster3$ ./bin/client1 fg
2014-12-17 14:50:31 INFO ZServer HTTP server started at Wed Dec 17 14:50:31 2014
Hostname: 0.0.0.0
Port: 9180
2014-12-17 14:50:32 INFO Products.PloneFormGen gpg_subprocess initialized, using /usr/bin/gpg
Traceback (most recent call last):
File "/home/user/Plone433-dev/zeocluster3/parts/client1/bin/interpreter", line 289, in <module>
exec(compile(__file__f.read(), __file__, "exec"))
File "/home/user/Plone433-dev/buildout-cache/eggs/Zope2-2.13.22-py2.7.egg/Zope2/Startup/run.py", line 76, in <module>
run()
File "/home/user/Plone433-dev/buildout-cache/eggs/Zope2-2.13.22-py2.7.egg/Zope2/Startup/run.py", line 22, in run
starter.prepare()
File "/home/user/Plone433-dev/buildout-cache/eggs/Zope2-2.13.22-py2.7.egg/Zope2/Startup/__init__.py", line 86, in prepare
self.startZope()
File "/home/user/Plone433-dev/buildout-cache/eggs/Zope2-2.13.22-py2.7.egg/Zope2/Startup/__init__.py", line 262, in startZope
Zope2.startup()
File "/home/user/Plone433-dev/buildout-cache/eggs/Zope2-2.13.22-py2.7.egg/Zope2/__init__.py", line 47, in startup
_startup()
File "/home/user/Plone433-dev/buildout-cache/eggs/Zope2-2.13.22-py2.7.egg/Zope2/App/startup.py", line 81, in startup
DB = dbtab.getDatabase('/', is_root=1)
File "/home/user/Plone433-dev/buildout-cache/eggs/Zope2-2.13.22-py2.7.egg/Zope2/Startup/datatypes.py", line 287, in getDatabase
db = factory.open(name, self.databases)
File "/home/user/Plone433-dev/buildout-cache/eggs/Zope2-2.13.22-py2.7.egg/Zope2/Startup/datatypes.py", line 185, in open
DB = self.createDB(database_name, databases)
File "/home/user/Plone433-dev/buildout-cache/eggs/Zope2-2.13.22-py2.7.egg/Zope2/Startup/datatypes.py", line 182, in createDB
return ZODBDatabase.open(self, databases)
File "/home/user/Plone433-dev/buildout-cache/eggs/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZODB/config.py", line 101, in open
storage = section.storage.open()
File "/home/user/Plone433-dev/buildout-cache/eggs/RelStorage-1.6.0b2-py2.7.egg/relstorage/config.py", line 33, in open
return RelStorage(adapter, name=config.name, options=options)
File "/home/user/Plone433-dev/buildout-cache/eggs/RelStorage-1.6.0b2-py2.7.egg/relstorage/storage.py", line 212, in __init__
self.blobhelper = BlobHelper(options=options, adapter=adapter)
File "/home/user/Plone433-dev/buildout-cache/eggs/RelStorage-1.6.0b2-py2.7.egg/relstorage/blobhelper.py", line 118, in __init__
fshelper.create()
File "/home/user/Plone433-dev/buildout-cache/eggs/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZODB/blob.py", line 359, in create
(self.layout_name, self.base_dir, layout))
ValueError: Directory layout `zeocache` selected for blob directory /home/user/Plone433-dev/zeocluster3/var/blobstorage/, but marker found for layout `bushy`不幸的是,我不知道问题出在哪里。有什么建议吗?谢谢!
发布于 2015-01-06 12:33:49
解决办法是再次使用zodbconvert。正确配置它可以从一个存储转换到另一个存储,例如从from存储转换到Relstorage。在我的例子中,配置如下所示:
<filestorage source>
path /home/user/Plone433-dev/zeocluster/var/filestorage/Data20141230.fs
blob-dir /home/user/Plone433-dev/zeocluster/var/blobstorage
</filestorage>
<relstorage destination>
shared-blob-dir false
# ZODB Cache Dir
blob-dir ./var/cacheblob
blob-cache-size 10mb
<mysql>
host localhost
db Zodb
user zodbuser
passwd XXXXXXXXX
</mysql>
</relstorage>在此之后,您必须更改您的base.cfg和buildout.cfg,以便只使用重新存储。您可以在这里找到更多关于其工作原理的信息:https://www.techidiots.net/notes/plone-1/plone-4-3-3-relstorage
发布于 2014-12-30 10:39:58
如果使用relstorage,则blob目录仍然用于缓存(查看更多信息)。在您的例子中,您的目录布局存在问题。
您可以删除${ buildout:var }中的孔目录并重新运行buildout。这将创建一个新的var目录。启动实例后,应该有一个具有正确布局的新blob目录。
或
您可以在${buildout:.layout }/var/ from存储中修改bushy文件,并将值从bushy更改为zeocache
解释:
当您第一次启动Plone实例时,它将使用给定的布局创建Plone存储目录--在您的示例中,它是默认的bushy。因为您更改了存储,所以它希望使用zeocache。但是标记文件.layout不会自动更改。
如果这没有帮助,请张贴您的完整buildout.cfg。
https://stackoverflow.com/questions/27527145
复制相似问题