Applications Azure

Drupal 11 on Ubuntu 24.04 on Azure User Guide

| Product: Drupal 11 on Ubuntu 24.04 LTS on Azure

Overview

Drupal is the enterprise-grade open-source content management framework powering some of the most demanding sites on the web — gov.uk, NASA, Tesla. The cloudimg image installs Drupal 11.3 from drupal.org alongside Apache 2.4, MySQL 8.0, PHP 8.3, and Drush 13 — all from Ubuntu 24.04 noble universe (no third-party APT repositories). The standard install profile is bootstrapped at first boot via drush site:install with a per-VM cloudimg administrator account.

What is included:

  • Drupal 11.3 from official ftp.drupal.org tarball at /var/www/html/drupal
  • Apache 2.4.x with mod_rewrite enabled, vhost at /etc/apache2/sites-available/drupal.conf
  • MySQL 8.0.x with drupal DB and drupal MySQL user (per-VM password)
  • PHP 8.3.x with mysql, gd, mbstring, xml, curl, zip, intl extensions
  • Drush 13 at /var/www/html/drupal/vendor/bin/drush (symlinked to /usr/local/bin/drush)
  • drupal-firstboot.service rotating MySQL root + DB + admin passwords + bootstrapping the site
  • Olivero front-end theme + Claro admin theme (Drupal 11 defaults)
  • 24/7 cloudimg support

Prerequisites

Active Azure subscription, SSH key, VNet + subnet. Standard_B2s (4 GB RAM) is sufficient for low-to-medium traffic sites; bump to D2s/D4s for high-traffic Drupal sites with caching modules + lots of contrib.

Step 1-3: Deploy + SSH (standard pattern)

ssh azureuser@<vm-ip>

Step 4: Drush Status

cd /var/www/html/drupal && sudo -u www-data vendor/bin/drush status | head -20

Drupal 11.3.8, Drush 13.7.2, MySQL 8.0.45 connected, drupal/core bootstrap successful, Olivero + Claro themes

Step 5: Services + Versions

sudo ss -tlnp | grep -E ':(80|3306) '
php -v
mysql --version

Apache 2.4 on :80, MySQL 8.0 on :3306, PHP 8.3.6 — full LAMP stack confirmed

Step 6: Read Admin Password

sudo cat /stage/scripts/drupal-credentials.log

Pick up the DRUPAL_ADMIN_PASSWORD and DRUPAL_ADMIN_URL from the file.

Step 7: Front-End

Browse to http://<vm-ip>/ to see the default Drupal 11 Welcome page (Olivero theme).

Drupal 11 default welcome page rendered with the Olivero theme

Step 8: Login at /user/login

Browse to http://<vm-ip>/user/login and authenticate as cloudimg with the password from Step 6.

Drupal 11 user login form at /user/login

Step 9: Status Report

The Status Report (/admin/reports/status) shows site health, PHP version, database connectivity, file system permissions, and update advisories.

Drupal Status Report with green-tick health checks for the cloudimg-built site

Step 10: Extend with Modules

Drupal's strength is its module ecosystem (45,000+ contrib modules). Browse /admin/modules to see the bundled core modules; add more via drush pm:install <module> or composer.

Drupal 11 modules page — bundled core modules with enable/disable controls

Step 11: Components

Component Path
Drupal install /var/www/html/drupal/
settings.php /var/www/html/drupal/sites/default/settings.php
Apache vhost /etc/apache2/sites-available/drupal.conf
Apache logs /var/log/apache2/drupal-{access,error}.log
MySQL data /var/lib/mysql/
Drush /var/www/html/drupal/vendor/bin/drush (→ /usr/local/bin/drush)
Firstboot script /usr/local/sbin/drupal-firstboot.sh
Credentials /stage/scripts/drupal-credentials.log (mode 0600 root:root)

Step 12: Security

  • HTTPS: install certbot and obtain a Let's Encrypt cert: sudo apt-get install -y certbot python3-certbot-apache && sudo certbot --apache
  • Restrict NSG so port 80 is only open to your CDN / load balancer; keep 22 to your management CIDR only
  • Update modules monthly via drush pm:update --security-only
  • Update Drupal core via composer: cd /var/www/html/drupal && composer update drupal/core --with-dependencies
  • Patch monthly: apt-get update && apt-get upgrade && reboot

Licensing

Drupal is GPL-2.0+ — free to use commercially. cloudimg provides commercial support separately. support@cloudimg.co.uk.