媒体管理器默认使用本地磁盘提供程序。您需要安装 Flysystem S3 软件包才能使用 Amazon S3 功能。
composer require league/flysystem-aws-s3-v3 "^3.0"更改媒体管理器配置后,您应该重置其缓存。您可以通过按下媒体管理器工具栏中的刷新按钮来完成此操作。
默认情况下,媒体管理器使用安装目录下的 storage/app/media 子目录。为了使用 Amazon S3,您应该更新位于 config/filesystems.php 配置文件中的系统配置,并遵循本文中的说明。
'media' => [
'driver' => 'local',
'root' => storage_path('app/media'),
'url' => '/storage/app/media',
'visibility' => 'public',
'throw' => false,
],要将 Amazon S3 与 October CMS 配合使用,您应该创建 S3 存储桶,存储桶中的文件夹和 API 用户。
注册 Amazon AWS 账户或使用您现有账户登录 AWS 控制台.打开 S3 管理面板.创建一个新存储桶并为其指定任意名称(存储桶的名称将成为您公共文件 URL 的一部分).
默认情况下,S3 存储桶中的文件无法直接访问。要使存储桶公开,请返回存储桶列表并点击该存储桶。点击右侧边栏中的 属性 按钮。展开 权限 选项卡。点击 编辑存储桶策略 链接。将以下代码粘贴到策略弹出窗口。将存储桶名称替换为你的实际存储桶名称:
{
"Version": "2008-10-17",
"Id": "Policy1397632521960",
"Statement": [
{
"Sid": "Stmt1397633323327",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKETNAME/*"
}
]
}点击 保存 按钮以应用此策略。此策略对存储桶中的所有文件夹和目录提供公共只读访问。如果您打算将此存储桶用于其他用途,可以设置对存储桶中特定文件夹的公共访问,只需在 Resource 值中指定目录名称:
"arn:aws:s3:::BUCKETNAME/media/*"
您还应该创建一个API用户,October CMS将使用该用户来管理存储桶文件。在AWS控制台中,前往IAM部分。转到用户选项卡并创建一个新用户。用户名无关紧要。当您创建新用户时,请确保选中“为每个用户生成访问密钥”复选框。AWS创建用户后,它会允许您查看安全凭证——用户的访问密钥ID和秘密访问密钥。复制这些密钥并将它们放入一个临时文本文件。
返回用户列表并点击您刚刚创建的用户。在权限部分点击附加策略按钮。在列表中选择AmazonS3FullAccess策略并点击附加策略按钮。
现在您已掌握更新 October CMS 配置的所有信息。打开 config/filesystems.php 脚本并找到 disks 部分。它已经包含了媒体配置,您需要将 driver 更改为 s3 并替换 API 凭据和存储桶信息参数:
| Parameter | Value |
|---|---|
| driver | the storage driver to use, local or s3. |
| key | the Access Key ID value of the user that you created before. |
| secret | the Secret Access Key value of the user that you created fore. |
| bucket | your bucket name. |
| region | the bucket region code, see below. |
| url | the public path of the folder in the bucket, see below. |
您可以在 S3 管理控制台中,在存储桶属性中找到存储桶区域。属性选项卡会显示区域名称,例如 Oregon。S3 驱动程序配置需要一个存储桶代码。使用此表查找您的存储桶代码。您还可以查阅 AWS 文档。
| Region | Code |
|---|---|
| US East (Ohio) | us-east-2 |
| US East (N. Virginia) | us-east-1 |
| US West (N. California) | us-west-1 |
| US West (Oregon) | us-west-2 |
| Asia Pacific (Hong Kong) | ap-east-1 |
| Asia Pacific (Mumbai) | ap-south-1 |
| Asia Pacific (Osaka-Local) | ap-northeast-3 |
| Asia Pacific (Seoul) | ap-northeast-2 |
| Asia Pacific (Singapore) | ap-southeast-1 |
| Asia Pacific (Sydney) | ap-southeast-2 |
| Asia Pacific (Tokyo) | ap-northeast-1 |
| Canada (Central) | ca-central-1 |
| China (Beijing) | cn-north-1 |
| China (Ningxia) | cn-northwest-1 |
| EU (Frankfurt) | eu-central-1 |
| EU (Ireland) | eu-west-1 |
| EU (London) | eu-west-2 |
| EU (Paris) | eu-west-3 |
| EU (Stockholm) | eu-north-1 |
| South America (São Paulo) | sa-east-1 |
| Middle East (Bahrain) | me-south-1 |
要获取该文件夹的 URL,请打开 AWS 控制台并转到 S3 部分。导航到存储桶并单击您之前创建的文件夹。将任意文件上传到该文件夹并单击该文件。单击右侧边栏中的属性按钮。文件 URL 在链接参数中。复制该 URL 并从中删除文件名和末尾的斜杠。
更新后的示例配置:
'disks' => [
// ...
'media' => [
'driver' => 's3',
'key' => 'XXXXXXXXXXXXXXXXXXXX',
'secret' => 'xxxXxXX+XxxxxXXxXxxxxxxXxxXXXXXXXxxxX9Xx',
'region' => 'us-west-2',
'bucket' => 'my-bucket',
'url' => 'https://s3-us-west-2.amazonaws.com/your-bucket-name',
'visibility' => 'public',
'throw' => false
],
// ...
]保存 config/filesystems.php 脚本,恭喜您!现在您已准备好在 October CMS 中使用 Amazon S3。请注意,您还可以配置 Amazon CloudFront CDN 以与您的存储桶配合使用。本文档不涵盖此主题,请参阅 CloudFront 文档。配置 CloudFront 后,您需要更新文件系统配置中的 url 参数。
使用远程服务时最常见的问题是 SSL 连接问题。如果您遇到 SSL 错误,请确保您的服务器具有来自公共证书颁发机构 (CA) 的最新 SSL 证书。