我正在亚马逊 AWS 上进行 WordPress 部署配置。我在 Ubuntu EC2 实例上的 Apache 上运行 WordPress。我正在使用W3 Total Cache进行缓存并从 S3 存储桶提供用户上传的媒体文件。负载均衡器通过自动缩放将流量分配到两个 EC2 实例以处理重负载。
问题是用户上传的媒体文件存储在本地,wp-content/uploads/
然后同步到 S3 存储桶。这意味着 EC2 实例之间的媒体文件不一致。
以下是我正在考虑的方法:
- 使用 WordPress 插件将媒体文件直接上传到 S3,而无需将它们存储在本地。问题是我发现的唯一插件(这个和这个)都是错误的并且维护不善。我宁愿不花几个小时自己修复其中一个。也不清楚它们是否与 W3 Total Cache 完全集成(我也想将其用于其他缓存工具)。
- 拥有一个主实例,用户可以在其中访问管理界面并上传媒体文件。所有媒体文件都将本地存储在此实例上(并通过 W3 Total Cache 同步到 S3)。Auto Scaling 将部署没有本地文件存储的从属实例。
- 使所有 EC2 实例相同并指向
wp-content/uploads/
单独的 EBS 卷。所有实例都将共享媒体文件。 - 使用 rsync 在运行的 EC2 实例之间复制媒体文件。
有明确的赢家吗?还有其他我应该考虑的方法吗?