看了 Drupal 8 官方文档,并不是很详细。并且在源代码中的实例,也并不完整实用。
想要启用 Drupal 8 多站点,举例:
www.zenkr.test主站site1.zenkr.test子站 1site2.zenkr.test子站 2
配置好环境
我们首先要把 Drupal 代码安装好。在 Nginx 中将 3 个域名都解析到 Drupal 的 主目录 (以 /path/to/drupal/ 为例)。
修改 sites.php
首先我们要先修改文件 sites/sites.php 文件。
$sites['site1.zenkr.test'] = 'site1.zenkr.test';$sites['site2.zenkr.test'] = 'site2.zenkr.test';
其中前面的是域名,后面的是 sites 文件夹下面的对应目录名。
默认的主站就不需要配置了,默认安装在 default 文件夹下
创建文件夹
在 sites 文件夹下,分别创建 2 个子文件夹:
- site1.zenkr.test
- site2.zenkr.test
并将目录权限均设置为777
安装 Drupal
此时,分别输入 3 个网站的域名,分别安装。
在数据库前缀 prefix 配置上,建议主站
www_,子站1site1_,子站2site2_。
分别安装配置好以后。继续。
主要工作已经完成
其实,现在已经是一套代码,分别运行 3 个独立的网站了。(数据表完全独立)
如果我们想创建一个站群,需要共享用户数据。那么还需要修改 settings.php 文件。
修改 settings.php
此时,在 default site1.zenkr.test site2.zenkr.test 下,分别产生了 settings.php 文件和 files 子目录。
如果我们希望 site1 site2 共享使用 www 的用户数据表,我们只需要修改子站配置文件即可。
修改 site1.zenkr.test/settings.php
$databases['default']['default'] = array(// 'database' => 'mysql_database',// 'username' => 'mysql_username',// 'password' => 'mysql_password','prefix' => array('default' => 'site1_','users' => 'www_','user__roles' => 'www_','user__user_picture' => 'www_','users_data' => 'www_','users_field_data' => 'www_','sessions' => 'www_',),// 'host' => 'db',// 'port' => '3306',// 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',// 'driver' => 'mysql',);
site2的配置方法一样。修改好以后,主站和子站就共用用户数据表啦。
大功告成!
