Drupal 8多站点

hrs 提交于 2019/09/22 - 14:35 , 周日

以下指南将重点介绍设置Drupal 8多站点所需的手动步骤。本指南正在进行中,仅提供了一些示例配置。其他选项可用,例如HTTPS,其他Web服务器和数据库,以及更精细的虚拟主机配置等。

但是,应注意,首选使用Aegir托管系统。它使用安全的最佳实践为您完成了所有繁重的工作,包括自动为Apache和Nginx配置虚拟主机,添加HTTPS支持,运行Composer命令等。有关设置“平台”的信息,请参见Aegir-speak。多站点代码库。

流程概述:

  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> # virtual host configuration for drupal 8 multisite root site 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并按照安装UI来安装Drupal。

步骤2:为多站点配置第一个站点

现在我们已经设置了根站点,我们可以开始配置我们的第一个站点site1。以下是此过程中的步骤:

2.1:在您的多站点中为site1创建一个文件夹:/d8multisite/sites/site1.d8multisite.com

2.1:为site1创建一个数据库,例如:d8multisite-site1

2.3:制作/d8multisite/sites/example.sites.php的副本,称为/d8multisite/sites/sites.php

2.4:编辑sites.php,使文件结尾看起来像这样:

# make the root drupal site aware of site1: $sites['site1.d8multisite.com'] = 'site1.d8multisite.com';

2.5:为site1创建一个虚拟主机。请注意,此虚拟主机应指向根站点,而不是站点的子目录。请注意,您也可以放弃为该站点创建新的虚拟主机配置,而只是将新站点作为根站点的ServerAlias创建。但是,在此Apache示例中,我们将为site1创建一个单独的虚拟主机:

<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_error.log combined </VirtualHost>

2.6:将/d8multisite/sites/default/default.settings.php复制为新站点的目录,并将它们作为settings.php:

#from the drupal root folder cp sites/default/default.settings.php sites/site1.d8multisite.com/settings.php

2.7:通过访问站点的域来完成site1的Drupal安装过程。

每次要在多站点中构建站点时,都可以重复这些步骤。您也可以使用example.com和site1.anotherdomain.com之类的域。有关域,URL和站点子目录名称的更多详细信息

步骤3:启用每个站点的模块

在某些情况下,您可能希望多站点中的一个站点拥有自己的模块。为此,您只需要在目标站点的文件夹中创建适当的文件夹。在此示例中,我们将使site1拥有自己的模块:

  1. 在site1的子目录中创建一个“模块”文件夹:/d8multisite/sites/site1.d8multisite.com/modules
  2. 授予apache对此文件夹的写访问权限 chown www-data /d8multisite/sites/site1.d8multisite.com/modules
  3. 测试一下:
    1. 移出site1的子目录(即移至根站点)并使用drush安装pathauto模块 drush dl pathauto
    2. 移至site1的子目录并使用drush安装ds模块 drush dl ds
    3. 访问两个站点并确认:
      1. 两个站点均提供Pathauto
      2. 展示套件仅在site1中可用

注意:这里的假设是您可以使用主题,库和文件来执行此操作。这里需要更多的测试和文档。

在多站点中使用草绘

您可以使用-l选项:

drush -l example.com command

或网站别名:

drush @alias command

要检查使用了什么别名,请执行:

drush site:alias

其输出示例如下:

'@ sub1.dev':
  根:/var/www/mydomain.com/web 
  URI: ' https://sub1.mydomain.com ' 
'@ default.dev':
  根:/var/www/mydomain.com/网页
  URI: ' https://sub2.mydomain.com ' 
'@ third.dev':
  根:/var/www/mydomain.com/web 
  URI: ' https://thirddomain.com '

正确的drush命令可能是:

drush @sub1 updb
注意:我们不在别名中使用“ .dev”

标签