目标:
一个主站点 www.master.com
多个子站点 www.slave1.com、www.slave2.com…
站点间用户同步,登陆状态(session)同步……
使用drupal架设,只需要一套drupal代码根据不同站点的不同配置文件分割,当然也可以用多套代码。
配置文件:
- sites/default/settings.php – for master.com
- sites/www.slave1.com/settings.php – for slave1.com
- sites/www.slave2.com/settings.php – for slave2.com
共享用户
分别安装master.com、slave1.com和slave2.com的drupal,安装的时候设置数据表前缀(master_、slave1_和slave2_)
修改sites/www.slave1.com/settings.php
1 2 3 4 5 6 7 8 9 10 11 | $db_prefix = array( 'default' => 'slave1_', // slave1.com 的表前缀为 slave1_ 'authmap' => 'master_', // 对于共享的用户表使用主站master.com的数据, 表前缀为 master_ 'profile_fields' => 'master_', 'profile_values' => 'master_', 'role' => 'master_', 'sequences' => 'master_', 'sessions' => 'master_', 'users' => 'master_', 'users_roles' => 'master_', ); |
修改sites/www.slave2.com/settings.php
1 2 3 4 5 6 7 8 9 10 11 | $db_prefix = array( 'default' => 'slave2_', // slave2.com 的表前缀为 slave2_ 'authmap' => 'master_', // 对于共享的用户表使用主站master.com的数据, 表前缀为 master_ 'profile_fields' => 'master_', 'profile_values' => 'master_', 'role' => 'master_', 'sequences' => 'master_', 'sessions' => 'master_', 'users' => 'master_', 'users_roles' => 'master_', ); |
这样,就实现了用户同步,现在可以在任意一个站点注册新用户,然后到其他站点登陆作为测试。
session同步
下载Shared Sign-On
在各个站点都安装Shared Sign-On
在这个例子里master.com是主站点,所以设置所有的站点(包括主站点)的Shared Sign-On Master URL 为 http://www.master.com
好了,现在可以做到 session 同步了
还有高级点的多站点代码分开的实现可以参考 http://drupal.org/node/291373