具有共享用户的理论多服务器WordPress设置

时间:2012-11-07 作者:Jeremy

如果我们能够利用位于多个(约5个)不同服务器上的现有WordPress安装,并且能够使用一个仅包含users表的通用数据库,那么我所在的组织将受益匪浅。各个服务器将为其余内容使用一个数据库。

想法是这样的。拥有一个“主”服务器,其中包含用户的所有数据(大约300多个用户),网络管理员可以在每个其他服务器上为这些用户授予/编辑权限。

这样,当用户登录到一台服务器上的一个WordPress安装时,用户可以访问另一个WordPress服务器,并且仍然可以使用不同服务器上的各种权限登录。

WordPress网络与服务器之间的关系为1:1。为了实现这一点,需要如何利用cookie或会话?

为了实现这一点,是否需要使用外部API登录系统?或者这可以在WordPress核心文件中完成吗?

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

这是可能的。处理登录和Cookie的许多核心API是pluggable.

您可以替换wp_set_current_user 例如,使用查询外部数据库而不是内部数据库的内容。

身份验证已通过authenticate 过滤器(wp_authenticate 是执行此操作的函数,并将过滤器添加到wp_signout).

简言之,有很多方法可以让你钩住它,做你自己的事,改变东西。但是,您将丢失几乎所有的用户API(否get_users, 没有用户管理区域等),除了用户功能所在的主站点之外。

An alternative approach 将使所有约5台服务器/WP安装共享相同的外部数据库服务器和数据库。从那里开始,set a custom user table 在每个wp-config.php, 并且每个单独的安装共享相同的用户数据。您还需要设置不同的$table_prefix 对于每个站点。

由于WordPress存储角色/大写的方式不同,每个站点的功能和角色也会有所不同(它们的前缀是$table_prefix). 所有核心用户数据,即用户名、电子邮件和密码,将在服务器之间共享。

当然this is just a WP multisite install 没有多站点的便利。

多站点+adomain mapping plugin 可能是你想要的。或者你可以扮演自己的角色sunrise.php 并跳过域映射插件。应该可以将多个应用程序服务器与共享数据库服务器一起运行WP安装。将所有域指向一个将流量发送到其中一个应用程序服务器的负载平衡器,就完成了。

结束