Drupal 11 on Ubuntu 24.04 on Azure User Guide
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
drupalDB anddrupalMySQL 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.servicerotating 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

Step 5: Services + Versions
sudo ss -tlnp | grep -E ':(80|3306) '
php -v
mysql --version

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).

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

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

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.

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.