logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动
04/10/2025, by Ivan

本指南将介绍设置 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” 后缀。