1

我们有三台服务器和同一个 WordPress 站点——一个 Live 版本、一个 Beta 版本和一个 Kiosk 版本(用于 iPad kiosk 的站点的有限版本)。Beta 站点是从betaGitHub 上的一个分支部署的,而 Live 和 Kiosk 站点都是从该master分支部署的。站点之间的任何功能差异都由环境变量控制,除了它们共享相同的代码。

wp-content/uploads文件夹在站点的所有三个版本之间共享,使用挂载的 Amazon EFS 文件系统(由于插件冲突而无法使用 S3)。这就是问题所在。

Live 和 Kiosk 服务器共享同一个 RDS 数据库,因此它们的媒体库始终保持同步。但是,Beta 服务器使用自己的独立数据库进行测试 - 由于 WP 媒体库对象存储在数据库中,这会导致以下问题:

  • 当文件上传到 Beta 站点时,它不会自动添加到 Live/Kiosk 站点的媒体库中(反之亦然)
  • 从共享上传文件夹中删除文件时,它不会自动从媒体库中删除,从而导致媒体库条目损坏/空。

这没有什么问题。这就是 Wordpress 的工作方式。我一直在通过使用“从服务器添加”插件来规避这个问题,该插件允许我手动保持媒体库同步 - 但如果能自动执行此操作会很好。

所以我认为以下任何一种解决方案都可以:

  1. 一种使两个数据库的“媒体”表保持同步,同时保持其余表分开的方法
  2. 一种根据wp-content/uploads文件夹内容自动更新所有 3 个服务器上的媒体库的方法,它也足够聪明,可以忽略缩略图版本(不幸的是,“从服务器添加”插件没有这样做,所以当我尝试时我结束了如果有意义的话,还有无数的“缩略图的缩略图”)

以前有没有人在类似的环境中工作过?关于我提出的任何一个解决方案的任何想法,或者可能是更好的解决方案?

4

1 回答 1

0

至于开发/登台环境,我通常与Jenkinsrsync结合使用,并将复制的媒体文件夹符号链接到每次我使用生产数据库的转储构建登台时。crontabwp-content/uploads

这还将为您提供在不同服务器上自动备份 db 和 media 文件夹的好处。

我通常建议不要通过更改 beta/dev 环境来更新实时数据库,因为这通常违背了这种环境的目的。

关于保持信息亭和生产同步,插件WPSiteSync看起来很有希望。我还没有在生产中尝试过,但它应该符合您的要求。

于 2018-05-29T09:11:55.087 回答