没有项目描述
collective.contentfiles2aws的Python项目详细描述
简介
使用collective.contentfiles2aws包,您可以存储plone文件 以及Amazon S3服务上的图像。
概述
该包的主要目的是将内容图像和文件移动到amazon CDN,允许以高性能和 高可用性。包包含两种内容类型:awsfile和awsimage 它的工作原理与默认的plone类似。主要区别在于 将他们的内容存储在Amazon的简单存储区,而不是Plone站点。 此外,包中还包含默认内容类型的修补程序,如图像、文件和 以及新闻节目。
兼容性
包裹在PLONE 3.3.5上测试。
要求
包需要boto库( http://github.com/boto/boto ) 与Python2.4兼容。
这个包是用@1011版本开发和测试的 博托图书馆的。对于手动签出,请使用以下命令:
svn co http://boto.googlecode.com/svn/trunk@1011
安装
要将包添加到zope实例,请执行以下操作:
- 按照 docs/install.txt文件中提供的说明进行操作。
- 重新启动zope实例。
- 使用quickinstaller安装 collective.contentfiles2aws 包 plone(站点设置>;添加/删除产品)。 < > >
安装包后,应正确配置它。为此, 你需要有一个亚马逊帐户。
亚马逊S3桶
上传到amazon s3的每个文件都存储在一个名为 桶在开始使用amazon s3之前,必须至少创建 一桶。bucket命名空间由系统所有用户共享; 所以,每个bucket的名称应该是唯一的。最多可以创建100个 每个帐户的存储桶数。每个bucket可以包含无限数量的文件。 bucket不能嵌套:不能在bucket内创建bucket。 Bucket所有权不可转让;但是,如果Bucket为空, 你可以删除它。删除一个bucket之后,该名称就可以用于 重新使用。但是,由于 原因,例如,具有相同名称的bucket可以由另一个bucket创建 帐户。所以,如果你想使用相同的bucket名称,不要删除bucket。 请注意,可能需要一些时间才能重用该名称。
存储在bucket中的对象数量没有限制。 性能不受使用的存储桶数的影响。 您可以将所有对象存储在一个桶中,也可以组织它们 穿过几个桶。
bucket命名规则
在除美国标准地区以外的所有地区,存储桶名称必须符合 使用以下规则(作为符合DNS的存储桶名称的结果):
< Buff行情>- bucket名称的长度必须至少为3个字符,且不得超过63个字符
- bucket名称必须是一个或多个分隔的标签系列 按句点(.),其中每个标签:
- 必须以小写字母或数字开头
- 必须以小写字母或数字结尾
- 可以包含小写字母、数字和破折号
- bucket名称不能格式化为IP地址(例如192.168.5.4)
我们标准区域的这些命名规则可以导致bucket名称 不符合DNS。例如,myawsbucket-是一个有效的bucket名称 名称中的大写字母。如果您尝试使用虚拟 托管样式请求,http://myawsbucket.s3.amazonaws.com/yourobject" rel="nofollow">http://myawsbucket.s3.amazonaws.com/yourobject, url解析为bucket myawsbucket,而不是bucket myawsbucket。 作为响应,amazon s3将返回一个not found错误。 为了避免这个问题,我们建议您始终使用符合dns的bucket 名称与创建存储桶的区域无关。
配置
将collective.contentfiles2aws包配置为与amazon一起工作 帐户,您需要完成以下步骤:
- 在站点根目录中,打开"门户属性"工具
- 找到"contentfiles2aws"属性表并单击它
- 在"AWS密钥ID"字段中,输入您的AWS密钥ID
- 在aws seecret密钥字段中,输入您的aws密钥
- 在aws_bucket_name字段中,输入创建的bucket的名称
- (可选)在aws_filename_prefix字段中,输入文件夹的名称 在桶里。此文件夹将用于存储您的文件。而且,你可以 提供斜杠分隔的路径,例如:folder1/folder2/folder3。 实际上,amazon s3中没有文件夹,只有键/值对。关键 可以包含斜线("/"),这将使它在 管理控制台,但程序上它不是一个文件夹,而是一个字符串 价值。无论如何,如果您喜欢使用文件夹,可以在 aws_filename_prefix字段。
- 选中"使用AWS"复选框。 此复选框允许您打开或关闭Amazon存储。 如果未选中"使用aws"复选框,则表示所有新创建的 使用aws文件或图像字段的内容类型将像默认类型一样工作, 并将其值存储在数据库中。创建的对象 从"使用AWS"复选框中删除所选内容之前,将照常工作。 如果选中"使用AWS"复选框,则所有新创建的具有AWS文件的对象 或者图像字段将其值存储到Amazon存储中。 < > >
自定义内容类型
如果要将图像或文件存储到自定义内容中的aws存储中 键入,您需要执行以下步骤:
< Buff行情>- 使用awsimagefield或awsfilefield代替默认的imagefield或file字段 在内容类型模式中。
- 为awsimagefield和awsfilefield使用awsimagewidget和awsfieldwidget 相应地。
- 对awsimagefield或 awsfilefield. < > >
下面是简单aws图像字段的示例:
`AWSImageField`('image', required=True, primary=True, languageIndependent=True, storage = `AWSStorage()`, pil_quality = zconf.pil_config.quality, pil_resize_algo = zconf.pil_config.resize_algo, max_size = zconf.ATImage.max_image_dimension, sizes= {'large' : (768, 768), 'preview' : (400, 400), 'mini' : (200, 200), 'thumb' : (128, 128), 'tile' : (64, 64), 'icon' : (32, 32), 'listing' : (16, 16), }, validators = (('isNonEmptyFile', V_REQUIRED), ('checkImageMaxSize', V_REQUIRED)), widget = `AWSImageWidget`( description = '', label= _(u'label_image', default=u'Image'), show_content_type = False,)),
迁移
如果你的网站上有很多图片和文件,并且你想 将它们全部移到amazon存储中,有一个简单的迁移过程 可以跟随。名为"migrate content"的迁移脚本(zope 3视图)可以是 在任何上下文中调用。如果调用"迁移内容"视图,将看到一个列表 包含至少一个aws字段(图像或文件)的内容类型 图式。(如果您的内容类型不在该列表中,则表示您没有 在其中使用aws字段,或者使用默认的图像和文件字段而不是aws 在内容类型列表旁边,您将看到 在此上下文中找到的每个内容类型。为特定内容迁移对象 键入,需要为"迁移内容"脚本传递"content_type"参数。
例如,如果要迁移图像内容类型,则需要指定它 像这样:
http://yourdomain/somefolder/migrate-content?content_type=Image
如果要迁移找到的所有内容类型的所有对象 在当前上下文中,需要为内容类型指定"all"值 参数,如下:
http://yourdomain/somefolder/migrate-content?content_type=all
脚本完成迁移后,将显示迁移内容的列表 每种内容类型的迁移字段的类型和数量。
注意:迁移是一个耗时的过程。可能需要几分钟 最多几个小时,具体取决于 数据库。
安全性
后YO安装软件包,对其进行配置,并打开aws存储, 所有文件和图像都将存储在amazon s3存储器中。意思是在 对象创建时,文件数据将发送到远程服务器。如果是远程的 由于某些原因(服务器上的错误配置或问题),服务器无法访问 你的数据不会丢失,它会保存在站点数据库中, 就好像你使用的是默认图像或文件而不是aws文件一样。毕竟 问题得到解决,所有aws文件和图片都是在amazon 无法访问,可以很容易地迁移到亚马逊。要迁移这些对象, 您需要单击编辑操作,然后在编辑窗体的图像下 或文件您将看到一个信息框,显示此图像或文件当前 保存在数据库中。单击"保存"按钮后,无论是否 无论是否有任何更改,系统都会尝试将图像或文件迁移到Amazon。 如果迁移成功,信息框将从编辑表单中消失。
URL生成
awsimagfield和awsfilefield具有生成正确url的小部件 到图像或文件。根据存储数据的位置,url将 指向亚马逊或你的网站。如果决定不使用小部件,则 可以使用"aws_image_url"和"aws_file_url"助手视图查看图像和文件 相应地生成url。下面是文件url助手视图用法的示例:
>>> from zope.component import getMultiAdapter >>> aws_file_url = \ ... getMultiAdapter((context, request), name=u'aws_file_url') >>> aws_file_url(instance, name='fieldname', brain=False)< DL>
有关图像URL帮助程序视图的用法:
>>> from zope.component import getMultiAdapter >>> aws_image_url = \ ... getMultiAdapter((context, request), name=u'aws_image_url') >>> aws_image_url(instance, name='fieldname', ... scale='scale_name', brain=False)< DL>
aws文件命名
存储在amazon bucket中的每个文件和图像都有唯一的名称,即 由以下部分生成:
< Buff行情>- 内容对象uid;
- 生成的零件
- 字段名
- 比例名称(用于图像)
- 文件名
例如:
Generated part Scale name |-----| |---| 003d34b5ba832f753ad91a6cdac1921f_537fd44_image_large_tanning-bed.jpg |------------------------------| |---| |-------------| Object UID Field name File name