Drupal 8 多站点
本指南将介绍设置 Drupal 8 多站点所需的步骤。该指南仍在编写中,目前仅包含部分配置示例。还可以使用其他选项,例如 HTTPS、不同的 Web 服务器和数据库,以及更高级的虚拟主机配置等。
不过需要注意的是,使用 Aegir 托管系统 是更推荐的选择。它会为您完成所有繁重的配置任务,采用安全的最佳实践,包括自动为 Apache 和 Nginx 配置虚拟主机、添加 HTTPS 支持、运行 Composer 命令等。请参阅 平台设置文档(Aegir 中的 “平台” 一词即指多站点代码库)。
流程概述:
1. 安装一个 Drupal 8 实例,作为我们多站点环境的主站点。在本示例中,主站点名为 d8multisite,可通过 d8multisite.com 访问,并安装在 /var/www/d8multisite。
2. 在多站点中创建一个名为 site1 的网站,可通过 site1.d8multisite.com 访问。
3. 配置 site1 使其拥有独立于主站点的模块。
步骤 1:创建主站点
首先,在您的服务器上安装一份 Drupal 8。若您不熟悉,请阅读 Drupal 8 安装文档。
在本示例中,我们按以下步骤安装 Drupal:
1.1: 为多站点主站创建数据库,例如:d8multisite。
1.2: 下载并解压 Drupal 8 到您的 Web 目录中。
1.3: 为主站点创建虚拟主机配置。请参阅 虚拟主机配置文档。以下是 Apache 的虚拟主机配置示例;如使用 Nginx,请参考 官方配置示例。
<VirtualHost *:80> # Drupal 8 多站点主站虚拟主机配置 ServerAdmin me@domain.com DocumentRoot /var/www/d8multisite ServerName d8multisite.com ServerAlias www.d8multisite.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/d8multisite> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/d8multisite_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/d8multisite_access.log combined </VirtualHost>
1.4: 访问 d8multisite.com 并按照安装向导完成 Drupal 安装。
步骤 2:配置第一个多站点网站
主站点设置完成后,我们可以继续创建第一个子站点 site1。步骤如下:
2.1: 在多站点目录中为 site1 创建文件夹:/d8multisite/sites/site1.d8multisite.com
2.2: 为 site1 创建数据库,例如:d8multisite_site1
2.3: 将 /d8multisite/sites/example.sites.php 复制为 /d8multisite/sites/sites.php
2.4: 编辑 sites.php,使文件末尾内容如下:
# 让主站 Drupal 识别 site1: $sites['site1.d8multisite.com'] = 'site1.d8multisite.com';
2.5: 为 site1 创建虚拟主机。注意,该虚拟主机应指向主站目录,而非子目录。您也可以不新建虚拟主机,仅在主站配置中添加 ServerAlias。以下是 Apache 独立虚拟主机示例:
<VirtualHost *:80> ServerAdmin me@domain.com DocumentRoot /var/www/d8multisite ServerName site1.d8multisite.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/d8multisite> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/site1-d8multisite_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/site1-d8multisite_access.log combined </VirtualHost>
2.6: 将 /d8multisite/sites/default/default.settings.php 复制为新网站目录中的 settings.php:
# 从 Drupal 根目录执行 cp sites/default/default.settings.php sites/site1.d8multisite.com/settings.php
2.7: 访问 site1 的域名并完成 Drupal 安装。
每当您想创建新的网站时,都可以重复这些步骤。您也可以使用不同的域名,例如 example.com 和 site1.anotherdomain.com。更多信息请参阅关于域名、URL 和站点子目录的文档。
步骤 3:为每个网站启用模块
有时您可能希望某个子站拥有独立的模块。要实现这一点,只需在该子站文件夹中创建相应的目录。参见 Drupal 8 多站点文件夹结构。
在本示例中,我们让 site1 拥有自己的模块:
1. 在 site1 子目录下创建 “modules” 文件夹:/d8multisite/sites/site1.d8multisite.com/modules
2. 使用以下命令给予 Apache 写入权限:chown www-data /d8multisite/sites/site1.d8multisite.com/modules
3. 验证步骤:
1)在主站目录执行命令安装 Pathauto 模块:drush dl pathauto
2)进入 site1 子目录并安装 Display Suite 模块:drush dl ds
3)访问两个网站并验证结果:
- Pathauto 在两个网站上都可用
- Display Suite 仅在 site1 可用
注意:同样的方法也可用于主题、库和文件,但仍需进一步测试与文档支持。
在多站点中使用 drush
您可以使用 -l 选项:
drush -l example.com command
或使用站点别名:
drush @alias command
要查看可用的站点别名,请运行:
drush site:alias
示例输出可能如下:
@sub1.dev :
root: /var/www/mydomain.com/web
uri: «https://sub1.mydomain.com»
@default.dev :
root: /var/www/mydomain.com/web
uri: «https://sub2.mydomain.com/»
@third.dev :
root: /var/www/mydomain.com/web
uri: «https://thirddomain.com»
正确的 drush 命令示例:
drush @sub1 updb
注意: 在别名中不使用 “.dev” 后缀。