看了 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的配置方法一样。修改好以后,主站和子站就共用用户数据表啦。
大功告成!