PHPackages                             mikemadison13/blt-lando - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. mikemadison13/blt-lando

AbandonedArchivedLibrary[DevOps &amp; Deployment](/categories/devops)

mikemadison13/blt-lando
=======================

Lando integration for Acquia BLT.

31.x-dev(3y ago)10482.0k—3%8[1 issues](https://github.com/mikemadison13/blt-lando/issues)[2 PRs](https://github.com/mikemadison13/blt-lando/pulls)GPL-2.0+PHP

Since Mar 30Pushed 2y ago3 watchersCompare

[ Source](https://github.com/mikemadison13/blt-lando)[ Packagist](https://packagist.org/packages/mikemadison13/blt-lando)[ RSS](/packages/mikemadison13-blt-lando/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (5)Versions (8)Used By (0)

Acquia BLT Lando integration
============================

[](#acquia-blt-lando-integration)

[![Build Status](https://github.com/mikemadison13/blt-lando/actions/workflows/actions.yml/badge.svg?main)](https://github.com/mikemadison13/blt-lando/actions/workflows/actions.yml/badge.svg?main)

This is an [Acquia BLT](https://github.com/acquia/blt) plugin providing [Lando](https://lando.dev/) integration.

This plugin is **community-created** and **community-supported**. Acquia does not provide any direct support for this software or provide any warranty as to its stability.

OS Support
----------

[](#os-support)

While Lando itself can be used with any operating system (see their [system requirements here](https://docs.lando.dev/basics/installation.html)) this plugin has been built with a Mac OS host in mind. See my [blog for details on setting up a Macbook for work as a host machine](https://mikemadison.net/blog/2020/7/21/setting-up-a-new-macbook-pro-for-local-development).

This project can be used on non-Windows hosts, but you will have to remove the ssh-fix tooling and the related ssh code (as it it specific to Mac OS).

Installation and usage
----------------------

[](#installation-and-usage)

To use this plugin, you must already have a Drupal project using BLT 11 (or higher).

1. Add this plugin to your project using composer:

If using composer 2: `composer require --dev mikemadison13/blt-lando -W`

If using composer 1: (I strongly recommend you [update to composer 2](https://mikemadison.net/blog/2020/10/14/how-and-why-to-update-to-composer-2)) `composer require --dev mikemadison13/blt-lando --with-all-dependencies`

Note: if you are using drupal/recommended-project (or another project template) that sets the minimum-stability to "stable" you may have trouble installing this plugin. You can either change your stability to "dev" or more specifically composer require like:

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

2. Ensure that your blt/blt.yml file has properly set the `project.machine_name` key (as this will be used during template generation by this plugin).
3. Initialize the Lando integration by calling `blt recipes:vm:lando`, which is provided by this plugin.

This will copy a template version of the .lando.yml to your project root directory and instantiate a number of other BLT and Drupal settings files required to make Drupal bootstrap properly in a Lando container. Make sure to commit these files (where appropriate, remember that BLT gitignores local settings and local blt files by default, and these "local" specific files should not be committed) as well as your updated composer.json to Git.

Note: the template YAML file assumes standard BLT steps for builds and is based upon the acquia image. The plugin will attempt to customize the file based on your project's machine and host names as defined in your blt.yml file.

4. Carefully review the created .lando.yml file prior to running `lando start`
5. Once Lando has been provisioned, run `lando blt setup` to install Drupal via BLT.

Note: To run the behat command, it now requires the behat plugin (acquia/blt-behat) to be added manually.

Constraining Composer
---------------------

[](#constraining-composer)

Now that composer 2 is out, Lando should default to composer 2. HOWEVER if you are running much older versions of Drupal, you may still need composer 1. You can add this into your project manually with the following config key:

```
config:
  composer_version: '1.10.22'
```

Configuring for Multisite
-------------------------

[](#configuring-for-multisite)

Configuring a local environment for multisite requires both a change to your .lando file (and rebuilding) AND configuration of your Drupal application via sites.php and the sites directory.

The following assumes that your first / default / initial site will use the "default" folder in Drupal, and the default database server that comes provisioned with the recipe.

Additional sites require two changes each in the .lando.yml.

### Adding Appserver Proxy URLs

[](#adding-appserver-proxy-urls)

If you are setting up a [domain-based multisite approach](https://mikemadison.net/blog/2021/12/3/drupal-domain-vs-path-based-multisite-configuration), you should provide a new proxy for each site in your multisite setup. If you are using [path-based multisites](https://mikemadison.net/blog/2021/12/3/drupal-domain-vs-path-based-multisite-configuration) this step isn't necessary.

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

The proxy config should be a separate section in the .lando.yml file. Note that your default site does need an entry here.

### Adding Databases

[](#adding-databases)

Each site beyond the default will need additional service entries for databases.

```
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
```

Make sure to set the database credentials in each site's settings file to match. The db host will be the service name (e.g. first).

Adding Solr
-----------

[](#adding-solr)

### Configuring a Lando Solr Service

[](#configuring-a-lando-solr-service)

The .lando.yml file included with this plugin does not include an Apache Solr service by default because not all projects need Solr!

However, if you wish to use Solr, simply add an additional service to the .lando.yml file like the following:

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

The config directory's contents can be downloaded from the Acquia Cloud after configuring solr there (look for a 'download configset' link).

Then rebuild your VM using `lando rebuild`.

I've used [this blog](https://thinktandem.io/blog/2019/08/02/drupal-8-search-api-solr-lando-platform-sh/) in the past as a reference and it's terrific.

### Configuring Drupal

[](#configuring-drupal)

Note that for Search API you'll need the following information for a local server:

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

```

notes:

- the core is configurable so if you want it to be something else, change the core definition in the service definition and update the solr config to be the same!
- the internal / localhost connectivity for the server is NOT the same as the service url that lando will report (and that's ok)
- even though Search API ships a config file, I have not been able to get the solr service to recognize and pull the config file from the appserver (so there is not currently a config path here)

### Local Overrides

[](#local-overrides)

Once you have the local server defined, put the configuration in your local [config split](https://mikemadison.net/blog/2021/1/22/tutorial-per-environment-config-for-drupal-9-search).

You also need to manipulate your search indexes so that they will utilize the local server on your local. This can be done with a $config override in a local settings file like:

```
$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;
```

This config override will:

- disable the Cloud based Acquia server
- change the index to the local server
- ensure the index is enabled (as it may become disabled locally when the Acquia server is unreachable)
- ensure the index isn't read only (as it may become read only when the Acquia server is unreachable)

You will need to repeat the 2nd - 4th lines of this example for each index in your codebase.

Debugging with XDebug
---------------------

[](#debugging-with-xdebug)

Between the recipe for Lando and this config file, XDebug is largely pre-configured. However, in the .lando.yml the appserver's xdebug key must be changed from false to true and then the container must be rebuilt. Once enabled, you can toggle XDebug on when you want to use it, which I have provided simple tooling for:

```
lando xdebug-on
lando xdebug-off
```

However, simply turning on XDebug isn't enough, as you'll still have to manually configure PHPStorm for each project. At a high level, this is broken down into three steps:

1. Add a server in PHPStorm (or other IDE). The plugin assu,es you will same this 'appserver'
2. Add a PHP Web Page debug config (using the server)
3. Instruct both the IDE and your browser to start debugging / listening

Here's an [article on configuring PHPStorm](https://www.dannyenglander.com/blog/drupal-9-devops-recipe-for-setting-up-xdebug-3-with-lando-and-phpstorm/). Note that the recipe comes pre-configured to debug in PHPStorm. Other IDEs will require some additional tweaks.

Finally, it is possible despite fully configuring that XDebug is still not functioning. [This article](https://untoldhq.com/blog/2019/08/02/when-lando-phpstorm-and-xdebug-setup-gets-hairy) walks through additional steps that will ensure that PHPStorm detects that the PHP version running inside the container has XDebug.

### Warning:

[](#warning)

Once configured for XDebug and PHPStorm, your project may begin hanging on Drush or other php terminal-based commands. IF so, confirm that you haven't tripped the debugger in the IDE!

License
=======

[](#license)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity44

Moderate usage in the ecosystem

Community17

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

 Bus Factor1

Top contributor holds 82.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1420d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/dd56c7b8003d53fe5384c01ce50fbc0cc41978a60e2920ad99f4103092bee540?d=identicon)[mikemadison13](/maintainers/mikemadison13)

---

Top Contributors

[![mikemadison13](https://avatars.githubusercontent.com/u/22753451?v=4)](https://github.com/mikemadison13 "mikemadison13 (28 commits)")[![joyce-tong-scc](https://avatars.githubusercontent.com/u/72632869?v=4)](https://github.com/joyce-tong-scc "joyce-tong-scc (3 commits)")[![beacq](https://avatars.githubusercontent.com/u/187419278?v=4)](https://github.com/beacq "beacq (1 commits)")[![greggmarshall](https://avatars.githubusercontent.com/u/878580?v=4)](https://github.com/greggmarshall "greggmarshall (1 commits)")[![sara-ck](https://avatars.githubusercontent.com/u/70230126?v=4)](https://github.com/sara-ck "sara-ck (1 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/mikemadison13-blt-lando/health.svg)

```
[![Health](https://phpackages.com/badges/mikemadison13-blt-lando/health.svg)](https://phpackages.com/packages/mikemadison13-blt-lando)
```

###  Alternatives

[deployer/deployer

Deployment Tool

11.1k25.4M207](/packages/deployer-deployer)[appwrite/server-ce

End to end backend server for frontend and mobile apps.

55.3k84.2k](/packages/appwrite-server-ce)[pragmarx/health

Laravel Server &amp; App Health Monitor and Notifier

2.0k1.0M2](/packages/pragmarx-health)[felixfbecker/language-server-protocol

PHP classes for the Language Server Protocol

22476.7M6](/packages/felixfbecker-language-server-protocol)[heroku/heroku-buildpack-php

Toolkit for starting a PHP application locally, with or without foreman, using the same config for PHP and Apache2/Nginx as on Heroku

8161.3M10](/packages/heroku-heroku-buildpack-php)[tiamo/phpas2

PHPAS2 is a php-based implementation of the EDIINT AS2 standard

4674.7k](/packages/tiamo-phpas2)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
