用 Drupal 架设多站点同步(Master/Slave)

目标:
一个主站点 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

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
This entry was posted in Technologies and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>