dashan 提交于
修改内容
网站的主域名及二级域名如下(将dsjz.cn替换成你的域名):
http://www.dsjz.cn
第一步:安装和配置主站点。
1、按照常用方法安装和配置drupal(假定安装的数据库名为db),在安装过程中为了区分主站和子站的数据表,需要通过“高级选项”加一个前缀“main_”。
2、使用phpmyadmin或者mysql工具修改以下数据库的表名:
'main_users' 重命名为'shared_users',
'main_sessions' 重命名为'shared_sessions',
'main_role'重命名为'shared_role',
'main_authmap'重命名为'shared_authmap',
'main_users_roles' 重命名为'shared_ users_roles',
3、重命名数据库表名后,前往drupal安装文件夹找到sites>default,将settings.php文件进行如下编辑(红色部分):
找到这一段代码
$databases = array (
'default'=>
array (
'default'=>
array (
'database'=> '你的数据库名',
'username'=> '你的用户名',
'password'=> '你的密码',
'host'=> 'localhost',
'port' => '',
'driver'=> 'mysql',
'prefix' => 'main_',
),
),
);
将其修改为
$databases = array (
'default'=>
array (
'default'=>
array (
'database'=> '你的数据库名',
'username'=> '你的用户名',
'password'=> '你的密码',
'host' => 'localhost',
'port'=> '',
'driver'=> 'mysql',
'prefix' => array(
'default' => 'main_',
'users' => 'shared_',
'sessions' => 'shared_',
'role' => 'shared_',
'authmap' => 'shared_',
'users_roles' => 'shared_',
),
),
),
);
4、保存修改过的文件,然后检测网站是否能够正常工作。
如果是不同数据库,则修改为:
$databases = array (
'default'=>
array (
'default'=>
array (
'database'=> '新建的数据库名',
'username'=> '这个密码必须和要共享用户的数据库用一个用户名',
'password'=> '数据库密码也要和共享用户的数据库的密码相同',
'host' => 'localhost',
'port'=> '',
'driver'=> 'mysql',
'prefix' => array(
'default' => '新建的数据库名',
'authmap' => '共享用户的数据库名.表前缀',
'profile_fields' => '共享用户的数据库名.表前缀',
'profile_values' => '共享用户的数据库名.表前缀',
'role' => '共享用户的数据库名.表前缀',
'sessions' => '共享用户的数据库名.表前缀',
'users' => '共享用户的数据库名.表前缀',
),
),
),
);
安装和配置子站点。
1、前往drupal安装文件夹,在sites目录下新建文件夹并命名为site1.example.com,然后复制/sites/default/的files文件到新建的文件夹,复制/sites/default/的default.settings.php并重命名为settings.php。
都是在settings.php里设置,有多少个站点,就有多少个settings.php需要修改。
注意修改:
1、db_prefix里,user表和sessions表的表前缀设置成相同,这样多个站点就会使用同一个用户数据库。
2、$cookie_domain的设置都设置成'dsjz.cn'。
设置完成以后,在a.dsjz.cn上登录,再访问b.dsjz.cn,还是保持登录状态!
不过drupal的在线用户模块显示有点不爽,如果使用多个浏览器登录,它会显示多个同一个用户多次。
修改好之后,我们就完成了配置,两个站点就可以共享用户数据了。这种方式的好处是,用户信息是真正的共享,用户体验最好,主站点与子站点的一切用户信息一模一样,没有任何差异。配置简单方便,无须任何插件。缺点是共享用户的站点必须使用同一个数据库,如果两个子站点不在一个主机上,子站点所有数据库需要远程读写,很不安全;并且这种方式会导致用户的头像共享存在一些问题,需要自己手动调整或者修改代码。
- 登录以发表评论