没有项目描述

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实例,请执行以下操作:

  1. 按照 docs/install.txt文件中提供的说明进行操作。
  2. 重新启动zope实例。
  3. 使用quickinstaller安装 collective.contentfiles2aws 包 plone(站点设置>;添加/删除产品)。
  4. < > >

    安装包后,应正确配置它。为此, 你需要有一个亚马逊帐户。

亚马逊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)
< DL>
以下是有效存储桶名称的示例:
> UL>
  • Myawsbucket
  • my.aws.bucket
  • myawsbucket.1
  • 我们标准区域的这些命名规则可以导致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一起工作 帐户,您需要完成以下步骤:

    1. 在站点根目录中,打开"门户属性"工具
    2. 找到"contentfiles2aws"属性表并单击它
    3. 在"AWS密钥ID"字段中,输入您的AWS密钥ID
    4. 在aws seecret密钥字段中,输入您的aws密钥
    5. 在aws_bucket_name字段中,输入创建的bucket的名称
    6. (可选)在aws_filename_prefix字段中,输入文件夹的名称 在桶里。此文件夹将用于存储您的文件。而且,你可以 提供斜杠分隔的路径,例如:folder1/folder2/folder3。 实际上,amazon s3中没有文件夹,只有键/值对。关键 可以包含斜线("/"),这将使它在 管理控制台,但程序上它不是一个文件夹,而是一个字符串 价值。无论如何,如果您喜欢使用文件夹,可以在 aws_filename_prefix字段。
    7. 选中"使用AWS"复选框。 此复选框允许您打开或关闭Amazon存储。 如果未选中"使用aws"复选框,则表示所有新创建的 使用aws文件或图像字段的内容类型将像默认类型一样工作, 并将其值存储在数据库中。创建的对象 从"使用AWS"复选框中删除所选内容之前,将照常工作。 如果选中"使用AWS"复选框,则所有新创建的具有AWS文件的对象 或者图像字段将其值存储到Amazon存储中。
    8. < > >

    自定义内容类型

    如果要将图像或文件存储到自定义内容中的aws存储中 键入,您需要执行以下步骤:

    < Buff行情>
    1. 使用awsimagefield或awsfilefield代替默认的imagefield或file字段 在内容类型模式中。
    2. 为awsimagefield和awsfilefield使用awsimagewidget和awsfieldwidget 相应地。
    3. 对awsimagefield或 awsfilefield.
    4. < > >

      下面是简单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>
    其中:
    > UL>
  • 实例-是内容对象或大脑;
  • name-字段名;
  • < DL>
    brain-如果实例是object,则需要设置为false的布尔标志
    不是大脑。(正确-默认)

    有关图像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>
    其中:
    > UL>
  • 实例-是内容对象或大脑;
  • name-字段名;
  • scale-图像比例(无-默认设置);
  • < DL>
    brain-如果实例是object,则需要设置为false的布尔标志
    不是大脑。(真-默认);

    aws文件命名

    存储在amazon bucket中的每个文件和图像都有唯一的名称,即 由以下部分生成:

    < Buff行情>
    • 内容对象uid;
    • 生成的零件
    • 字段名
    • 比例名称(用于图像)
    • 文件名

    例如:

                                 Generated part   Scale name
                                     |-----|       |---|
    003d34b5ba832f753ad91a6cdac1921f_537fd44_image_large_tanning-bed.jpg
    |------------------------------|         |---|       |-------------|
            Object UID                    Field name       File name
    

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    Java如何关闭类共享   java我正在安卓中集成paytm all-in-one sdk,每次我都会得到一个成功的代码,但在安卓中主体是空的   OncreateView中的java意外NPE   java SOAP UI支持JCEKS密钥库吗?   java JDialog未显示最小化/关闭按钮   java数组出现问题,无法向其添加任何内容   安卓 java。单击按钮时出现lang.NullPointerException   单击后更改按钮样式   java使用循环分区分配策略提供CommitFailedException   java与屏幕底部的安卓相交   java在两个或多个noSQL数据库上处理事务的方法是什么?   java 安卓。R.布局。简单微调器项目显示:“预期的类或包”   java如何处理字谜搜索过程中字符串排列的时间复杂性?   对象getClass在Java中是如何工作的   java RxJava如何在flatmap结果选择器中直接返回值   java如何在spring security antmatchers中使用参数   java RestEasyClientBuild寄存器ResteasyJackson2Provider警告重复   java计算ping时间