以下指南将重点介绍设置Drupal 8多站点所需的手动步骤。本指南正在进行中,仅提供了一些示例配置。其他选项可用,例如HTTPS,其他Web服务器和数据库,以及更精细的虚拟主机配置等。
但是,应注意,首选使用Aegir托管系统。它使用安全的最佳实践为您完成了所有繁重的工作,包括自动为Apache和Nginx配置虚拟主机,添加HTTPS支持,运行Composer命令等。有关设置“平台”的信息,请参见Aegir-speak。多站点代码库。
流程概述:
- 安装一个Drupal 8实例,它将作为我们多站点实例的根站点。在我们的示例中,根站点将称为d8multisite,可通过d8multisite.com进行访问,并将其安装在/ var / www / d8multisite
- 在名为site1的多站点中建立一个站点,该站点可从site1.d8multisite.com访问
- 将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拥有自己的模块:
- 在site1的子目录中创建一个“模块”文件夹:/d8multisite/sites/site1.d8multisite.com/modules
- 授予apache对此文件夹的写访问权限
chown www-data /d8multisite/sites/site1.d8multisite.com/modules
- 测试一下:
- 移出site1的子目录(即移至根站点)并使用drush安装pathauto模块
drush dl pathauto
- 移至site1的子目录并使用drush安装ds模块
drush dl ds
- 访问两个站点并确认:
- 两个站点均提供Pathauto
- 展示套件仅在site1中可用
- 移出site1的子目录(即移至根站点)并使用drush安装pathauto模块
注意:这里的假设是您可以使用主题,库和文件来执行此操作。这里需要更多的测试和文档。
在多站点中使用草绘
您可以使用-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”
评论