Tutorial

So installieren Sie Linux, Nginx, MySQL und PHP (LEMP-Stack) unter Ubuntu 20.04 [Schnellstart]

Published on June 12, 2020
Default avatar

By Erika Heidi

Developer Advocate

Deutsch
So installieren Sie Linux, Nginx, MySQL und PHP (LEMP-Stack) unter Ubuntu 20.04 [Schnellstart]

Einführung

In diesem Schnellstartleitfaden installieren wir einen LEMP-Stack auf einem Ubuntu 20.04-Server.

Eine detailliertere Version dieses Tutorials mit weiteren Erklärungen zu einzelnen Schritten finden Sie unter Installieren des Linux-, Nginx-, MySQL-, PHP- (LEMP-)Stacks unter Ubuntu 20.04.

Voraussetzungen

Um diesem Leitfaden zu folgen, müssen Sie auf einen Ubuntu 20.04-Server als sudo-Benutzer zugreifen.

Schritt 1 – Installation von Nginx

Aktualisieren Sie den Cache Ihres Paketmanagers und installieren Sie dann Nginx mit:

  1. sudo apt update
  2. sudo apt install nginx

Sobald die Installation abgeschlossen ist, müssen Sie Ihre Firewalleinstellungen so anpassen, dass HTTP-Verkehr auf Ihrem Server zugelassen wird. Führen Sie den folgenden Befehl aus, um externen Zugriff an Port 80 (HTTP): zu ermöglichen

  1. sudo ufw allow in "Nginx"

Nachdem die neue Firewall-Regel hinzugefügt wurde, können Sie testen, ob der Server läuft, indem Sie auf die öffentliche IP-Adresse des Servers oder den Domänennamen von Ihrem Web-Browser aus zugreifen. Sie sehen in etwa folgende Seite:

Nginx-Standardseite

Schritt 2 — Installieren von MySQL

Wir installieren jetzt MySQL, ein beliebtes Datenbankverwaltungssystem, das in PHP-Umgebungen verwendet wird.

Verwenden Sie auch hier wieder apt zur Beschaffung und Installation der Software:

  1. sudo apt install mysql-server

Sobald die Installation abgeschlossen ist, empfehlen wir, ein Sicherheitsskript auszuführen, das in MySQL vorinstalliert ist. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:

  1. sudo mysql_secure_installation

Sie werden gefragt, ob Sie das VALIDATE PASSWORD PLUGIN konfigurieren möchten. Geben Sie Y für Ja oder etwas Anderes ein, um ohne Aktivierung weiterzumachen. Wenn Sie mit „ja“ antworten, werden Sie dazu aufgefordert, eine Stufe der Passwortvalidierung zu wählen.

Ihr Server fordert Sie als Nächstes dazu auf, ein Passwort für den MySQL root-Benutzer auszuwählen und zu bestätigen. Zwar entbindet die Standardauthentifizierungsmethode für den MySQL root-Benutzer von der Verwendung eines Passworts, selbst wenn eines festgelegt ist, doch sollten Sie hier als zusätzliche Sicherheitsmaßnahme ein starkes Passwort definieren.

Drücken Sie bei den restlichen Fragen auf Y und bei jeder Eingabeaufforderung ENTER.

Anmerkung: Zum Zeitpunkt der Verfassung dieses Dokuments unterstützt die native MySQL-PHP-Bibliothek mysqlnd keine caching_sha2_authentication, die standardmäßige Authentifizierungsmethode für MySQL 8. Wenn Sie Datenbankbenutzer für PHP-Anwendungen unter MySQL 8 erstellen, müssen Sie sie daher so konfigurieren, dass sie stattdessen mysql_native_password verwenden. Konsultieren Sie den Schritt 6 unseres detaillierten Leitfadens für LEMP unter Ubuntu 20.04, um mehr zu erfahren.

Schritt 3 — Installieren von PHP

Um die php-fpm- und php-mysql-Pakete zu installieren, führen Sie Folgendes aus:

  1. sudo apt install php-fpm php-mysql

Schritt 4 – Konfigurieren von Nginx für PHP

In diesem Leitfaden richten wir eine Domäne namens your_domain ein, aber Sie sollten diesen Namen durch Ihren eigenen Domänenamen ersetzen.

Auf Ubuntu 20.04 hat Nginx einen Serverblock standardmäßig aktiviert und ist so konfiguriert, das Dokumente aus einem Verzeichnis in /var/www/html bereitgestellt werden. Das eignet sich gut für eine Website, kann aber umständlich werden, wenn Sie mehrere hosten. Statt /var/www/html zu ändern, erstellen wir eine Verzeichnisstruktur innerhalb von /var/www für die Website your_domain und belassen dabei /var/www/html als Standardverzeichnis, das genutzt wird, wenn eine Clientanfrage keine übereinstimmenden Websites ergibt.

Erstellen Sie das Root-Webverzeichnis für your_domain wie folgt:

  1. sudo mkdir /var/www/your_domain

Als Nächstes weisen Sie die Eigentumsrechte des Verzeichnisses mit der Umgebungsvariablen $USER zu, die auf Ihren aktuellen Systembenutzer verweisen wird:

  1. sudo chown -R $USER:$USER /var/www/your_domain

Öffnen Sie dann mit Ihrem bevorzugten Befehlszeileneditor eine neue Konfigurationsdatei im Verzeichnis sites-available von Nginx. Wir verwenden hier nano:

  1. sudo nano /etc/nginx/sites-available/your_domain

Dadurch wird eine neue Leerdatei erstellt. Fügen Sie die folgende Basiskonfiguration ein:

/etc/nginx/sites-available/your_domain
server {
    listen 80;
    server_name your_domain www.your_domain;
    root /var/www/your_domain;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }

    location ~ /\.ht {
        deny all;
    }

}


Wenn Sie mit der Bearbeitung fertig sind, speichern und schließen Sie die Datei. Wenn Sie nano verwenden, können Sie zur Bestätigung STRG+X und dann y und ENTER eingeben.

Aktivieren Sie Ihre Konfiguration, indem Sie eine Verknüpfung mit der Konfigurationsdatei aus dem sites-enabled-Verzeichnis von Nginx herstellen:

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Dadurch wird Nginx angewiesen, die Konfiguration beim nächsten Neuladen zu verwenden. Sie können Ihre Konfiguration auf Syntaxfehler testen, indem Sie Folgendes eingeben:

  1. sudo nginx -t

Wenn Fehler gemeldet werden, gehen Sie zurück zu Ihrer Konfigurationsdatei, um den Inhalt vor dem Fortfahren zu überprüfen.

Wenn Sie fertig sind, laden Sie Nginx neu, um die Änderungen anzuwenden:

  1. sudo systemctl reload nginx

Ihre neue Website ist nun aktiv, aber die Web-root /var/www/your_domain ist immer noch leer. Erstellen Sie an diesem Ort eine index.html-Datei, um zu testen, ob Ihr neuer Serverblock wie erwartet funktioniert:

  1. nano /var/www/your_domain/index.html

Fügen Sie in dieser Datei folgende Inhalte ein:

/var/www/your_domain/index.html
<html>
  <head>
    <title>your_domain website</title>
  </head>
  <body>
    <h1>Hello World!</h1>

    <p>This is the landing page of <strong>your_domain</strong>.</p>
  </body>
</html>

Gehen Sie nun zu Ihrem Browser und greifen Sie auf den Domänennamen oder die IP-Adresse Ihres Servers zu, wie sie in der server_name-Anweisung in Ihrer Serverblock-Konfigurationsdatei aufgeführt sind:

http://server_domain_or_IP

Sie sehen in etwa folgende Seite:

Nginx Serverblock

Schritt 5 – Testen von PHP mit Nginx

Wir erstellen jetzt ein PHP-Testskript, um zu prüfen, ob Nginx Anfragen für PHP-Dateien bearbeiten kann.

Erstellen Sie eine neue Datei namens info.php in Ihrem benutzerdefinierten Web-root-Ordner:

  1. nano /var/www/your_domain/info.php

Damit wird eine leere Datei geöffnet. Fügen Sie in der Datei folgenden Inhalt hinzu:

/var/www/your_domain/info.php
<?php
phpinfo();

Wenn Sie dies abgeschlossen haben, speichern und schließen Sie die Datei.

Sie können nun in Ihrem Webbrowser auf diese Seite zugreifen, indem Sie den Domänennamen oder die öffentliche IP-Adresse besuchen, die Sie in Ihrer Nginx-Konfigurationsdatei eingerichtet haben, gefolgt von /info.php:

http://server_domain_or_IP/info.php

Sie sehen dann eine Webseite, die detaillierte Informationen über Ihren Server enthält:

PHPInfo Ubuntu 20.04

Nachdem Sie über diese Seite die relevanten Informationen zu Ihrem PHP-Server überprüft haben, ist es am besten, die von Ihnen erstellte Datei zu entfernen, da sie sensible Informationen über Ihre PHP-Umgebung und Ihren Ubuntu-Server enthält. Sie können rm verwenden, um diese Datei zu entfernen:

  1. sudo rm /var/www/your_domain/info.php

Relevante Tutorials

Hier sehen Sie Links zu detaillierteren Leitfäden, die in Verbindung mit diesem Tutorial stehen:

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar

Developer Advocate

Dev/Ops passionate about open source, PHP, and Linux.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel