mikemadison13/blt-lando

Acquia BLT 的 Lando 集成。

dev-main 2024-01-19 22:27 UTC

This package is auto-updated.

Last update: 2024-09-19 23:58:11 UTC


README

Build Status

这是一个提供Acquia BLT集成的Lando插件。

此插件为社区创建和社区支持。Acquia 不提供任何直接支持或对其稳定性的任何保证。

操作系统支持

虽然 Lando 本身可以与任何操作系统一起使用(请参阅他们的系统要求),但此插件是针对 Mac OS 主机构建的。请参阅我的博客,了解有关为工作设置 Macbook 作为主机机的详细信息。

此项目可以在非 Windows 主机上使用,但您必须删除 ssh-fix 工具和相关 ssh 代码(因为这些代码是针对 Mac OS 定制的)。

安装和使用

要使用此插件,您必须已经有一个使用 BLT 11(或更高版本)的 Drupal 项目。

  1. 使用 composer 将此插件添加到您的项目中

如果使用 composer 2:composer require --dev mikemadison13/blt-lando -W

如果使用 composer 1:(我强烈建议您更新到 composer 2) composer require --dev mikemadison13/blt-lando --with-all-dependencies

注意:如果您使用的是设置最小稳定性为 "stable" 的 drupal/recommended-project(或其他项目模板),您可能无法安装此插件。您可以将其更改为 "dev" 或更具体地使用 composer require,如

composer require mikemadison13/blt-lando:dev-main -W

  1. 确保您的 blt/blt.yml 文件已正确设置 project.machine_name 键(因为此插件在模板生成期间将使用此键)。

  2. 通过调用此插件提供的 blt recipes:vm:lando 初始化 Lando 集成。

这将复制 .lando.yml 的模板版本到您的项目根目录,并实例化其他一些 BLT 和 Drupal 设置文件,以使 Drupal 在 Lando 容器中正确引导。请确保将文件提交到 Git(适当的情况下,记住 BLT 默认 gitignores local settings 和 local blt 文件,这些 "local" 特定文件不应提交),以及您的更新后的 composer.json。

注意:模板 YAML 文件假定标准的 BLT 构建步骤,并基于 acquia 图像。插件将尝试根据您的 blt.yml 文件中定义的项目机器名和主机名来定制此文件。

  1. 在运行 lando start 之前,仔细检查创建的 .lando.yml 文件。

  2. Lando 已配置后,运行 lando blt setup 通过 BLT 安装 Drupal。

注意:运行 behat 命令现在需要手动添加 behat 插件(acquia/blt-behat)。

约束 Composer

由于 composer 2 已发布,Lando 应默认使用 composer 2。但是,如果您正在运行许多较旧的 Drupal 版本,您可能仍然需要 composer 1。您可以使用以下配置键手动将其添加到项目中

config:
  composer_version: '1.10.22'

为多站点配置

为多站配置本地环境需要修改您的 .lando 文件(并重新构建)以及通过 sites.php 和 sites 目录配置您的 Drupal 应用程序。

以下假设您的第一个/默认/初始站点将使用 Drupal 中的 "default" 文件夹,以及配方中预配置的默认数据库服务器。

额外的站点需要在 .lando.yml 中进行两项更改。

添加 Appserver 代理 URL

如果您正在设置基于域名的多站方法(请参阅基于域名的多站配置方法),您应该在多站设置中的每个站点提供一个新的代理。如果您使用的是基于路径的多站,这一步不是必需的。

proxy:
  appserver:
    - zero.lndo.site
    - first.lndo.site
    - second.lndo.site
    - third.lndo.site

代理配置应在 .lando.yml 文件中的单独部分。注意,您的默认站点在此处也需要一个条目。

添加数据库

除了默认站点之外,每个站点还需要额外的数据库服务条目。

services:
  first:
    type: mysql:5.7
    portforward: true
    creds:
      user: acquia
      password: acquia
      database: first
    second:
      type: mysql:5.7
      portforward: true
      creds:
        user: acquia
        password: acquia
        database: second
    third:
      type: mysql:5.7
      portforward: true
      creds:
        user: acquia
        password: acquia
        database: third

请确保在每个站点的设置文件中设置数据库凭证以匹配。数据库主机将是服务名称(例如,first)。

添加 Solr

配置 Lando Solr 服务

此插件附带的 .lando.yml 文件默认不包含 Apache Solr 服务,因为并非所有项目都需要 Solr!

但是,如果您想使用 Solr,只需在 .lando.yml 文件中添加一个额外的服务,如下所示

services:
  solr:
    type: solr:7.7
    core: drupal
    portforward: true
    config:
      dir: .lando/solr

配置目录的内容可以从配置 Solr 后的 Acquia Cloud 下载(寻找 "下载配置集" 链接)。

然后使用 lando rebuild 重新构建您的虚拟机。

我过去曾使用这篇博客作为参考,它非常出色。

配置 Drupal

请注意,对于搜索 API,您需要以下信息才能在本地服务器上进行配置

Connector: standard
scheme: http
host: solr
port: 8983
path: /
core: drupal

notes

  • 核心是可配置的,因此如果您想让它成为其他东西,请更改服务定义中的核心定义,并更新 solr 配置以保持一致!
  • 服务器内部/localhost 连接性不同于 Lando 报告的服务 URL(这是正常的)
  • 尽管搜索 API 随附一个配置文件,但我无法让 Solr 服务识别并从应用服务器中拉取配置文件(因此目前此处没有配置路径)

本地覆盖

一旦定义了本地服务器,请将配置放入您本地的环境分割配置

您还需要操纵您的搜索索引,以便它们可以利用您的本地服务器。这可以通过在本地设置文件中的本地设置覆盖来实现,如下所示

$config['search_api.server.acquia_search_solr_search_api_solr_server']['status'] = false;
$config['search_api.index.acquia_search_index']['server'] = 'local';
$config['search_api.index.acquia_search_index']['status'] = true;
$config['search_api.index.acquia_search_index']['read_only'] = false;

此配置覆盖将

  • 禁用基于云的 Acquia 服务器
  • 将索引更改为本地服务器
  • 确保索引已启用(因为它可能在 Acquia 服务器不可达时在本地禁用)
  • 确保索引不是只读的(因为它可能在 Acquia 服务器不可达时变成只读)

您需要为代码库中的每个索引重复此示例的 2-4 行。

使用 XDebug 调试

在 Lando 配方和此配置文件之间,XDebug 大部分已预先配置。然而,在 .lando.yml 中,必须将 appserver 的 xdebug 键从 false 更改为 true,然后必须重新构建容器。一旦启用,您可以在需要使用时切换 XDebug,我已经为此提供了简单的工具

lando xdebug-on
lando xdebug-off

然而,仅仅开启 XDebug 还不够,您仍然需要为每个项目手动配置 PHPStorm。在高层上,这可以分为三个步骤

  1. 在PHPStorm(或其他IDE)中添加服务器。插件假定您将使用此“appserver”。
  2. 添加PHP网页调试配置(使用服务器)
  3. 指示IDE和您的浏览器开始调试/监听

这是一篇关于配置PHPStorm的文章:配置PHPStorm的文章。请注意,该方案预配置为在PHPStorm中进行调试。其他IDE可能需要一些额外的调整。

最后,即使完全配置,XDebug也可能仍然无法正常工作。这篇文章介绍了额外的步骤,以确保PHPStorm能够检测到容器内运行的PHP版本是否包含XDebug。

警告

一旦为XDebug和PHPStorm配置了设置,项目可能会在Drush或其他基于php终端的命令上开始挂起。如果是这样,请确认您没有在IDE中触发调试器!

许可证

本程序是免费软件:您可以在自由软件基金会发布的GNU通用公共许可证的第二版条款下重新分发和/或修改它。

本程序分发时附带的使用保证:它可能对您有用,但没有提供任何保证;甚至没有关于其商誉或对特定用途适用性的暗示保证。有关更多信息,请参阅GNU通用公共许可证。