我一直在 AWS 上使用Bitnami 多层 WordPress堆栈。
我知道如何在 AWS 上使用自动缩放,但是没有任何文档告诉我在使用 WordPress 之类的东西时在哪里存储可变数据文件。
数据库在 RDS 上,所以这不是问题,上传的静态文件可以保存在 S3 或 EFS 上。延迟不会成为问题,因为静态文件将位于 CloudFront CDN 上。
我不确定如何处理该wp-content/plugins
目录,因为 WordPress 管理员会更改那里的数据,所以它不能只是 AMI 的一部分。
此页面在“甚至不要考虑从 EFS 运行应用程序代码”下说,由于延迟,这些文件不应位于 EFS 上。
那么是否应该使用 EC2 引导脚本或类似的东西将这些文件从 EFS 复制到新实例?我想我可以使用 rsync 或 aws-cli 吗?
或者我应该通过生命周期钩子或 Lambda 来执行此操作?
这不可能是一个不寻常的情况,所以我很惊讶找到有关此的任何信息是多么困难。
您的网站有多忙?对于 EFS 提供的中小型企业 WordPress 网站应该足够好。
从那开始,看看你怎么走。如果你发现它太慢了,你有很多选择:
确保您使用具有高且一致的网络吞吐量的EC2 实例类型。EFS 性能取决于实例网络性能,因此预算 T2/T3 实例类型不会表现良好。
EFS 性能取决于存储的数据量 - 您存储的数据越多,它们为您提供的吞吐量就越高。一种选择是创建一个大的虚拟文件(几 GB 大小)来增加吞吐量。
如果您不希望这样,您可以为EFS 预置吞吐量付费- 这将提高您的性能,但需要支付一些额外费用。
配置PHP Opcache或其他一些 PHP 字节码缓存机制。
在 Apache / Nginx 配置中配置缓存和过期标头。特别是如果您还要从 EFS 提供图像和 javascript 文件。这将有助于减少访问您的服务器的流量 - 进而减少 EFS - 用于永不改变的内容。
考虑使用AWS CloudFront作为另一个缓存层,再次减少服务器上的负载。
有了上述内容,您应该可以从 EFS 提供网站服务。
希望有帮助:)