LAMP-stack installeren op Ubuntu 24.04 en 22.04: Apache2, PHP 8, MySQL en phpMyAdmin
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):
| Distributie | PHP-versie uit de pakketbronnen |
|---|---|
| Ubuntu 24.04 LTS | PHP 8.3 |
| Ubuntu 22.04 LTS | PHP 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:
| Pakket | Ubuntu 24.04 LTS | Ubuntu 22.04 LTS |
|---|---|---|
| mysql-server | MySQL 8.0.46 | MySQL 8.0.46 |
| mariadb-server | beschikbaar | beschikbaar |
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.10te 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 upgradehet 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?
Welke PHP-versie levert Ubuntu mee?
Hoe krijg ik een nieuwere PHP-versie dan die van Ubuntu?
Waarom downloadt de browser het PHP-bestand in plaats van het uit te voeren?
Waarom kan ik niet als root in phpMyAdmin inloggen?
2022-2026 KernelHost GmbH. Alle rechten voorbehouden. Deze handleiding is auteursrechtelijk beschermd. Publicatie op andere websites, geheel, gedeeltelijk of in bewerkte vorm, is zonder onze schriftelijke toestemming niet toegestaan. Citeren met bronvermelding en link is uitdrukkelijk welkom.

