2

我正在亚马逊 AWS 上进行 WordPress 部署配置。我在 Ubuntu EC2 实例上的 Apache 上运行 WordPress。我正在使用W3 Total Cache进行缓存并从 S3 存储桶提供用户上传的媒体文件。负载均衡器通过自动缩放将流量分配到两个 EC2 实例以处理重负载。

问题是用户上传的媒体文件存储在本地,wp-content/uploads/然后同步到 S3 存储桶。这意味着 EC2 实例之间的媒体文件不一致。

以下是我正在考虑的方法:

  1. 使用 WordPress 插件将媒体文件直接上传到 S3,而无需将它们存储在本地。问题是我发现的唯一插件(这个这个)都是错误的并且维护不善。我宁愿不花几个小时自己修复其中一个。也不清楚它们是否与 W3 Total Cache 完全集成(我也想将其用于其他缓存工具)。
  2. 拥有一个主实例,用户可以在其中访问管理界面并上传媒体文件。所有媒体文件都将本地存储在此实例上(并通过 W3 Total Cache 同步到 S3)。Auto Scaling 将部署没有本地文件存储的从属实例。
  3. 使所有 EC2 实例相同并指向wp-content/uploads/单独的 EBS 卷。所有实例都将共享媒体文件。
  4. 使用 rsync 在运行的 EC2 实例之间复制媒体文件。

有明确的赢家吗?还有其他我应该考虑的方法吗?

4

1 回答 1

5

您可能会考虑查看类似 s3fs (http://code.google.com/p/s3fs/) 的内容。这允许您将 S3 存储桶作为卷安装在服务器实例上。您可以简单地让代码在实例启动时执行挂载卷。

s3fs 还可以使用本地(临时)目录作为 s3fs 目录的缓存,以提高性能。

于 2012-12-28T23:24:47.757 回答