我们有三台服务器和同一个 WordPress 站点——一个 Live 版本、一个 Beta 版本和一个 Kiosk 版本(用于 iPad kiosk 的站点的有限版本)。Beta 站点是从beta
GitHub 上的一个分支部署的,而 Live 和 Kiosk 站点都是从该master
分支部署的。站点之间的任何功能差异都由环境变量控制,除了它们共享相同的代码。
该wp-content/uploads
文件夹在站点的所有三个版本之间共享,使用挂载的 Amazon EFS 文件系统(由于插件冲突而无法使用 S3)。这就是问题所在。
Live 和 Kiosk 服务器共享同一个 RDS 数据库,因此它们的媒体库始终保持同步。但是,Beta 服务器使用自己的独立数据库进行测试 - 由于 WP 媒体库对象存储在数据库中,这会导致以下问题:
- 当文件上传到 Beta 站点时,它不会自动添加到 Live/Kiosk 站点的媒体库中(反之亦然)
- 从共享上传文件夹中删除文件时,它不会自动从媒体库中删除,从而导致媒体库条目损坏/空。
这没有什么问题。这就是 Wordpress 的工作方式。我一直在通过使用“从服务器添加”插件来规避这个问题,该插件允许我手动保持媒体库同步 - 但如果能自动执行此操作会很好。
所以我认为以下任何一种解决方案都可以:
- 一种使两个数据库的“媒体”表保持同步,同时保持其余表分开的方法
- 一种根据
wp-content/uploads
文件夹内容自动更新所有 3 个服务器上的媒体库的方法,它也足够聪明,可以忽略缩略图版本(不幸的是,“从服务器添加”插件没有这样做,所以当我尝试时我结束了如果有意义的话,还有无数的“缩略图的缩略图”)
以前有没有人在类似的环境中工作过?关于我提出的任何一个解决方案的任何想法,或者可能是更好的解决方案?