Ein „LAMP“-Stack ist eine aus Open-Source-Software bestehende Gruppe, die normalerweise zusammenhängend installiert wird, damit ein Server dynamische Websites und in PHP geschriebene Web-Apps hosten kann. Dieser Begriff ist ein Akronym, das für das Linux-Betriebssystem mit dem Webserver Apache steht. Die Backend-Daten werden in einer MariaDB-Datenbank gespeichert und die dynamische Verarbeitung wird mit PHP ausgeführt.
Die Datenbankschicht in einem LAMP-Stack ist in der Regel ein MySQL-Datenbankserver, aber vor der Veröffentlichung von CentOS 8 war MySQL nicht über die standardmäßigen CentOS-Repositorys verfügbar. Aus diesem Grund wurde MariaDB, eine Abspaltung von MySQL, zu einer weithin akzeptierten Alternative zu MySQL als Standard-Datenbanksystem für LAMP-Stacks auf CentOS-Rechnern. MariaDB dient als vollwertiger Ersatz für den originalen MySQL-Server, was in der Praxis bedeutet, dass Sie zu MariaDB wechseln können, ohne Änderungen an der Konfiguration oder den Codes Ihrer Anwendung vorzunehmen.
In diesem Leitfaden installieren Sie einen LAMP-Stack auf einem CentOS 8-Server unter Verwendung von MariaDB als Datenbankverwaltungssystem.
Um diesem Leitfaden zu folgen, benötigen Sie Zugriff auf einen CentOS 8 Server als non-root user mit Sudo-Berechtigungen, und eine auf Ihrem Server installierte aktive Firewall. Um dies einzurichten, können Sie unserem Leitfaden zur Ersteinrichtung des Servers für CentOS 8 folgen.
Um Websites für unsere Websitebesucher anzuzeigen, setzen wir Apache ein, einen populären Open-Source-Webserver, der für die Bedienung von PHP-Seiten konfiguriert werden kann. Sie verwenden den dnf
Paketmamager, den neuen Standard-Paketmanager auf CentOS 8, um diese Software zu installieren.
Installieren Sie das Paket httpd
mit:
- sudo dnf install httpd
Geben Sie bei der entsprechenden Aufforderung y
ein, um zu bestätigen, dass Sie Apache installieren möchten.
Wenn die Installation abgeschlossen ist, führen Sie den folgenden Befehl aus, um den Server zu aktivieren und zu starten:
- sudo systemctl start httpd
Wenn Sie die Firewall firewalld
gemäß unserem Leitfaden zur Ersteinrichtung des Servers aktiviert haben, müssen Sie Verbindungen zu Apache zulassen. Der folgende Befehl ermöglicht dauerhaft HTTP-Verbindungen, die auf Port 80
standardmäßig ausgeführt werden:
- sudo firewall-cmd --permanent --add-service=http
Um zu verifizieren, dass die Änderung angewendet wurde, können Sie Folgendes ausführen:
- sudo firewall-cmd --permanent --list-all
Die Ausgabe sieht dann so aus:
Outputpublic
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Laden Sie die Firewall-Konfiguration neu, damit die Änderungen wirksam werden:
- sudo firewall-cmd --reload
Nachdem die neue Firewall 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 Webbrowser aus zugreifen.
Anmerkung: Falls Sie DigitalOcean als DNS-Hosting-Anbieter verwenden, konsultieren Sie unsere Produktdokumente für detaillierte Anweisungen, wie Sie einen neuen Domänennamen einrichten und ihn auf Ihren Server verweisen.
Wenn kein Domänenname auf den Server verweist und Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, können Sie diese mit dem folgenden Befehl finden:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Hierdurch erhalten Sie einige IP-Adressen. Sie können diese abwechselnd in Ihrem Webbrowser ausprobieren.
Als Alternative können Sie prüfen, welche IP-Adresse von anderen Stellen im Internet aus erreichbar ist:
- curl -4 icanhazip.com
Geben Sie die Adresse ein, die Sie in Ihrem Webbrowser erhalten, und Sie werden zur Standard-Startseite von Apache weitergeleitet:
Wenn Sie diese Seite sehen, ist Ihr Webserver korrekt installiert.
Nachdem Sie nun einen funktionierenden Webserver eingerichtet haben, müssen Sie ein Datenbanksystem installieren, um Daten für Ihre Website speichern und verwalten zu können. Sie installieren nun MariaDB, eine weiterentwickelte Kopie des originalen MySQL Servers von Oracle.
Um diese Software zu installieren, führen Sie Folgendes aus:
- sudo dnf install mariadb-server
Wenn die Installation abgeschlossen ist, aktivieren und starten Sie den MariaDB-Server mit:
- sudo systemctl start mariadb
Um die Sicherheit Ihres Datenbankservers zu verbessern, wird empfohlen, ein Sicherheitsskript auszuführen, das in MariaDB vorinstalliert ist. Dieses Skript entfernt einige unsichere Standardeinstellungen und sperrt den Zugriff auf Ihr Datenbanksystem. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:
- sudo mysql_secure_installation
Dieses Skript führt Sie durch eine Reihe von Aufforderungen, mit denen Sie verschiedene Änderungen an Ihrem MariaDB-Setup vornehmen können. Bei der ersten Eingabeaufforderung werden Sie gebeten, das aktuelle Datenbank-root-Passwort einzugeben. Verwechseln Sie dies nicht mit dem System-root user. Der Datenbank-root user ist ein administrativer Benutzer mit vollen Berechtigungen über das Datenbank-System. Weil Sie MariaDB gerade erst installiert und noch keine Konfigurationsänderungen vorgenommen haben, wird dieses Passwort leer sein, also drücken Sie bei der Eingabeaufforderung einfach ENTER
.
Bei der nächsten Eingabeaufforderung werden Sie gefragt, ob Sie ein Datenbank-root-Passwort einrichten möchten. Und weil MariaDB eine spezielle Authentifizierungsmethode für den root user verwendet, die typischerweise sicherer ist als ein Passwort, müssen Sie das jetzt nicht einrichten. Geben Sie N
ein und drücken Sie dann ENTER
.
Dannach können Sie Y
und dann ENTER
drücken, um die Standardeinstellungen für alle nachfolgenden Fragen zu akzeptieren. Damit werden anonyme Benutzer und die Testdatenbank entfernt, ferngesteuerte root Logins deaktiviert und die neuen Regeln geladen, sodass der Server die Änderungen, die Sie vorgenommen haben, unverzüglich anwendet.
Wenn Sie fertig sind, melden Sie sich bei MariaDB an, indem Sie Folgendes eingeben:
- sudo mysql
Damit wird eine Verbindung zum MariaDB-Server als administrativer Datenbankbenutzer root hergestellt, was durch die Verwendung von sudo
bei Ausführung dieses Befehls abgeleitet wird. Die Ausgabe sollte wie folgt aussehen:
OutputWelcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.17-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Beachten Sie, dass Sie kein Passwort bereitstellen mussten, um sich als root Benutzer zu verbinden. Das funktioniert, weil die standardmäßige Authentifizierungsmethode für den administrativen MariaDB-Benutzer unix_socket
ist und nicht password
. Auch wenn dies zunächst wie ein Sicherheitsproblem aussieht, macht es den Datenbankserver sicherer, da sich nur die Systembenutzer mit sudo-Privilegien über die Konsole oder über eine Anwendung, die mit den gleichen Privilegien läuft, als root MariaDB user anmelden dürfen. Praktisch bedeutet dies, dass Sie den administrativer Datenbank root Benutzer nicht verwenden können, um sich von Ihrer PHP-Anwendung aus zu verbinden.
Um die Sicherheit zu erhöhen, richten Sie am besten für jede Datenbank zugeordnete Benutzerkonten mit weniger expansiven Berechtigungen ein, insbesondere dann, wenn Sie mehrere Datenbanken auf Ihrem Server hosten möchten. Um eine solche Einrichtung zu zeigen, erstellen Sie eine Datenbank namens example_database und einen Benutzer namens example_user. Sie können diese Namen jedoch durch andere Werte ersetzen.
Um eine neue Datenbank zu erstellen, führen Sie den folgenden Befehl von Ihrer MariaDB-Konsole aus:
- CREATE DATABASE example_database;
Jetzt können Sie einen neuen Benutzer erstellen und ihm volle Berechtigungen zu der benutzerdefinierten Datenbank gewähren, die Sie gerade erstellt haben: Der folgende Befehl definiert das Passwort dieses Benutzers als password
, aber Sie sollten diesen Wert durch ein sicheres Passwort Ihrer Wahl ersetzen:
- GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Damit werden dem example_user volle Berechtigungen über die example\_database
gegeben, während dieser Benutzer gleichzeitig daran gehindert wird, andere Datenbanken auf Ihrem Server zu erstellen oder zu ändern.
Bestätigen Sie die Berechtigungen, um sicherzustellen, dass sie in der aktuellen Sitzung gespeichert und verfügbar sind:
- FLUSH PRIVILEGES;
Beenden Sie anschließend die MariaDB Shell:
- exit
Sie können testen, ob der neue Benutzer die richtigen Berechtigungen hat, indem Sie sich erneut in die MariaDB-Konsole einloggen, diesmal mit den benutzerdefinierten Anmeldedaten:
- mysql -u example_user -p
Beachten Sie das Flag -p
in diesem Befehl, das Sie nach dem Passwort fragt, welches Sie bei der Erstellung des Benutzers example_user gewählt haben. Nachdem Sie sich in die MariaDB-Konsole eingeloggt haben, bestätigen Sie, dass Sie Zugriff auf die Datenbank example\_database
haben:
- SHOW DATABASES;
Damit erhalten Sie die folgende Ausgabe:
Output+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)
Um die MariaDB Shell zu beenden, geben Sie Folgendes ein:
- exit
Zu diesem Zeitpunkt ist Ihr Datenbanksystem eingerichtet und Sie können zur Installation von PHP, der letzten Komponente des LAMP-Stacks, übergehen.
Sie haben Apache zur Bereitstellung Ihrer Inhalte und MariaDB zur Speicherung und Verwaltung Ihrer Daten installiert. PHP ist die Komponente unserer Einrichtung, die Code verarbeitet, um dynamische Inhalte für den Endbenutzer anzuzeigen. Zusätzlich zum php
-Paket benötigen Sie php-mysqlnd
, ein PHP-Modul, das PHP die Kommunikation mit MySQL-basierten Datenbanken ermöglicht. Core-PHP-Pakete werden automatisch als Abhängigkeiten installiert.
Um die Pakete php
und php-mysqlnd
mit dem dnf
-Paketmanager zu installieren, führen Sie Folgendes aus:
sudo dnf install php php-mysqlnd
Nach Abschluss der Installation müssen Sie den Apache-Webserver neu starten, um das PHP-Modul zu aktivieren:
sudo systemctl restart httpd
Ihr Webserver ist nun voll eingerichtet. Im nächsten Schritt erstellen Sie ein PHP-Testskript, um sicherzustellen, dass alles wie erwartet funktioniert.
Die standardmäßige Apache-Installation unter CentOS 8 erzeugt ein Dokument-Stammverzeichnis, das sich unter /var/www/html
befindet. Damit PHP auf Ihrem Webserver korrekt funktioniert, müssen Sie keine Änderungen an den Standardeinstellungen von Apache vornehmen.
Die einzige Anpassung, die wir vornehmen werden, ist die Änderung der standardmäßigen Berechtigungseinstellungen in Ihrem Dokument-Stammverzeichnis von Apache. Auf diese Weise können Sie Dateien in diesem Verzeichnis mit Ihrem regulären Systembenutzer erstellen und ändern, ohne dass Sie jedem Befehl sudo
voranstellen müssen.
Der folgende Befehl ändert die Eigentümerschaft des standardmäßigen Stammverzeichnisses des Apache-Dokuments auf einen Benutzer und eine Gruppe namens sammy. Achten Sie also darauf, den hervorgehobenen Benutzernamen und die Gruppe in diesem Befehl zu ersetzen, um den Benutzernamen und die Gruppe Ihres Systems widerzuspiegeln.
- sudo chown -R sammy.sammy /var/www/html/
Sie erstellen nun eine PHP-Testseite, um sicherzustellen, dass der Webserver wie erwartet funktioniert.
Der mit CentOS 8 bereitgestellte Standard-Texteditor ist vi
. vi
ist ein extrem leistungsfähiger Texteditor. Für Benutzer mit wenig Erfahrung kann er etwas stumpfsinnig sein. Eventuell möchten Sie einen benutzerfreundlicheren Editor wie nano
installieren, um die Bearbeitung von Dateien auf Ihrem CentOS 8-Server zu erleichtern:
- sudo dnf install nano
Geben Sie bei der Aufforderung zur Bestätigung der Installation y
ein.
Erstellen Sie nun eine neue PHP-Datei namens info.php
im Verzeichnis /var/www/html
:
- nano /var/www/html/info.php
Der folgende PHP-Code zeigt Informationen über die aktuelle PHP-Umgebung, die auf dem Server läuft:
<?php
phpinfo();
Wenn Sie dies abgeschlossen haben, speichern und schließen Sie die Datei. Wenn Sie nano
verwenden, können Sie STRG+X
drücken, dann Y
eingeben und zur Bestätigung ENTER
drücken.
Jetzt können Sie testen, ob Ihr Webserver den Inhalt korrekt anzeigt, der durch ein PHP-Skript erstellt wird. Gehen Sie zu Ihrem Browser und greifen Sie auf Ihren Server-Hostnamen oder die IP-Adresse zu, gefolgt von /info.php
:
http://server_host_or_IP/info.php
Sie sehen eine Seite, die so ähnlich wie die Folgende aussieht:
Nachdem Sie die relevanten Informationen über Ihren PHP-Server über diese Seite überprüft haben, ist es am besten, die von Ihnen erstellte Datei zu entfernen, da sie sensible Informationen über Ihre PHP-Umgebung und Ihren CentOS-Server enthält. Sie können rm
verwenden, um diese Datei zu entfernen:
- rm /var/www/html/info.php
Sie können diese Datei jederzeit regenerieren, falls Sie sie später benötigen. Als Nächstes testen Sie die Datenbankverbindung von der PHP-Seite.
Wenn Sie testen möchten, ob PHP eine Verbindung mit MariaDB herstellen kann und Datenbankabfragen ausführt, können Sie eine Testtabelle mit Pseudodaten erstellen und die Inhalte mit einem PHP-Skript abfragen.
Verbinden Sie sich zuerst mit der MariaDB-Konsole mit dem Datenbankbenutzer, den Sie in Schritt 2 dieses Leitfadens erstellt haben:
- mysql -u example_user -p
Erstellen Sie eine Tabelle namens todo_list
. Führen Sie die folgende Anweisung aus der MariaDB-Konsole aus:
CREATE TABLE example_database.todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);
Geben Sie nun einige Zeilen an Inhalt in die Testtabelle ein. Sie können den nächsten Befehl ein paar Mal wiederholen, indem Sie verschiedene Werte verwenden:
- INSERT INTO example_database.todo_list (content) VALUES ("My first important item");
Um zu bestätigen, dass die Daten erfolgreich in Ihrer Tabelle gespeichert wurden, führen Sie Folgendes aus:
- SELECT * FROM example_database.todo_list;
Sie sehen die folgende Ausgabe:
Output+---------+--------------------------+
| item_id | content |
+---------+--------------------------+
| 1 | My first important item |
| 2 | My second important item |
| 3 | My third important item |
| 4 | and this one more thing |
+---------+--------------------------+
4 rows in set (0.000 sec)
Nachdem Sie bestätigt haben, dass Sie gültige Daten in Ihrer Testtabelle haben, können Sie die MariaDB-Konsole verlassen:
- exit
Sie können nun das PHP-Skript erstellen, das sich mit MariaDB verbindet und Ihre Inhalte abfragen. Erstellen Sie mit Ihrem bevorzugten Editor eine neue PHP-Datei in Ihrem benutzerdefinierten Stammverzeichnis. Verwenden Sie hierzu nano
:
- nano /var/www/html/todo_list.php
Fügen Sie Ihrem PHP-Skript den folgenden Inhalt hinzu:
<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";
try {
$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>TODO</h2><ol>";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "<li>" . $row['content'] . "</li>";
}
echo "</ol>";
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
Speichern und schließen Sie die Datei, wenn die Bearbeitung abgeschlossen ist.
Sie können diese Seite jetzt in Ihrem Webbrowser aufrufen, indem Sie den Hostnamen oder die öffentliche IP-Adresse Ihres Servers aufrufen, gefolgt von /todo_list.php
:
http://server_host_or_IP/todo_list.php
Sie sollten nun eine Seite ähnlich wie diese sehen, die den Inhalt anzeigt, den Sie in Ihre Testtabelle eingefügt haben:
Das bedeutet, dass Ihre PHP-Umgebung zur Verfügung steht, um mit Ihrem MariaDB-Server zu interagieren.
In diesem Leitfaden haben Sie eine flexible Grundlage für die Bereitstellung von PHP-Websites und -Anwendungen für Ihre Besucher unter Verwendung von Apache als Webserver erstellt. Sie haben Apache zur Bearbeitung von PHP-Anfragen eingerichtet und haben auch eine MariaDB-Datenbank zur Speicherung der Daten Ihrer Website eingerichtet.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
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!