drupal 多站 部分数据共享
drupal 多站 部分数据共享
wankaiming 发表于7年前
drupal 多站 部分数据共享
  • 发表于 7年前
  • 阅读 717
  • 收藏 4
  • 点赞 0
  • 评论 1

新睿云服务器60天免费使用,快来体验!>>>   

域名 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这个网站里面的用户数据。

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
wankaiming
粉丝 71
博文 224
码字总数 59096
评论 (1)
nemo1986
等跨域登陆吗
×
wankaiming
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: