文档章节

drupal 多站 部分数据共享

wankaiming
 wankaiming
发布于 2010/11/05 12:06
字数 1341
阅读 719
收藏 4

域名 mainsite.com subsite.com babysite.com
数据库名 mainsite subsite babysite
数据库表前缀 main_ sub_ baby_

三个数据库的用户名和密码都为一样的,记得安装时使用同一个数据库,用户名为:username,密码为:password,这三个网站安装完成之后,我们需要进行一些高级配置,让Subsite.com与Babysite.com这两个网站共享Mainsite.com这个网站的用户数据,并且共享登陆信息,但是其它的信息都是各自使用各自的。

上面已经说明了本文的目的了,所以我们现在正式开始介绍如何达到上面所述的目的(我们这里先假设三个域名都被绑定到主机上面的public_html目录,并且这个目录现在已经有一份Drupal系统的代码)。

首先,我们打开public_html/sites/default目录,找到default.settings.php文件,把这个文件复制一个复本,再把这个复本的文件名称修改成为settings.php,然后把public_html/sites/default目录复制三个复本,一个复本重命名为subsite.com,另一个复本重命名为babysite.com,还有一个复本重命名为mainsite.com,前期准备工作到这里就结束了,进行这样的操作之后,我们就可以进行多站点安装了,这是基本的Drupal多站点安装步骤,如果你还不了解如何进行Drupal多站点安装,可以先去阅读Drupal官方的相关文档,在这里不对多站点安装进行详细的说明。

接下来,我们首先将三个网站按基本的多站点安装步骤进行安装,即选访问mainsite.com,进行正常的安装操作,然后再安装subsite.com和 babysite.com,安装完之后,我们的三个数据库中已经有了三个网站的数据,当然,每一个网站的用户数据也都保存在里面了,下面我们需要做的就是,让subsite.com和babysite.com这两个网站不使用自己的用户数据,而是使用mainsite.com的用户数据。

要达到上面这个目的,我们需要修改subsite.com和babysite.com这两个网站的settings.php文件,因为 Settings.php文件在Drupal安装完成之后,其权限就会被Drupal修改成为只读,所以,在进行修改之前,我们需要把这个文件的权限修改成为可写,这可以使用cPanel的File Manager来修改,也可以使用FTP软件来修改,或者使用SSH登陆,可以运行Shell命令:chmod 0755 settings.php也可,但是,我们有很多人的主机可能会出现一个问题,那就是上面这所有的方法都不能修改这个文件的权限,这个时候,我们可以通过运行一段php代码来修改,如下:


$folder="subsite.com/";
$file=$folder."settings.php";
chmod($folder,0755);
chmod($file,0755);


你可以在sites目录新建一个文件,命名为chmod.php,然后将上面这段代码复制进去,最后访问http://subsite.com/sites/chmod.php,即可把public_html/sites/subsite.com这个目录和这个目录里面的settings.php文件的权限都设置成为0755,要修改babysite.com的文件只需要把那个目录名修改一下就行。

到现在为止,你应该需要正式开始编辑settings.php文件了,这个对于不明白的人来说可能会很难,但是对于有所了解的人来说,只要看了下面的这个例子就全明白了,如下,我现在先让subsite.com不再调用自己的用户数据,而是使用mainsite.com的用户数据(在这里请把本文前面专门列出来的数据库信息看清楚),那么我们只要:

1. 打开settings.php文件,找到:
$db_url = 'mysqli://username:password@localhost/subsite';
$db_prefix = 'sub_';
这一段代码;
2. 将上面这一段代码修改成为下面这样的:
$db_url = 'mysqli://username:password@localhost/subsite';
$db_prefix = array(
'default' => 'sub_',
'authmap' => 'mainsite.main_',
'profile_fields' => 'mainsite.main_',
'profile_values' => 'mainsite.main_',
'role' => 'mainsite.main_',
'sessions' => 'mainsite.main_',
'users' => 'mainsite.main_',
);
3. 然后保存。

现在访问你的subsite.com,先退出登陆,再注册一个新用户,之后再以管理员身份登陆mainsite.com,查看一下用户列表,看是否刚才在subsite.com上面注册的用户在mainsite.com的用户管理里面可以看到?如果你在过程中没有出错的话,那么现在你是可以看到的,也就是说你已经完成了两个网站的安装,并且让其中一个网站与另一个网站共享了用户数据。

下面我来解释一下为什么这样做,首先,原 settings.php里面的那两行文件,就是说明了Drupal应该访问哪个数据库,是用哪个用户去登陆数据库,数据表的前缀是什么,而后面我们修改了的,把$db_prefix这个变量由原来的字符变量修改成为了一个数组,这个数组里,第0个键"default"的值"sub_"就是说明,subsite.com的数据库表前缀为"sub_",而后的键的值都为"mainsite.main_",这是说,当网站需要读取authmap、 profile_fields、profile_values、role、sessions、users这几个键的值时,将不使用默认的数据库以及前缀,而是使用mainsite这个数据库,并且使用表前缀为main_,也就是使用mainsite.com这个网站里面的用户数据。

本文转载自:http://drupalchina.org/node/6664

共有 人打赏支持
wankaiming

wankaiming

粉丝 71
博文 226
码字总数 64083
作品 0
广州
高级程序员
加载中

评论(1)

nemo1986
nemo1986
等跨域登陆吗
Drupal 7.17 发布,专业的 CMS 内容管理系统

Drupal 7.17 发行说明 本次更新只修正部分错误和API/功能的改进 (并无主要的新功能加入) ; 大量的新功能敬请期待即将到来的 Drupal 8.0 版本。 此外该版本并无安全修补(因为她太安全了^...

主编
2012/11/08
2.4K
6
Drupal 8.2.3 和 7.52 发布,CMS 内容管理系统

Drupal 8.2.3 和 7.52 双版本发布了,Drupal 是一个开源的内容管理系统 (CMS) 平台,它是用 PHP 写成的。主要用于构造提供多种功能和服务的动态网站,这些功能包括用户管理 (UserAdministrat...

王练
2016/11/17
905
1
流行 CMS 系统 Drupal 8.5.3 发布,修复安全漏洞

Drupal 8.5.2 已发布,这是 Drupal 8 系列最新的维护和安全版本,主要修复了一个中危安全漏洞,建议所有用户升级: Drupal core - Critical - Remote Code Execution - SA-CORE-2018-004 Dr...

王练
04/27
0
0
老牌 CMS 系统 Drupal 8.5.2 发布,修复重要安全漏洞

Drupal 8.5.2 已发布,这是 Drupal 8 系列最新的维护和安全版本,主要修复了一个中危安全漏洞,建议所有用户升级: Drupal core - Moderately Critical - Cross Site Scripting- SA-CORE-20...

王练
04/22
0
0
Drupal 8.0.5 发布,内容管理系统(CMS)

Drupal 8.0.5 发布了,Drupal是一个开源的内容管理系统(CMS) 平台,它是用PHP写成的。主要用于构造提供多种功能和服务的动态网站,这些功能包括用户管理(UserAdministration)、发布工作流 (P...

oschina
2016/03/05
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java工程师用spring boot和web3j构建以太坊区块链应用

区块链最近IT世界的流行语之一。这项有关数字加密货币的技术,并与比特币一起构成了这个热门的流行趋势。它是去中心化的,不可变的分块数据结构,这是可以安全连接和使用的密码算法。在这种结...

笔阁
刚刚
0
0
聊聊sentinel的SentinelWebAutoConfiguration

序 本文主要研究一下sentinel的SentinelWebAutoConfiguration SentinelWebAutoConfiguration spring-cloud-alibaba-sentinel-autoconfigure-0.2.0.BUILD-SNAPSHOT-sources.jar!/org/springf......

go4it
2分钟前
0
0
java ArrayList 根据对象内的属性排序

//根据修改时间排序Comparator com = new Comparator<ReleaseInfo>() {public int compare(ReleaseInfo reInfo1, ReleaseInfo reInfo2) { //return reInfo2.getModifyTime().c......

成长中的小白
2分钟前
0
0
PowerDesigner p f m

(非原创) P:PirmaryKey 主键 F:ForeignKey 外键 M:Mandatory 强制要求(不能为空) 主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从...

森火
3分钟前
0
0
Nexus Repository Manager 搭建私有docker仓库

Nexus Repository Manager 搭建私有docker仓库 2018年05月08日 14:44:23 阅读数:115 1.下载nexus3的镜像: docker pull sonatype/nexus3 2.使用镜像启动一个容器: docker run -d --name n...

linjin200
4分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部