LAMP stack
LAMP is the classic Drupal hosting stack: Linux, Apache, MySQL and PHP. Drupal 11 also runs on nginx, MariaDB, PostgreSQL and SQLite.
LAMP is a stack of four open-source parts that together run a dynamic website: Linux as the operating system, Apache as the web server, MySQL as the database and PHP as the programming language. Drupal is a PHP application, so a LAMP server is the textbook place to run it, although Drupal 11 accepts several substitutes.
How the four parts work together
A visitor asks for a page. The web server, Apache in a LAMP stack, receives the request and hands it to PHP. Drupal runs inside PHP, reads and writes content in the database through the Database API, builds the page and returns the HTML. Linux hosts all of it. Apache is an open-source web server that runs on Linux and other systems.
What Drupal 11 requires
The Drupal.org requirements pages list the details. The values below come from those pages, so check them again before you plan an upgrade.
| Part | What Drupal 11 expects |
|---|---|
| Operating system | Linux or a similar system is recommended for hosting. Windows is for development only. |
| Web server | Apache 2.4.7 or later, or nginx 1.1 or later. Microsoft IIS is not supported. |
| Database | MariaDB 10.6 or later, MySQL 8.0 or later, PostgreSQL 16 or later, or SQLite 3.45 or later. |
| PHP | PHP 8.3 or 8.4; PHP 8.5 from Drupal 11.3. |
For MySQL and MariaDB the PDO extension is required, and InnoDB must be the primary storage engine. The recommended transaction isolation level is READ-COMMITTED. PHP also needs the PDO, GD and JSON extensions, and if opcache is on, opcache.save_comments must be 1.
Apache settings Drupal relies on
- The
mod_rewritemodule must be enabled, because clean URLs depend on it. - The virtual host needs
AllowOverride Allso Drupal's.htaccessfile takes effect. - Some security protections ship only as
.htaccessrules, so they apply to Apache only. On nginx you must recreate them in the server configuration.
Example: checking a server
On the command line, Drush reports the stack from the Drupal side:
drush core:status
The output shows the Drupal version, the database driver and the PHP binary, configuration file, operating system and version. It does not name the web server, so ask your host or read the server configuration for that.
Common mistakes
- Upgrading Drupal before PHP. Drupal 11 does not support PHP 8.1 or 8.2. Update the server first, using a development site to test.
- Forgetting
AllowOverride Allon Apache. Without it the rules in.htaccessdo not apply, and the Apache-only protections they provide are missing. - Treating nginx as a drop-in. The Apache-only
.htaccessprotections need an equivalent in the nginx configuration.
For marketing and content teams
You rarely touch the stack, but it decides how fast you can move. When an agency says the server needs a PHP upgrade before the next Drupal release, it is working through this list. Ask which PHP and database versions your site runs, and plan the update as part of regular site maintenance, so it never blocks a security release.