供应商

October CMS Documentation Docs

供应商

默认情况下,媒体管理器使用本地磁盘提供程序。 您需要先安装 驱动插件 (opens new window),然后才能使用 Amazon S3 功能。

注意:更改媒体管理器配置后,您应该重置其缓存。 您可以通过按下媒体管理器工具栏中的 Refresh 按钮来实现。

# 本地磁盘

默认情况下,媒体管理器使用安装目录的 storage/app/media 子目录。 为了使用 Amazon S3,您应该更新 config/system.php 配置文件中的系统配置,并按照本文中的说明进行操作。

'storage' => [
    'media' => [
        'disk'   => 'local',
        'folder' => 'media',
        'path'   => '/storage/app/media',
    ],
],

# 配置 Amazon S3 访问

要将 Amazon S3 与 October CMS 一起使用,您应该创建 S3 存储桶、存储桶中的文件夹和 API 用户。

注册 Amazon AWS 账户或使用您现有的账户登录 AWS 控制台。 打开 S3 管理面板。 创建一个新存储桶并为其分配任意名称(存储桶的名称将成为您的公共文件 URL 的一部分)。

在存储桶中创建 media 文件夹。 文件夹名称无关紧要。 该文件夹将是您媒体库的根目录。

默认情况下,无法直接访问 S3 存储桶中的文件。 要公开存储桶,请返回存储桶列表并单击存储桶。 单击右侧栏中的Properties按钮。 展开Permissions选项卡。 单击Edit bucket policy 链接。 将以下代码粘贴到策略弹出窗口。 将存储桶名称替换为您的实际存储桶名称:

{
    "Version": "2008-10-17",
    "Id": "Policy1397632521960",
    "Statement": [
        {
            "Sid": "Stmt1397633323327",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::BUCKETNAME/*"
        }
    ]
}

单击Save按钮以应用该策略。该策略授予公共只读访问存储桶中所有文件夹和目录的权限。如果您打算将存储桶用于其他需要,可以设置对存储桶中特定文件夹的公共访问权限,只需在 Resource 值中指定目录名称:

"arn:aws:s3:::BUCKETNAME/media/*"

您还应该创建一个 API 用户,October CMS 将使用该用户来管理存储桶文件。在 AWS 控制台中,转到 IAM 部分。转到用户选项卡并创建一个新用户。用户名无关紧要。创建新用户时,请确保选中"为每个用户生成访问密钥"复选框。 AWS 创建用户后,它允许您查看安全凭证 - 用户 Access Key IDSecret Access Key。复制密钥并将它们放入临时文本文件中。

返回用户列表并单击您刚刚创建的用户。在 Permissions 部分,单击 Attach Policy 按钮。在列表中选择 AmazonS3FullAccess 策略,然后单击 Attach Policy 按钮。

现在您拥有更新 October CMS 配置的所有信息。打开 config/filesystem.php 脚本并找到 disks 部分。它已经包含s3配置,需要替换API凭证和bucket信息参数:

参数
key 您之前创建的用户的 Access Key ID 值。
secret 您之前创建的用户的 Secret Access Key 值。
bucket 您的存储桶名称。
region 存储桶区域代码,见下文。

您可以在 S3 管理控制台的存储桶属性中找到存储桶区域。 "属性"选项卡显示区域名称,例如俄勒冈州。 S3 驱动程序配置需要存储桶代码。 使用此表查找存储桶的代码(您也可以查看 AWS 文档 (opens new window)):

地区 代码
美国东部 (俄亥俄州) us-east-2
美国东部 (弗吉尼亚北部) us-east-1
美国西部 (加利福尼亚北部) us-west-1
美国西部 (俄勒冈州) us-west-2
亚太地区 (香港) ap-east-1
亚太地区 (孟买) ap-south-1
亚太地区 (大阪本地) ap-northeast-3
亚太地区 (汉城) ap-northeast-2
亚太地区 (新加坡) ap-southeast-1
亚太地区 (悉尼) ap-southeast-2
亚太地区 (东京) ap-northeast-1
加拿大 (中央) ca-central-1
中国 (北京) cn-north-1
中国 (宁夏) cn-northwest-1
欧盟 (法兰克福) eu-central-1
欧盟 (爱尔兰) eu-west-1
欧盟 (伦敦) eu-west-2
欧盟 (巴黎) eu-west-3
欧盟 (斯德哥尔摩) eu-north-1
南美洲 (圣保罗) sa-east-1
中东 (巴林) me-south-1

更新后的示例配置:

'disks' => [
    // ...
    's3' => [
        'driver' => 's3',
        'key'    => 'XXXXXXXXXXXXXXXXXXXX',
        'secret' => 'xxxXxXX+XxxxxXXxXxxxxxxXxxXXXXXXXxxxX9Xx',
        'region' => 'us-west-2',
        'bucket' => 'my-bucket'
    ],
    // ...
]

保存 config/filesystem.php 脚本并打开 config/system.php 脚本。 找到storage部分。 在media参数中更新diskfolderpath参数:

参数
disk 使用 s3 值。
folder 您在 S3 存储桶中创建的文件夹的名称。
path 存储桶中文件夹的公共路径,见下文。

要获取文件夹的路径,请打开 AWS 控制台并转到 S3 部分。 导航到存储桶并单击您之前创建的文件夹。 将任何文件上传到文件夹并单击该文件。 单击右侧栏中的Properties按钮。 文件 URL 在 Link 参数中。 复制 URL 并从中删除文件名和尾部斜杠。

示例存储配置:

'storage' => [
    // ...
    'media' => [
        'disk'   => 's3',
        'folder' => 'media',
        'path' => 'https://s3-us-west-2.amazonaws.com/your-bucket-name/media'
    ]
]

恭喜!现在您已准备好将 Amazon S3 与 October CMS 结合使用。请注意,您还可以配置 Amazon CloudFront CDN 以使用您的存储桶。本文档未涉及该主题,请参阅CloudFront 文档 (opens new window)。配置 CloudFront 后,您需要更新存储配置中的 path 参数。

# 故障排除

使用远程服务最常见的问题是 SSL 连接问题。 如果您收到 SSL 错误,请确保您的服务器具有公共证书颁发机构 (CA) 的新 SSL 证书。

# 中国大陆地区特别说明

中国大陆地区可以优先选择阿里云OSS,您可以选择阿里云 OSS (opens new window)插件进行扩展。由于此插件开发者已停止维护,若不兼容October CMS2您可以咨询中国大陆建站合作商超越无限建站 (opens new window)