LAMP-stack installeren op Ubuntu 24.04 en 22.04: Apache2, PHP 8, MySQL en phpMyAdmin

Gepubliceerd op Bijgewerkt op 7 min leestijd

Apache2, PHP 8, MySQL of MariaDB en phpMyAdmin op Ubuntu 24.04 LTS of 22.04 LTS: de volledige installatie stap voor stap, inclusief het beveiligen achteraf.

Wilt u Apache2, PHP 8, MySQL en phpMyAdmin, oftewel een complete LAMP-stack, op uw Ubuntu 24.04 LTS of Ubuntu 22.04 LTS server installeren? Deze handleiding leidt u stap voor stap door de volledige installatie, van de webserver tot een beveiligde databasetoegang.

Een voordeel ten opzichte van Debian: Ubuntu heeft beide databaseservers in de pakketbronnen staan, zowel mysql-server als mariadb-server. U hebt dus de vrije keuze. Debian levert daarentegen uitsluitend MariaDB. Deze handleiding laat beide varianten zien, alle overige stappen zijn identiek.

Vereisten

U hebt SSH-toegang met rootrechten nodig (of een gebruiker met sudo-rechten) op een actuele Ubuntu. Aanbevolen worden Ubuntu 24.04 LTS "Noble Numbat" en Ubuntu 22.04 LTS "Jammy Jellyfish". Ubuntu 20.04 LTS heeft in mei 2025 het einde van de reguliere support bereikt en hoort niet meer in productie te draaien.

Werk eerst de pakketlijst bij en installeer de beschikbare updates:

apt update && apt upgrade -y

Apache2 en basispakketten installeren

Installeer de webserver samen met de hulppakketten die u in de volgende stappen nodig hebt:

apt install -y nano curl wget unzip ca-certificates apt-transport-https lsb-release gnupg software-properties-common apache2

Open daarna in de browser http://<uw-server-ip>/. Verschijnt de standaardpagina van Apache2, dan draait de webserver al.

Is er op de server een firewall actief, geef dan de poorten van de webserver vrij:

ufw allow "Apache Full"

PHP 8 installeren

Welke PHP-versie u uit de pakketbronnen krijgt, hangt af van uw distributie. Een commando met een vast versienummer zoals apt install php8.3 mislukt daarom op Ubuntu 22.04 LTS. Dit overzicht toont de versie die per uitgave wordt meegeleverd (stand juli 2026):

DistributiePHP-versie uit de pakketbronnen
Ubuntu 24.04 LTSPHP 8.3
Ubuntu 22.04 LTSPHP 8.1

Gebruik daarom de metapakketten zonder versienummer. Die halen automatisch de passende versie voor uw distributie binnen en werken op elke Ubuntu hetzelfde:

apt install -y php php-cli php-common php-curl php-gd php-intl php-mbstring php-mysql php-opcache php-readline php-xml php-zip php-bz2 libapache2-mod-php

Wilt u PHP niet via de Apache-module maar via FPM draaien, dan geldt hetzelfde principe. Ook hier brengt het metapakket u betrouwbaar bij het doel, terwijl een naam met versienummer zoals php8.3-fpm alleen onder Ubuntu 24.04 LTS bestaat:

apt install -y php-fpm

Welke versie er daadwerkelijk is geïnstalleerd, laat dit commando u zien:

php -v

Hebt u een versie nodig die uw Ubuntu-uitgave niet meelevert (bijvoorbeeld PHP 8.4), voeg dan de bekende PHP-repository van Ondřej Surý toe:

add-apt-repository ppa:ondrej/php

apt update

add-apt-repository legt de ondertekeningssleutel automatisch als apart keyring-bestand vast en koppelt hem precies aan deze pakketbron. Het vroeger gangbare commando apt-key is afgeschaft en hoort niet meer gebruikt te worden, omdat een zo opgeslagen sleutel voor alle pakketbronnen van het systeem geldig zou zijn.

Pas via deze pakketbron zijn de pakketnamen met versienummer voor alle Ubuntu-uitgaven beschikbaar. Vervolgens installeert u de gewenste PHP-versie samen met de gebruikelijke extensies:

apt install -y php8.4 php8.4-cli php8.4-common php8.4-curl php8.4-gd php8.4-intl php8.4-mbstring php8.4-mysql php8.4-opcache php8.4-readline php8.4-xml php8.4-zip php8.4-bz2 libapache2-mod-php8.4

Draaien er daarna meerdere PHP-versies naast elkaar, bepaal dan welke Apache2 moet gebruiken:

a2dismod php8.3

a2enmod php8.4

systemctl restart apache2

Met php -v controleert u welke versie op de commandoregel actief is.

Databaseserver installeren en beveiligen

Ubuntu biedt u beide gangbare databaseservers aan, in deze uitgaven:

PakketUbuntu 24.04 LTSUbuntu 22.04 LTS
mysql-serverMySQL 8.0.46MySQL 8.0.46
mariadb-serverbeschikbaarbeschikbaar

Voor MySQL, oftewel het origineel van Oracle:

apt install -y mysql-server mysql-client

mysql_secure_installation

Voor MariaDB, de uit MySQL voortgekomen server die hetzelfde protocol en dezelfde querytaal spreekt:

apt install -y mariadb-server mariadb-client

mysql_secure_installation

Installeer slechts één van beide varianten, want ze bezetten allebei dezelfde poort. Voor de verdere stappen van deze handleiding maakt het geen verschil welke u hebt gekozen.

Het script mysql_secure_installation stelt meerdere vragen. Actuele MariaDB-versies vragen eerst of er op unix_socket-authenticatie moet worden overgestapt. Die optie is zinvol, omdat de databasegebruiker root zich dan alleen nog als systeemgebruiker root kan aanmelden. Alle overige vragen (anonieme gebruikers verwijderen, remote login voor root verbieden, testdatabase verwijderen, rechten opnieuw laden) beantwoordt u telkens met y. Kies daarnaast een sterk databasewachtwoord.

Controleer daarna of de service draait. De naam van de systemd-unit hangt af van de gekozen server:

systemctl status mysql

systemctl status mariadb

phpMyAdmin installeren

Voor phpMyAdmin hebt u twee mogelijkheden. Het pakket phpmyadmin zit in alle actuele Ubuntu-versies in de pakketbronnen en laat zich in één stap installeren:

apt install phpmyadmin -y

Gemakkelijk, maar die versie loopt vaak achter op de stand van de maker. Wie steeds de actuele uitgave wil, downloadt phpMyAdmin liever rechtstreeks. Precies die weg beschrijven de volgende stappen:

cd /usr/share && wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -O phpmyadmin.zip && unzip phpmyadmin.zip && rm phpmyadmin.zip && mv phpMyAdmin-*-all-languages phpmyadmin && chmod -R 0755 phpmyadmin

Maak vervolgens het configuratiebestand aan:

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

phpMyAdmin heeft een willekeurige waarde als blowfish_secret nodig, waarmee de sessiegegevens in de cookie worden versleuteld. Genereer zo'n waarde:

openssl rand -base64 32

Vul hem daarna in het configuratiebestand in:

nano /usr/share/phpmyadmin/config.inc.php

De bijbehorende regel luidt:

$cfg['blowfish_secret'] = 'VUL_HIER_DE_GEGENEREERDE_WAARDE_IN';

phpMyAdmin aan Apache2 koppelen

Maak een apart Apache2-configuratiebestand voor phpMyAdmin aan:

nano /etc/apache2/conf-available/phpmyadmin.conf

De inhoud voor phpmyadmin.conf:

#PHPMyAdmin-Apache2-configuratie

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
</Directory>

<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

Activeer de configuratie, laad Apache2 opnieuw en maak de tijdelijke map met de juiste rechten aan:

a2enconf phpmyadmin && systemctl reload apache2 && mkdir -p /usr/share/phpmyadmin/tmp/ && chown -R www-data:www-data /usr/share/phpmyadmin/tmp/

Databasegebruiker aanmaken

Meld u als systeemgebruiker root aan bij de database:

mysql -u root

Maak nu een eigen databasegebruiker aan. Gebruik daarbij niet "root", "admin", "user" of "username" als naam, maar een eigen gebruikersnaam en een lang, willekeurig wachtwoord:

#BELANGRIJK! VERVANG USER EN PASSWORD DOOR UW EIGEN INLOGGEGEVENS.

CREATE USER 'USER'@'localhost' IDENTIFIED BY 'PASSWORD';

GRANT ALL PRIVILEGES ON *.* TO 'USER'@'localhost' WITH GRANT OPTION;

FLUSH PRIVILEGES;

Voor afzonderlijke applicaties kunt u daarnaast beter gebruikers met beperkte rechten aanmaken, die alleen bij hun eigen database mogen:

CREATE DATABASE mijnapp;

CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'PASSWORD';

GRANT ALL PRIVILEGES ON mijnapp.* TO 'appuser'@'localhost';

FLUSH PRIVILEGES;

De databaseconsole verlaat u op elk moment met:

exit

LAMP-stack testen

Open phpMyAdmin via http://<uw-server-ip>/phpmyadmin en meld u aan met de zojuist aangemaakte gebruiker. Lukt het inloggen, dan werken Apache2, PHP en uw databaseserver correct samen.

De PHP-koppeling controleert u daarnaast met een kort testbestand:

echo "<?php phpinfo();" > /var/www/html/info.php

Verwijder het bestand na het openen van http://<uw-server-ip>/info.php beslist weer, want het verraadt details over uw serverconfiguratie:

rm /var/www/html/info.php

Beveiligingstips voor productieomgevingen

Een pas geïnstalleerde LAMP-stack is nog niet beveiligd. Deze punten hoort u aan te vullen:

  • phpMyAdmin is een geliefd aanvalsdoel. Beperk de toegang tot uw eigen IP-adres door in het Directory-blok Require ip 203.0.113.10 te gebruiken in plaats van de open vrijgave.
  • Richt HTTPS in, zodat wachtwoorden niet in leesbare tekst over de lijn gaan. Zonder versleuteling zijn uw inloggegevens onderweg naar de server mee te lezen.
  • Houd phpMyAdmin actueel. Omdat u het handmatig hebt geïnstalleerd, werkt apt upgrade het niet automatisch bij.
  • Maak regelmatig back-ups van de database en bewaar die buiten de server.

Veelvoorkomende fouten en oplossingen

De browser downloadt het PHP-bestand in plaats van het uit te voeren: De PHP-module is niet actief in Apache2. Activeer hem met a2enmod php8.4 en herstart de webserver met systemctl restart apache2.

phpMyAdmin meldt "The configuration file now needs a secret passphrase": In config.inc.php ontbreekt de waarde voor blowfish_secret. Genereer hem met openssl rand -base64 32 en vul hem in.

"Access denied for user" bij het inloggen in phpMyAdmin: De databasegebruiker root gebruikt na mysql_secure_installation in de regel de unix_socket-authenticatie en kan zich daarom niet via de webinterface aanmelden. Gebruik de gebruiker die u er extra bij hebt aangemaakt.

Apache2 start na een configuratiewijziging niet meer: Controleer de configuratie met apachectl configtest, de uitvoer noemt bestand en regel van de fout.

Veelgestelde vragen

Moet ik onder Ubuntu MySQL of MariaDB installeren?
Ubuntu biedt beide aan: mysql-server levert MySQL 8.0.46, mariadb-server de daaruit voortgekomen MariaDB-server. Voor deze handleiding maakt de keuze geen verschil. Installeer slechts één van beide varianten, omdat ze dezelfde poort bezetten. Debian heeft overigens geen mysql-server-pakket, daar blijft alleen MariaDB over.
Welke PHP-versie levert Ubuntu mee?
Ubuntu 24.04 LTS brengt PHP 8.3 mee, Ubuntu 22.04 LTS PHP 8.1. Gebruik daarom de metapakketten zonder versienummer, dus php respectievelijk php-fpm. Een commando met een vast nummer zoals apt install php8.3 mislukt op Ubuntu 22.04 LTS.
Hoe krijg ik een nieuwere PHP-versie dan die van Ubuntu?
Voeg met add-apt-repository ppa:ondrej/php de bekende PHP-repository toe. Het commando legt de ondertekeningssleutel automatisch als apart keyring-bestand vast en koppelt hem precies aan deze pakketbron. Pas daarna zijn pakketnamen zoals php8.4-fpm beschikbaar.
Waarom downloadt de browser het PHP-bestand in plaats van het uit te voeren?
In dat geval is de PHP-module in Apache2 niet actief. Activeer hem met a2enmod en de naam van uw PHP-versie, bijvoorbeeld a2enmod php8.4, en herstart Apache2 vervolgens met systemctl restart apache2.
Waarom kan ik niet als root in phpMyAdmin inloggen?
Na het uitvoeren van mysql_secure_installation gebruikt de databasegebruiker root in de regel de unix_socket-authenticatie en kan hij zich daarom niet via de webinterface aanmelden. Maak daarvoor een eigen databasegebruiker aan.

LAMP Apache2 PHP MariaDB MySQL phpMyAdmin Ubuntu 24.04 Ubuntu