Skip to main content
Home
GrN.dk

Main navigation

  • Articles
  • Cases
  • Services
  • Your Digital Project Manager
  • About Greg Nowak
  • Image Gallery
  • Contact
User account menu
  • Log in

Join my community / free newsletter — sign up here

Breadcrumb

  1. Home

Drush: A Practical Operations Layer for Drupal Sites

Illustrated infographic summarizing: Drush: A Practical Operations Layer for Drupal Sites

By Greg Nowak. Updated 21 July 2026.

Drush is often described as Drupal’s command-line shell. That is technically correct, but it understates its value. Used well, Drush gives a business or agency team a repeatable way to inspect a site, target the right environment, run deployments, and document operational knowledge that would otherwise live in one developer’s head.

That makes it particularly useful during site takeovers, upgrade planning, maintenance windows, and agency handovers. The commands are rarely the difficult part. The real work is deciding which checks belong in the operating routine, who may run them, and how the team recovers if a release fails.

Start with the supported Drush version

Drush should be installed as a dependency of each Composer-managed Drupal project. Do not base a modern Drupal 10 or 11 workflow on an old global installation or a downloaded PHAR.

As of July 2026, Drush 14 requires PHP 8.3 or newer and is the recommended line for Drupal 11.3 and later. Drush 13 also requires PHP 8.3 or newer; it is recommended for Drupal 10.2 and later and supports Drupal 11. Check the official compatibility table before changing versions, especially when PHP and Drupal core are being upgraded together.

composer require drush/drush
vendor/bin/drush --version
vendor/bin/drush core:status
vendor/bin/drush help pm:list

Run the project-local binary from the project root. This keeps the Drush version recorded in composer.lock and prevents a global binary from quietly using the wrong PHP or Drupal stack.

Operational moment Useful Drush action Decision it supports
Taking over a site core:status and pm:list Establish what is running before estimating work.
Preparing a release updatedb:status and config:status Identify pending database and configuration changes.
Managing environments site:alias @self Confirm that local, staging, and live targets are explicit.
Deploying changes deploy Run the documented release sequence consistently.
Creating audit evidence --format=json or --fields Produce structured output instead of scraping a terminal table.
A small Drush workflow mapped to the business decisions it helps a team make.

Use Drush to establish facts

When inheriting a Drupal site, begin with observation rather than cleanup. Confirm the Drupal and Drush versions, PHP runtime, database connection, site URI, configuration path, and enabled extensions. These checks often expose mismatched environments or undocumented customisation before anyone commits to an upgrade estimate.

vendor/bin/drush core:status --fields=drupal-version,drush-version,php-version,uri,root,config-sync
vendor/bin/drush pm:list --type=module --status=enabled --no-core
vendor/bin/drush pm:list --type=module --status=enabled --no-core --format=json

The final command is preferable to piping a human-readable table through grep. Current Drush commands support documented formats, fields, and semantic filters. JSON is suitable for an audit script, while --field=name is useful when a shell script needs only module machine names.

A module inventory is not a verdict by itself. An enabled contributed module may be essential, redundant, abandoned, or replaceable by core. The list gives the team a reliable starting point for reviewing security coverage, custom dependencies, upgrade effort, and ongoing maintenance cost.

Make environments difficult to confuse

Shared aliases turn Drush from a personal shortcut into team infrastructure. The documented project-level location is drush/sites/self.site.yml:

live:
  host: server.example.com
  user: deploy
  root: /var/www/example/web
  uri: https://www.example.com
stage:
  host: stage.example.com
  user: deploy
  root: /var/www/example/web
  uri: https://stage.example.com
vendor/bin/drush site:alias @self
vendor/bin/drush @stage core:status
vendor/bin/drush @stage cache:rebuild

Commit the alias structure when appropriate, but keep passwords and private keys out of it. Use SSH configuration, environment variables, and the organisation’s secret-management process for credentials.

For multisite installations or commands that generate links, provide the correct URI through the alias or explicitly on the command line:

vendor/bin/drush --uri=https://www.example.com user:login
DRUSH_OPTIONS_URI=https://www.example.com vendor/bin/drush user:login

The environment variable is DRUSH_OPTIONS_URI, not the older-looking DRUSH_OPTIONS_URL. Getting this detail wrong can produce links for the default host or bootstrap the wrong multisite.

Treat deployment as a workflow

Running updatedb -y remains useful, but it should not be the whole release procedure. For Drupal 10.3 and later, Drush’s deploy command standardises database updates, configuration import, cache rebuild, deploy hooks, and—on Drupal 11.2 and later—cache warming.

vendor/bin/drush @stage updatedb:status
vendor/bin/drush @stage config:status
vendor/bin/drush @stage deploy -y

# After staging validation and an approved backup or rollback point:
vendor/bin/drush @live deploy -y

updatedb automatically enables maintenance mode while database updates run and restores the previous state afterward. That safeguard is helpful, but it is not a backup, a rollback plan, or a substitute for testing. A dependable release still needs a known recovery point, staging validation, appropriate access controls, and a short post-release check of critical journeys.

Leave behind an operating model

The most valuable Drush improvement is often not another one-liner. It is a concise runbook covering supported versions, aliases, deployment commands, backup ownership, rollback steps, and who can operate on production. Together with composer.lock and project-level configuration, that makes the site easier for another developer or agency to support.

If your Drupal estate relies on undocumented commands or one person’s server memory, Greg can help turn it into a safer audit, release, and handover workflow. Talk to Greg about practical Drupal operations.

Related on GrN.dk

  • CMS Upgrades in 2026: A PHP Roadmap for WordPress and Drupal Sites
  • Fixing Website Email Deliverability in 2026: A Practical Checklist for Business Sites
  • WordPress 7.0 Upgrade Planning: Collaboration Meets Old Meta Boxes

Need help with this kind of work?

Talk to Greg about Drupal operations Get in touch with Greg.

Sources

  • Install - Drush 14
  • Site aliases - Drush 14
  • Drush configuration
  • Deploy - Drush 14
  • Output Formats, Fields and Filters - Drush 14
Last modified
2026-08-12

Tags

  • Drupal
  • Drush
  • Drupal Operations
  • Website Maintenance
  • Log in to post comments

Review Greg on Google

Greg Nowak Google Reviews

 

Written recommendations from Trafik og Veje, Aarhus Municipality (2011) and AgroTech (2010) — read them on LinkedIn.

Illustrated infographic summarizing: Your AI Gateway Can Name the User. Decide What That Log Is For
Your AI Gateway Can Name the User. Decide What That Log Is For
2026-08-31

Identity-aware AI Gateway logs can sharpen security and cost control, but only when attribution, access, retention, guardrails, and response are clearly defined.

Illustrated infographic summarizing: Zero Data Retention Is a Workflow Audit, Not a Checkbox
Zero Data Retention Is a Workflow Audit, Not a Checkbox
2026-08-30

Zero Data Retention covers the provider, not every copy in your stack. See how to audit endpoints, logs, storage, deletion and project-level controls.

Illustrated infographic summarizing: MCP 2026-07-28 Is an Auth Migration, Not a Version Bump
MCP 2026-07-28 Is an Auth Migration, Not a Version Bump
2026-08-29

MCP’s July 2026 release removes protocol sessions and tightens OAuth. Here’s a practical plan for migrating clients, servers and enterprise access safely.

Illustrated infographic summarizing: Turn a Technician’s Voice Note into a Work Order—Not Raw Audio
Turn a Technician’s Voice Note into a Work Order—Not Raw Audio
2026-08-28

Voice input can reduce the technician’s documentation burden when hours, materials and status are validated before the information is saved in the work order system.

Illustrated infographic summarizing: ChatGPT Disabled Personal Knowledge Sync. What Broke on Your Team?
ChatGPT Disabled Personal Knowledge Sync. What Broke on Your Team?
2026-08-27

ChatGPT retired personal sync connections for Enterprise and Edu. Here is how to find affected workflows, migrate access, and test permissions.

Illustrated infographic summarizing: Cloudflare’s September Bot Defaults Could Quietly Cut AI Visibility
Cloudflare’s September Bot Defaults Could Quietly Cut AI Visibility
2026-08-26

Cloudflare’s September bot defaults give publishers more control, but one training block could also cut search crawling and AI-driven discovery.

Illustrated infographic summarizing: Does Your AI Chatbot Clearly Identify Itself?
Does Your AI Chatbot Clearly Identify Itself?
2026-08-25

The EU’s transparency requirements for AI chatbots now apply. Here is how to make your bot’s identity clear, limit its system access and provide a genuine route to a member of staff.

Illustrated infographic summarizing: Should publishers add Google’s new Preferred Sources button?
Should publishers add Google’s new Preferred Sources button?
2026-08-24

Google’s Preferred Sources button is worth a controlled test for eligible publishers, with careful choices around placement, performance and measurement.

Illustrated infographic summarizing: Search Console Can See TikTok Now. Your Reporting Has to Catch Up
Search Console Can See TikTok Now. Your Reporting Has to Catch Up
2026-08-23

Google can now report how social profiles appear in Search. Here is how to measure cross-channel discovery without mistaking visibility for business results.

Illustrated infographic summarizing: Your AI workflow has logs. Can they explain one bad decision?
Your AI workflow has logs. Can they explain one bad decision?
2026-08-22

Logs can show that every service worked while leaving a bad AI decision unexplained. See how connected traces and careful redaction close the gap.

More articles

Built by AI — available for your business. The daily articles on this site are researched, written and illustrated by an autonomous AI pipeline. At nowa.dk I install the same kind of AI automation in businesses at fixed prices — site in Danish, English version here, and web/marketing agencies have a dedicated page.

RSS feed

Footer

  • All articles
  • Contact

GrN.dk — AI automation, web platforms, web optimization, data handling and logistics.

© 2026 GrN.dk · LinkedIn · Contact · AI automation in Danish: nowa.dk

Behind GrN.dk: Individual Entrepreneur Codecrafter · Tax ID 305669096 · Bakhtrioni St. 22, 0194 Tbilisi, Georgia · official business register