LAMP-Stack auf Ubuntu 24.04 und 22.04 installieren: Apache2, PHP 8, MySQL und phpMyAdmin
Apache2, PHP 8, MySQL oder MariaDB und phpMyAdmin auf Ubuntu 24.04 LTS oder 22.04 LTS: die komplette Einrichtung Schritt für Schritt, inklusive Absicherung.
Sie möchten Apache2, PHP 8, MySQL und phpMyAdmin, also einen kompletten LAMP-Stack, auf Ihrem Ubuntu 24.04 LTS oder Ubuntu 22.04 LTS Server installieren? Diese Anleitung führt Sie Schritt für Schritt durch die komplette Einrichtung, vom Webserver bis zum abgesicherten Datenbankzugang.
Ein Vorteil gegenüber Debian: Ubuntu hat beide Datenbankserver in den Paketquellen, sowohl mysql-server als auch mariadb-server. Sie haben also die freie Wahl. Debian liefert dagegen ausschließlich MariaDB. Diese Anleitung zeigt beide Varianten, alle weiteren Schritte sind identisch.
Voraussetzungen
Sie benötigen einen SSH-Zugang mit Root-Rechten (oder einen Benutzer mit sudo-Berechtigung) auf einem aktuellen Ubuntu. Empfohlen werden Ubuntu 24.04 LTS "Noble Numbat" und Ubuntu 22.04 LTS "Jammy Jellyfish". Ubuntu 20.04 LTS hat im Mai 2025 das Ende des regulären Supports erreicht und sollte nicht mehr produktiv eingesetzt werden.
Aktualisieren Sie zuerst die Paketliste und spielen Sie vorhandene Updates ein:
apt update && apt upgrade -y
Apache2 und Basispakete installieren
Installieren Sie den Webserver zusammen mit den Hilfspaketen, die Sie in den folgenden Schritten benötigen:
apt install -y nano curl wget unzip ca-certificates apt-transport-https lsb-release gnupg software-properties-common apache2
Rufen Sie danach im Browser http://<Ihre-Server-IP>/ auf. Erscheint die Apache2-Standardseite, läuft der Webserver bereits.
Ist auf dem Server eine Firewall aktiv, geben Sie die Webserver-Ports frei:
ufw allow "Apache Full"
PHP 8 installieren
Welche PHP-Version Sie aus den Paketquellen bekommen, hängt von Ihrer Distribution ab. Ein Befehl mit fester Versionsnummer wie apt install php8.3 schlägt auf Ubuntu 22.04 LTS deshalb fehl. Diese Übersicht zeigt die jeweils mitgelieferte Version (Stand Juli 2026):
| Distribution | PHP-Version aus den Paketquellen |
|---|---|
| Ubuntu 24.04 LTS | PHP 8.3 |
| Ubuntu 22.04 LTS | PHP 8.1 |
Verwenden Sie deshalb die Metapakete ohne Versionsnummer. Sie ziehen automatisch die passende Version Ihrer Distribution nach und funktionieren auf jedem Ubuntu gleich:
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
Möchten Sie PHP statt über das Apache-Modul per FPM betreiben, gilt dasselbe Prinzip. Auch hier führt das Metapaket zuverlässig zum Ziel, während ein versionsbehafteter Name wie php8.3-fpm nur unter Ubuntu 24.04 LTS existiert:
apt install -y php-fpm
Welche Version tatsächlich installiert wurde, zeigt Ihnen:
php -v
Benötigen Sie eine Version, die Ihre Ubuntu-Ausgabe nicht mitbringt (etwa PHP 8.4), binden Sie das bekannte PHP-Repository von Ondřej Surý ein:
add-apt-repository ppa:ondrej/php
apt update
add-apt-repository hinterlegt den Signaturschlüssel automatisch als eigene Keyring-Datei und ordnet ihn genau dieser Paketquelle zu. Der früher verbreitete Befehl apt-key ist abgekündigt und sollte nicht mehr verwendet werden, weil ein so hinterlegter Schlüssel für sämtliche Paketquellen des Systems gültig wäre.
Erst über diese Paketquelle stehen die versionsbehafteten Paketnamen für alle Ubuntu-Ausgaben zur Verfügung. Anschließend installieren Sie die gewünschte PHP-Version samt der üblichen Erweiterungen:
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
Laufen danach mehrere PHP-Versionen parallel, legen Sie fest, welche Apache2 verwenden soll:
a2dismod php8.3
a2enmod php8.4
systemctl restart apache2
Mit php -v prüfen Sie, welche Version auf der Kommandozeile aktiv ist.
Datenbankserver installieren und absichern
Ubuntu bietet Ihnen beide gängigen Datenbankserver an, in diesen Ausgaben:
| Paket | Ubuntu 24.04 LTS | Ubuntu 22.04 LTS |
|---|---|---|
| mysql-server | MySQL 8.0.46 | MySQL 8.0.46 |
| mariadb-server | verfügbar | verfügbar |
Für MySQL, also das Original von Oracle:
apt install -y mysql-server mysql-client
mysql_secure_installation
Für MariaDB, den aus MySQL hervorgegangenen Server, der dasselbe Protokoll und dieselbe Abfragesprache spricht:
apt install -y mariadb-server mariadb-client
mysql_secure_installation
Installieren Sie nur eine der beiden Varianten, denn beide belegen denselben Port. Für die weiteren Schritte dieser Anleitung macht es keinen Unterschied, welche Sie gewählt haben.
Das Skript mysql_secure_installation stellt mehrere Fragen. Aktuelle MariaDB-Versionen fragen zuerst, ob auf unix_socket-Authentifizierung umgestellt werden soll. Diese Option ist sinnvoll, weil sich der Datenbank-Benutzer root dann nur noch als System-Benutzer root anmelden kann. Alle weiteren Fragen (anonyme Benutzer entfernen, Remote-Login für root verbieten, Testdatenbank löschen, Rechte neu laden) beantworten Sie jeweils mit y. Vergeben Sie außerdem ein starkes Datenbank-Passwort.
Prüfen Sie danach, ob der Dienst läuft. Der Name der Systemd-Unit richtet sich nach dem gewählten Server:
systemctl status mysql
systemctl status mariadb
phpMyAdmin installieren
Für phpMyAdmin haben Sie zwei Möglichkeiten. Das Paket phpmyadmin liegt in allen aktuellen Ubuntu-Versionen in den Paketquellen und lässt sich in einem Schritt installieren:
apt install phpmyadmin -y
Bequem, aber die Version hinkt dem Stand des Herstellers oft hinterher. Wer die jeweils aktuelle Ausgabe möchte, lädt phpMyAdmin stattdessen direkt herunter. Genau diesen Weg beschreiben die folgenden Schritte:
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
Legen Sie anschließend die Konfigurationsdatei an:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
phpMyAdmin benötigt einen zufälligen Wert als blowfish_secret, mit dem die Sitzungsdaten im Cookie verschlüsselt werden. Erzeugen Sie einen solchen Wert:
openssl rand -base64 32
Tragen Sie ihn danach in die Konfigurationsdatei ein:
nano /usr/share/phpmyadmin/config.inc.php
Die passende Zeile lautet:
$cfg['blowfish_secret'] = 'HIER_DEN_ERZEUGTEN_WERT_EINTRAGEN';
phpMyAdmin mit Apache2 verknüpfen
Erstellen Sie eine eigene Apache2-Konfigurationsdatei für phpMyAdmin:
nano /etc/apache2/conf-available/phpmyadmin.conf
Der Inhalt für phpmyadmin.conf:
#PHPMyAdmin-Apache2-Konfiguration
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>
Aktivieren Sie die Konfiguration, laden Sie Apache2 neu und legen Sie das temporäre Verzeichnis mit den passenden Rechten an:
a2enconf phpmyadmin && systemctl reload apache2 && mkdir -p /usr/share/phpmyadmin/tmp/ && chown -R www-data:www-data /usr/share/phpmyadmin/tmp/
Datenbank-Benutzer anlegen
Melden Sie sich als Systembenutzer root an der Datenbank an:
mysql -u root
Legen Sie nun einen eigenen Datenbank-Benutzer an. Verwenden Sie dabei nicht "root", "admin", "user" oder "username" als Namen, sondern einen eigenen Benutzernamen und ein langes, zufälliges Passwort:
#WICHTIG! ERSETZEN SIE USER UND PASSWORD DURCH IHRE EIGENEN ZUGANGSDATEN.
CREATE USER 'USER'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'USER'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Für einzelne Anwendungen sollten Sie zusätzlich Benutzer mit eingeschränkten Rechten anlegen, die nur auf ihre eigene Datenbank zugreifen dürfen:
CREATE DATABASE meineapp;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON meineapp.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
Die Datenbank-Konsole verlassen Sie jederzeit mit:
exit
LAMP-Stack testen
Rufen Sie phpMyAdmin unter http://<Ihre-Server-IP>/phpmyadmin auf und melden Sie sich mit dem eben angelegten Benutzer an. Klappt die Anmeldung, arbeiten Apache2, PHP und Ihr Datenbankserver korrekt zusammen.
Die PHP-Anbindung prüfen Sie zusätzlich mit einer kurzen Testdatei:
echo "<?php phpinfo();" > /var/www/html/info.php
Nach dem Aufruf von http://<Ihre-Server-IP>/info.php löschen Sie die Datei unbedingt wieder, denn sie verrät Details über Ihre Serverkonfiguration:
rm /var/www/html/info.php
Sicherheitshinweise für den Produktivbetrieb
Ein frisch installierter LAMP-Stack ist noch nicht abgesichert. Diese Punkte sollten Sie ergänzen:
- phpMyAdmin ist ein beliebtes Angriffsziel. Beschränken Sie den Zugriff auf Ihre eigene IP-Adresse, indem Sie im Directory-Block
Require ip 203.0.113.10statt der offenen Freigabe verwenden. - Richten Sie HTTPS ein, damit Passwörter nicht im Klartext übertragen werden. Ohne Verschlüsselung sind Ihre Zugangsdaten auf dem Weg zum Server mitlesbar.
- Halten Sie phpMyAdmin aktuell. Da Sie es manuell installiert haben, aktualisiert
apt upgradees nicht automatisch. - Erstellen Sie regelmäßige Datenbank-Backups und legen Sie diese außerhalb des Servers ab.
Häufige Fehler und Lösungen
Der Browser lädt die PHP-Datei herunter, statt sie auszuführen: Das PHP-Modul ist in Apache2 nicht aktiv. Aktivieren Sie es mit a2enmod php8.4 und starten Sie den Webserver mit systemctl restart apache2 neu.
phpMyAdmin meldet "The configuration file now needs a secret passphrase": In config.inc.php fehlt der Wert für blowfish_secret. Erzeugen Sie ihn mit openssl rand -base64 32 und tragen Sie ihn ein.
"Access denied for user" beim Login in phpMyAdmin: Der Datenbank-Benutzer root nutzt nach mysql_secure_installation in der Regel die unix_socket-Authentifizierung und kann sich deshalb nicht über das Webinterface anmelden. Verwenden Sie den zusätzlich angelegten Benutzer.
Apache2 startet nach einer Konfigurationsänderung nicht mehr: Prüfen Sie die Konfiguration mit apachectl configtest, die Ausgabe nennt Datei und Zeile des Fehlers.
Häufige Fragen
Soll ich unter Ubuntu MySQL oder MariaDB installieren?
Welche PHP-Version liefert Ubuntu mit?
Wie bekomme ich eine neuere PHP-Version als die von Ubuntu?
Warum lädt der Browser die PHP-Datei herunter, statt sie auszuführen?
Warum kann ich mich in phpMyAdmin nicht als root anmelden?
2022-2026 KernelHost GmbH. Alle Rechte vorbehalten. Diese Anleitung ist urheberrechtlich geschützt. Eine Veröffentlichung auf anderen Webseiten, auch auszugsweise oder in bearbeiteter Form, ist ohne unsere schriftliche Zustimmung nicht gestattet. Zitate mit Quellenangabe und Link sind ausdrücklich willkommen.

