LAMP Server · 12 min read · Dec 26, 2025

Ubuntu 18.04 (LTS) LAMP-Server-Tutorial mit Apache, PHP 7.2 und MySQL

LAMP steht für L inux, A pache, M ySQL, P HP. Dieses Tutorial zeigt, wie Sie einen Apache-Webserver auf einem Ubuntu 18.04 LTS (Bionic Beaver)-Server mit PHP 7.2 (mod_php) und MySQL / MariaDB-Unterstützung installieren und wie Sie ein SSL-Zertifikat mit Let’s Encrypt einrichten können. Zusätzlich werde ich PHPMyAdmin installieren, um die MySQL-Administration zu erleichtern. Eine LAMP-Installation ist eine perfekte Grundlage für beliebte CMS-Systeme wie Joomla, Wordpress oder Drupal.

Vorbemerkung

In diesem Tutorial werde ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100 verwenden. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls anpassen.

Ich empfehle, eine minimale Ubuntu-Serverinstallation als Grundlage für das Tutorial zu verwenden, das kann ein virtuelles oder Root-Server-Image mit einer minimalen Ubuntu 18.04-Installation von einem Webhosting-Anbieter sein oder Sie verwenden unser minimales Server-Tutorial, um einen Server von Grund auf neu zu installieren.

Ich führe alle Schritte in diesem Tutorial mit Root-Rechten aus, stellen Sie also sicher, dass Sie als Root angemeldet sind:

sudo -s

1. Installation der MySQL- oder MariaDB-Datenbank

Derzeit gibt es zwei weit verbreitete MySQL-Datenbanksysteme, den klassischen “MySQL”-Server, der von Oracle entwickelt wird und jetzt in Version 5.7 verfügbar ist, und den MySQL-Fork namens MariaDB, der von dem ursprünglichen MySQL-Entwickler Monty Widenius entwickelt wird.

Ich werde Ihnen zeigen, wie Sie beide Alternativen installieren können. Folgen Sie einfach entweder Kapitel 1.1 oder 1.2, aber nicht beiden. Ich werde MySQL 5.7 für das virtuelle Maschinen-Image verwenden, das von Howtoforge heruntergeladen werden kann.

1.1 MySQL 5.7 installieren

Um MySQL 5.7 zu installieren, führen Sie diesen Befehl aus:

apt-get -y install mysql-server mysql-client

Die Pakete mysql-server und mysql-client sind sogenannte “Meta-Pakete”, sie installieren immer die neueste MySQL-Version, die von Ubuntu verfügbar ist. Die neueste Version ist derzeit MySQL 5.7.

Wir haben das Root-Passwort für MySQL bereits während der Installation festgelegt, aber ich möchte den anonymen Benutzer und die Testdatenbank aus Sicherheitsgründen entfernen. Führen Sie den folgenden Befehl mysql_secure_installation aus, um dies zu erreichen.

mysql_secure_installation

Sie werden nach diesen Fragen gefragt:

Sichern der MySQL-Serverbereitstellung.
Geben Sie das Passwort für den Benutzer root ein: <-- Geben Sie das MySQL-Root-Passwort ein
VALIDATE PASSWORD PLUGIN kann verwendet werden, um Passwörter zu testen  
und die Sicherheit zu verbessern. Es überprüft die Stärke des Passworts  
und erlaubt den Benutzern, nur solche Passwörter festzulegen, die  
sicher genug sind. Möchten Sie das VALIDATE PASSWORD-Plugin einrichten?
Drücken Sie y|Y für Ja, eine andere Taste für Nein:  
Verwenden des vorhandenen Passworts für root.  
Das Passwort für root ändern? ((Drücken Sie y|Y für Ja, eine andere Taste für Nein) : <-- Wählen Sie hier 'y', wenn Sie die Passwortvalidierung aktivieren möchten, ich benötige diese Funktion nicht, also wähle ich hier 'n'.
... überspringen.  
Standardmäßig hat eine MySQL-Installation einen anonymen Benutzer,  
das es jedem ermöglicht, sich in MySQL einzuloggen, ohne ein  
Benutzerkonto zu haben. Dies ist nur für  
Testzwecke gedacht und soll die Installation etwas reibungsloser gestalten.  
Sie sollten sie entfernen, bevor Sie in eine Produktionsumgebung wechseln.
Anonyme Benutzer entfernen? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : <-- y  
Erfolg.
Normalerweise sollte root nur von  
'localhost' aus verbinden dürfen. Dies stellt sicher, dass jemand  
nicht das Root-Passwort über das Netzwerk erraten kann.
Root-Login aus der Ferne verbieten? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : <-- y  
Erfolg.
Standardmäßig kommt MySQL mit einer Datenbank namens 'test', die  
jeder zugreifen kann. Dies ist ebenfalls nur für Testzwecke gedacht,  
und sollte entfernt werden, bevor Sie in eine Produktionsumgebung wechseln.
Testdatenbank und Zugriff darauf entfernen? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : <-- y  
- Testdatenbank wird gelöscht...  
Erfolg.
- Berechtigungen auf der Testdatenbank werden entfernt...  
Erfolg.
Das Neuladen der Berechtigungstabellen stellt sicher, dass alle Änderungen  
bis jetzt sofort wirksam werden.
Berechtigungstabellen jetzt neu laden? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : <-- y  
Erfolg.
Alles erledigt!

Die MySQL-Installation ist jetzt gesichert.

1.2 MariaDB 10 installieren

Führen Sie den folgenden Befehl aus, um MariaDB-Server und -Client zu installieren:

apt-get -y install mariadb-server mariadb-client

Jetzt setzen wir ein Root-Passwort für MariaDB.

mysql_secure_installation

Sie werden nach diesen Fragen gefragt:

Geben Sie das aktuelle Passwort für root ein (leer für keines): <-- drücken Sie Enter  
Root-Passwort festlegen? [Y/n] <-- y  
Neues Passwort: <-- Geben Sie hier das neue MariaDB-Root-Passwort ein  
Neues Passwort erneut eingeben: <-- Passwort wiederholen  
Anonyme Benutzer entfernen? [Y/n] <-- y  
Root-Login aus der Ferne verbieten? [Y/n] <-- y  
Berechtigungstabellen jetzt neu laden? [Y/n] <-- y

1.3 Testen des MySQL/MariaDB-Root-Logins

Testen Sie den Login zu MariaDB mit dem “mysql-Befehl”

mysql -u root -p

und geben Sie das oben festgelegte MariaDB-Root-Passwort ein. Das Ergebnis sollte dem Screenshot unten ähneln:

Testen des MySQL-Root-Logins auf Ubuntu 18.04 LTS

Um die MySQL/MariaDB-Shell zu verlassen, geben Sie den Befehl “quit” ein und drücken Sie Enter.

2. Apache-Webserver installieren

Apache 2 ist als Ubuntu-Paket verfügbar, daher können wir es wie folgt installieren:

apt-get -y install apache2

Richten Sie jetzt Ihren Browser auf http://192.168.1.100, und Sie sollten die Apache2-Standardseite sehen (Es funktioniert!):

Die Apache-Standardseite

Das Dokumentenstammverzeichnis des Apache-Standard-vhosts ist /var/www/html auf Ubuntu und die Hauptkonfigurationsdatei ist /etc/apache2/apache2.conf. Das Konfiguration System ist vollständig dokumentiert in /usr/share/doc/apache2/README.Debian.gz.

3. PHP 7.2 installieren

Wir können PHP 7.2 und das Apache-PHP-Modul wie folgt installieren:

apt-get -y install php7.2 libapache2-mod-php7.2

Starten Sie dann Apache neu:

systemctl restart apache2

4. PHP testen und Details zu Ihrer PHP-Installation abrufen

Das Dokumentenstammverzeichnis der Standard-Website ist /var/www/html. Wir werden jetzt eine kleine PHP-Datei (info.php) in diesem Verzeichnis erstellen und sie in einem Browser aufrufen. Die Datei zeigt viele nützliche Details über unsere PHP-Installation an, wie die installierte PHP-Version.

nano /var/www/html/info.php

Ändern Sie dann den Besitzer der info.php-Datei auf den www-data-Benutzer und die Gruppe.

chown www-data:www-data /var/www/html/info.php

Jetzt rufen wir diese Datei in einem Browser auf (z.B. http://192.168.1.100/info.php):

Ubuntu 18.04 PHP 7.2 info

Wie Sie sehen, funktioniert PHP 7.2, und es funktioniert über den Apache 2.0-Handler, wie in der Zeile Server API angezeigt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die bereits in PHP aktiviert sind. MySQL ist dort nicht aufgeführt, was bedeutet, dass wir noch keine MySQL / MariaDB-Unterstützung in PHP haben.

5. MySQL / MariaDB-Unterstützung in PHP erhalten

Um MySQL-Unterstützung in PHP zu erhalten, können wir das php7.2-mysql-Paket installieren. Es ist eine gute Idee, auch einige andere PHP-Module zu installieren, da Sie diese möglicherweise für Ihre Anwendungen benötigen. Sie können nach verfügbaren PHP-Modulen wie folgt suchen:

apt-cache search php7.2

und

apt-cache search php-

da nicht alle PHP-Pakete die Versionsnummer 7.2 in ihrem Namen haben.

Wählen Sie die benötigten aus und installieren Sie sie wie folgt:

apt-get -y install php7.2-mysql php7.2-curl php7.2-gd php7.2-intl php-pear php-imagick php7.2-imap php-memcache php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-mbstring php-gettext

Starten Sie jetzt Apache2 neu:

systemctl restart apache2

PHP 7.2 mit geladenem MySQL-Erweiterung

PHP 7.2 hat jetzt MySQL / MariaDB-Unterstützung, wie oben in phpinfo() angezeigt.

6. Opcache + APCu PHP-Cache installieren, um PHP zu beschleunigen

PHP 7 wird mit einem integrierten Opcode-Cache zum Cachen und Optimieren von PHP-Zwischencode geliefert, er trägt den Namen ‘opcache’ und ist im Paket php7.0-opcache verfügbar. Es wird dringend empfohlen, einen Opcache zu installieren, um Ihre PHP-Seite zu beschleunigen. Neben dem Opcache werde ich APCu installieren, das eine Kompatibilitäts-Wrapper für den Opcache ist, um die Funktionen des APC-Caches bereitzustellen, einem häufig verwendeten Caching-System in PHP 5.x-Versionen, das viele CMS-Systeme immer noch verwenden.

Opcache und APCu können wie folgt installiert werden:

apt-get -y install php7.2-opcache php-apcu

Keine Sorge, wenn angezeigt wird, dass Opcache bereits installiert ist.

Starten Sie jetzt Apache neu:

systemctl restart apache2

Laden Sie jetzt http://192.168.1.100/info.php in Ihrem Browser neu und scrollen Sie wieder zum Abschnitt Module. Sie sollten jetzt viele neue Module dort finden:

APC und APCu in PHP 7.2 aktiviert

Bitte vergessen Sie nicht, die info.php-Datei zu löschen, wenn Sie sie nicht mehr benötigen, da sie sensible Details Ihres Servers bereitstellt. Führen Sie den folgenden Befehl aus, um die Datei zu löschen.

rm -f /var/www/html/info.php

7. Die SSL-Website in Apache aktivieren

SSL/TLS ist eine Sicherheitsschicht, um die Verbindung zwischen dem Webbrowser und Ihrem Server zu verschlüsseln. Die meisten Webbrowser beginnen heute, Websites als unsicher anzuzeigen, wenn die Verbindung zwischen dem Server und dem Webbrowser nicht mit SSL verschlüsselt ist. In diesem Kapitel zeige ich Ihnen, wie Sie Ihre Website mit SSL sichern.

Führen Sie die folgenden Befehle auf Ihrem Server aus, um die SSL (https://)-Unterstützung zu aktivieren. Führen Sie aus:

a2enmod ssl  
a2ensite default-ssl

was das SSL-Modul aktiviert und einen Symlink im Verzeichnis /etc/apache2/sites-enabled zum Datei /etc/apache2/sites-available/default-ssl.conf hinzufügt, um es in die aktive Apache-Konfiguration einzufügen. Starten Sie dann Apache neu, um die neue Konfiguration zu aktivieren:

systemctl restart apache2

Testen Sie jetzt die SSL-Verbindung, indem Sie https://192.168.1.100 in einem Webbrowser öffnen.

Warnung vor selbstsigniertem SSL-Zertifikat

Sie erhalten eine SSL-Warnung, da das SSL-Zertifikat des Servers ein “selbstsigniertes” SSL-Zertifikat ist, das bedeutet, dass der Browser dieses Zertifikat standardmäßig nicht vertraut und Sie zuerst die Sicherheitswarnung akzeptieren müssen. Nach der Annahme der Warnung sehen Sie die Apache-Standardseite.

Apache mit aktivierter SSL

Das geschlossene “Grüne Schloss” vor der URL im Browser zeigt an, dass die Verbindung verschlüsselt ist.

Es gibt zwei Möglichkeiten, die SSL-Warnung zu beseitigen, entweder ersetzen Sie das selbstsignierte SSL-Zertifikat /etc/ssl/certs/ssl-cert-snakeoil.pem durch ein offiziell signiertes SSL-Zertifikat, das Sie von einer SSL-Behörde kaufen, oder Sie erhalten ein kostenloses SSL-Zertifikat von Let’s Encrypt, das ich in Kapitel 8 beschreiben werde.

8. Ein kostenloses SSL-Zertifikat von Let’s Encrypt erhalten

Der erste Schritt, um die Website mit einem Let’s Encrypt SSL-Zertifikat zu sichern, besteht darin, das Paket python3-certbot-apache zu installieren. Führen Sie den folgenden Befehl aus:

apt-get -y install python3-certbot-apache

Im nächsten Schritt werden wir ein SSL-Zertifikat von Let’s Encrypt anfordern, indem wir das Certbot-Clientprogramm verwenden. Während dieses Prozesses versucht der Let’s Encrypt-Server, über den Domainnamen, den Sie dem Certbot-Befehl bereitstellen, eine Verbindung zu Ihrem Server herzustellen. Es ist wichtig, dass dieser Domainname bereits in DNS auf Ihren Server verweist, damit die Website über ihren Domainnamen auf Port 80 (http) erreichbar ist. Wenn die Website nicht aus dem Internet erreichbar ist, schlägt die Erstellung des Let’s Encrypt SSL-Zertifikats fehl.

Bevor wir mit der Erstellung des SSL-Zertifikats beginnen können, setzen Sie den Domainnamen in der vhost-Konfigurationsdatei. Öffnen Sie die Standard-vhost-Datei mit einem Editor:

nano /etc/apache2/sites-available/000-default.conf

und fügen Sie die Zeile hinzu:

ServerName example.com

Direkt unter der ‘DocumentRoot’-Zeile. Ersetzen Sie example.com durch den Domainnamen Ihrer eigenen Website.

Erstellen Sie dann das SSL-Zertifikat mit diesem Befehl:

certbot --apache -d example.com

Ersetzen Sie example.com hier erneut durch Ihren Domainnamen. Der Befehl startet einen Assistenten, der Ihnen mehrere Fragen stellt.

Geben Sie die E-Mail-Adresse an, unter der der Administrator, der für diese Website verantwortlich ist, erreichbar ist.

Akzeptieren Sie die Bedingungen und Konditionen der Let’s Encrypt SSL-Behörde.

Certbot wird Sie jetzt fragen, ob Sie Ihre E-Mail-Adresse mit der Electronic Frontier Foundation teilen möchten. Wählen Sie hier, was Sie bevorzugen.

Wählen Sie dann, ob Sie nicht-SSL-Anfragen automatisch auf https:// umleiten möchten. Ich wähle hier ja, um Probleme mit doppeltem Inhalt zu vermeiden, wenn die Website sowohl als http:// als auch als https:// verfügbar ist.

HTTP-Anfragen umleiten

Das SSL-Zertifikat wurde erfolgreich ausgestellt.

SSL-Zertifikat erfolgreich ausgestellt

Wenn Sie die Website jetzt mit einem Browser aufrufen, werden Sie automatisch auf SSL umgeleitet, und das grüne Schloss vor der URL-Leiste im Browser zeigt an, dass wir jetzt ein vertrauenswürdiges SSL-Zertifikat verwenden.

SSL-geschützte Website

8.1 Automatische Erneuerung von Let’s Encrypt

Let’s Encrypt SSL-Zertifikate sind nur für einen kurzen Zeitraum von 80 Tagen gültig. Daher ist ein Cronjob zur automatischen Erneuerung der SSL-Zertifikate erforderlich, der den certbot –renew-Befehl ausführt.

Dieser Cronjob wird automatisch eingerichtet, wenn Sie certbot installieren, die Cron-Datei ist /etc/cron.d/certbot. Es gibt also nichts weiter zu tun. Wenn Sie wissen möchten, wie der Cronjob aussieht, führen Sie den Befehl aus:

/etc/cron.d/certbot

Das Ergebnis ist:

root@server1:~# cat /etc/cron.d/certbot  
# /etc/cron.d/certbot: crontab-Einträge für das certbot-Paket  
#  
# Der upstream empfiehlt, die Erneuerung zweimal täglich zu versuchen  
#  
# Letztendlich wird dies eine Gelegenheit sein, um zu validieren, dass Zertifikate  
# nicht widerrufen wurden, usw. Die Erneuerung erfolgt nur, wenn das Ablaufdatum  
# innerhalb von 30 Tagen liegt.  
SHELL=/bin/sh  
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 */12 * * * root test -x /usr/bin/certbot -a \\! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

9. phpMyAdmin installieren

phpMyAdmin ist eine Weboberfläche, über die Sie Ihre MySQL-Datenbanken verwalten können. Es ist eine gute Idee, es zu installieren:

apt-get -y install phpmyadmin

WICHTIG: Der apt-Installer wird Ihnen jetzt mehrere Fragen stellen, eine davon ist, den Webservertyp auszuwählen. Ein häufiger Fehler ist, dass der Webservertyp nur hervorgehoben, aber nicht ausgewählt ist. Um ein Element in einem apt-Menü auszuwählen, müssen Sie die Leertaste auf der Tastatur drücken, nachdem Sie mit den Tab- oder Cursor-Tasten zu dem Element navigiert haben. Es reicht nicht aus, es nur hervorzuheben!

Sie werden die folgenden Fragen sehen:

Webserver, der automatisch konfiguriert werden soll: <-- Wählen Sie die Option: apache2  
Datenbank für phpmyadmin mit dbconfig-common konfigurieren? <-- Ja  
MySQL-Anwendungspasswort für phpmyadmin: <-- Drücken Sie Enter, apt erstellt automatisch ein zufälliges Passwort.

9.1 Root-Zugriff auf PHPMyAdmin

MariaDB und MySQL aktivieren standardmäßig ein Plugin namens “unix_socket” für den Root-Benutzer, dieses Plugin verhindert, dass der Root-Benutzer sich in PHPMyAdmin einloggen kann und dass TCP-Verbindungen zu MySQL für den Root-Benutzer funktionieren. Um einen Benutzer mit Berechtigungen zu erhalten, um andere Benutzer und Datenbanken in PHPMyAdmin zu erstellen, werde ich einen neuen MySQL-Benutzer mit dem Namen “admin” mit denselben Berechtigungen wie der Root-Benutzer erstellen.

Melden Sie sich als Root-Benutzer in der MySQL-Datenbank an:

mysql -u root

Erstellen Sie einen neuen Benutzer mit dem Namen “admin” und dem Passwort “howtoforge”. Ersetzen Sie das Passwort “howtoforge” in den folgenden Befehlen durch ein sicheres Passwort!

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';  
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;  
FLUSH PRIVILEGES;  
exit

Danach können Sie auf phpMyAdmin unter http://192.168.1.100/phpmyadmin/ zugreifen:

phpMyAdmin-Login

Als administrativer Benutzer in phpMyAdmin anmelden

10 Virtuelles Maschinen-Image dieses Tutorials herunterladen

Dieses Tutorial ist als sofort einsatzbereites virtuelles Maschinen-Image im ovf/ova-Format verfügbar, das mit VMWare und Virtualbox kompatibel ist. Das virtuelle Maschinen-Image verwendet die folgenden Anmeldedaten:

SSH / Shell-Login

Benutzername: administrator
Passwort: howtoforge

Dieser Benutzer hat Sudo-Rechte.

MySQL-Login

Benutzername: root
Passwort: howtoforge

Die IP der VM ist 192.168.1.100, sie kann in der Datei /etc/network/interfaces geändert werden. Bitte ändern Sie alle oben genannten Passwörter, um die virtuelle Maschine zu sichern.

11 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.