使用 composer和 drush 设置和安装 Drupal 9

hrs 提交于 2021/06/26 - 14:20 , 周六

Drupal 9 的第一个稳定版本将于 2020 年 6 月发布,但几天前核心团队发布了第一个测试版。现在是开始测试 Drupal 9 的好时机,因此当稳定版本发布时,您将做好准备。我们将专门为本地开发目的设置和安装 drupal。当然,您可以调整生产的所有设置。


准备


除了所有标准系统要求(如 PHP (>=7.3))、Web 服务器(如 Apache 或 Ngnix)和数据库(如 MySQL)外,您还需要在本地计算机上安装 composer。如果还没有,请查看官方网站上的安装说明。


通过 COMPOSER 下载 DRUPAL 9


从 Drupal 8.8.0 开始,有一个官方的 composer 模板来下载 Drupal 核心及其所有依赖项。所以,不建议再使用非官方的 composer drupal-project。它们之间存在一些差异,但归根结底,这只是(未)安装的供应商软件包。打开您的终端,让 Composer 完成工作。

composer create-project drupal/recommended-project YOUR_DIR


这个 composer 命令会将核心和所有依赖项下载到YOUR_DIR. 它还会在 composer.json 中配置一些你需要的东西。
使用 DRUSH 安装 DRUPAL
现在一切就绪,您必须安装 Drupal。一种方法是安装脚本,如果您访问像myproject.local. 我更喜欢使用 Drush——Drupal shell。recommended-project默认情况下,新的不包括 drush,所以我们必须要求它。

$ cd YOUR_DIR
$ composer require drush/drush:^10


我们将使用标准安装配置文件,您可以随意选择适合您的需求。您还需要准备好数据库和相关凭据。

$ drush site-install standard \
  --db-url='mysql://[DB_USER]:[DB_PASS]@[DB_HOST]:[DB_PORT]/[DB_NAME]' \
  --account-name=ADMIN-NAME --account-pass=YOUR-PW \
  --site-name=WEBSITE-NAME \
  --site-mail=WEBSITE@MAIL.COM \


调整(开发)设置
我假设我们在这里为本地开发内容设置 Drupal,但当然,您可以为生产或暂存环境调整这些设置。

$ chmod +w web/sites/default
$ mkdir web/sites/default/settings
$ cd web/sites/default
$ cp settings.php settings/settings.shared.php
$ chmod 644 settings/settings.shared.php


首先,我们使sites/default目录可写并创建一个新的子文件夹sites/default/settings。之后,我们将settings.php安装过程中生成的文件复制到这个新文件夹中并命名为settings.shared.php. 为什么?因为我们想将我们的设置拆分成两个单独的文件,以便我们可以轻松更改环境设置。另一种方法是使用.env文件。随意选择任何方法。

接下来,我们将替换标准中的所有内容settings.php并包含我们新生成的settings.shared.php.

/web/sites/default/settings.php

<?php

include __DIR__ . '/settings/settings.shared.php';
在我们的共享设置文件中,添加设置trusted_host_patterns(出于安全原因)。

/web/sites/default/settings/settings.shared.php

<?php
// ... Tons of lines before
// ...
$settings['trusted_host_patterns'] = [
  '^localhost$',
  '^127.0.0.1$',
  'example\.local$',
  'staging\.example\.com$',
  'example\.com$',
];


接下来,我们需要包含本地设置文件,之后我们将创建该文件。

// ... At the BOTTOM of settings.shared.php
if (file_exists($app_root . '/' . $site_path . '/settings/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings/settings.local.php';
}

$ cd ../..
$ cp sites/example.settings.local.php sites/default/settings/settings.local.php


现在,将您的本地数据库设置数组从 /web/sites/default/settings/settings.shared.php我们的新 /web/sites/default/settings/settings.local.php.

/web/sites/default/settings/settings.local.php

<?php
 $databases['default']['default'] = [
   'database' => 'YOUR-DB-NAME',
   'username' => 'YOUR-DB-USER',
   'password' => 'YOUR-USER-PASSWORD',
   'prefix' => '',
   'host' => 'localhost',
   'port' => '3306',
   'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
   'driver' => 'mysql',
];



对于本地开发,您需要包含development.services.yml文件、关闭渲染和页面缓存、启用详细错误日志并禁用 JavaScript 和 CSS 预处理。为此,请在数据库数组下方添加这些行。

// ... Database array ...

// Load development service file
$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';

// Disable caches
$settings['cache']['bins']['render'] = 'cache.backend.null';
$settings['cache']['bins']['page'] = 'cache.backend.null';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';

// Enable verbose error logging
$config['system.logging']['error_level'] = 'verbose';

// Disable CSS and JS preprocessing
$config['system.performance']['css']['preprocess'] = FALSE;
$config['system.performance']['js']['preprocess'] = FALSE;

现在我们需要通过包含的/web/sites/default/development.services.yml. 您的文件应如下所示:

parameters:
  http.response.debug_cacheability_headers: true
  twig.config:
    debug: true
    auto_reload: true
services:
  cache.backend.null:
    class: Drupal\Core\Cache\NullBackendFactory


是时候清除 Drupal 缓存以确保应用我们的新设置了!

$ drush cr


现在您的 Drupal 9 安装应该已经准备就绪,并且所有设置都应该适合开始本地开发。但要小心!您还需要做两件事来保护您的安装!

首先,给你的files目录和settings.php正确的权限:

$ chmod go-w sites/default/settings.php
$ chmod go-w sites/default


和往常一样,永远不要将设置文件提交到您的 git 存储库!因此,将我们新的本地设置文件添加到根目录中的 .gitignore 中。

# Ignore configuration files that may contain sensitive information.
/web/sites/*/settings/settings.local.php

 

标签