Wie installiert man Linux, Apache, MySQL, PHP (LAMP) auf Ubuntu?

0 Aktien
0
0
0
0

Einführung

Der LAMP-Stack ist eine Gruppe von Open-Source-Software, die üblicherweise zusammen installiert wird, um einem Server das Hosten dynamischer Websites und in PHP geschriebener Webanwendungen zu ermöglichen. LAMP steht für Linux-Betriebssystem mit Apache-Webserver. Die Website-Daten werden in einer MySQL-Datenbank gespeichert und die dynamischen Inhalte von PHP verarbeitet.

In dieser Anleitung richten Sie einen LAMP-Stack auf einem Ubuntu 22.04-Server ein. Diese Schritte gelten analog für Ubuntu 18.04 und höher.

Voraussetzungen

Für dieses Tutorial benötigen Sie einen Server mit Ubuntu, einen Benutzer mit sudo-Rechten (kein Root-Benutzer) und eine aktive Firewall. Anweisungen zur Einrichtung finden Sie in unserer Anleitung zur Serverinstallation. Wählen Sie dazu Ihre Ubuntu-Distribution aus der Liste aus.

Schritt 1 – Apache installieren und Firewall aktualisieren

Der Apache-Webserver ist einer der weltweit beliebtesten Webserver. Er ist gut dokumentiert, verfügt über eine aktive Benutzergemeinschaft und wurde über weite Strecken der Webgeschichte eingesetzt, was ihn zu einer hervorragenden Wahl für das Webhosting macht.

Beginnen Sie mit der Aktualisierung des Paketmanager-Caches. Wenn Sie sudo in dieser Sitzung zum ersten Mal verwenden, werden Sie aufgefordert, Ihr Benutzerpasswort einzugeben, um zu bestätigen, dass Sie über die entsprechenden Berechtigungen zum Verwalten von Systempaketen mit apt verfügen.

sudo apt update

Starten Sie dann Apache mit folgendem Befehl:

sudo apt install apache2

Sie werden aufgefordert, die Installation von Apache zu bestätigen. Bestätigen Sie mit Y und anschließend mit der Eingabetaste.

Nach Abschluss der Installation müssen Sie Ihre Firewall-Einstellungen so konfigurieren, dass HTTP-Verkehr zugelassen wird. Das Standard-Firewall-Konfigurationstool von Ubuntu heißt Uncomplicated Firewall (UFW). Es bietet verschiedene Anwendungsprofile. Um alle verfügbaren UFW-Anwendungsprofile aufzulisten, führen Sie folgenden Befehl aus:

sudo ufw app list
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

Hier die Bedeutung der einzelnen Profile:

  • Apache: Dieses Profil öffnet nur Port 80 (normaler, unverschlüsselter Webverkehr).
  • Apache Full: Dieses Profil öffnet sowohl Port 80 (normaler, unverschlüsselter Webverkehr) als auch Port 443 (TLS/SSL-verschlüsselter Datenverkehr).
  • Apache Secure: Dieses Profil öffnet nur Port 443 (TLS/SSL-verschlüsselter Datenverkehr).

Fürs Erste empfiehlt es sich, nur Verbindungen über Port 80 zuzulassen, da es sich um eine neue Apache-Installation handelt und Sie noch kein TLS/SSL-Zertifikat konfiguriert haben, um HTTPS-Verkehr auf Ihrem Server zu ermöglichen.

Um nur Datenverkehr auf Port 80 zuzulassen, verwenden Sie das Apache-Profil:

sudo ufw allow in "Apache"

Bestätigen Sie die Änderung mit:

sudo ufw status
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)

Der Datenverkehr auf Port 80 wird nun durch die Firewall zugelassen.

Sie können sofort eine kurze Überprüfung durchführen, um sicherzustellen, dass alles planmäßig verlaufen ist, indem Sie die öffentliche IP-Adresse Ihres Servers in einem Webbrowser aufrufen (siehe den Hinweis unter der nächsten Überschrift, um Ihre öffentliche IP-Adresse herauszufinden, falls Sie diese Information nicht haben).

http://your_server_ip

Die Standard-Apache-Webseite unter Ubuntu dient Informations- und Testzwecken. Nachfolgend ein Beispiel für die Standard-Apache-Webseite unter Ubuntu 22.04:

Wenn Sie diese Seite sehen können, ist Ihr Webserver ordnungsgemäß installiert und über Ihre Firewall erreichbar.

So finden Sie die öffentliche IP-Adresse Ihres Servers

Wenn Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, gibt es verschiedene Möglichkeiten, sie herauszufinden. Normalerweise ist dies die Adresse, die Sie für die SSH-Verbindung zu Ihrem Server verwenden.

Es gibt verschiedene Möglichkeiten, dies über die Kommandozeile zu tun. Zunächst können Sie das Tool iproute2 verwenden, um Ihre IP-Adresse zu ermitteln, indem Sie Folgendes eingeben:

ip addr show ens3 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Es werden zwei oder drei Zeilen zurückgegeben. Es handelt sich dabei um gültige Adressen, aber Ihr Computer kann möglicherweise nur eine davon verwenden. Probieren Sie daher jede einzelne aus.

Eine alternative Methode besteht darin, das curl-Tool zu verwenden, um eine externe Stelle zu kontaktieren und ihr mitzuteilen, wie sie Ihren Server sieht. Dies geschieht, indem man einen bestimmten Server nach Ihrer IP-Adresse fragt:

curl http://icanhazip.com

Egal welche Methode Sie wählen, geben Sie Ihre IP-Adresse in Ihren Webbrowser ein, um zu überprüfen, ob Ihr Server läuft.

Schritt 2 – MySQL installieren

Nachdem Sie nun einen Webserver eingerichtet haben, benötigen Sie ein Datenbanksystem, um die Daten Ihrer Website zu speichern und zu verwalten. MySQL ist ein beliebtes Datenbankmanagementsystem, das in PHP-Umgebungen eingesetzt wird.

Verwenden Sie apt erneut, um diese Software zu beziehen und zu installieren:

sudo apt install mysql-server

Bestätigen Sie die Installation, indem Sie bei Aufforderung Y eingeben und dann EINGEBEN Bestätigen.

Nach Abschluss der Installation wird empfohlen, das mit MySQL mitgelieferte Sicherheitsskript auszuführen. 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

Diese Frage fragt Sie, ob Sie möchten PASSWORT-VALIDIERUNGS-PLUGIN Konfigurieren.

Um fortzufahren, ohne die Aktivierungsfunktion zu aktivieren, antworten Sie mit J, Ja oder einer beliebigen anderen Antwort.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:

Wenn Sie mit «Ja» antworten, werden Sie aufgefordert, eine Passwortvalidierungsstufe auszuwählen. Beachten Sie, dass Sie bei Eingabe von 2 für die höchste Sicherheitsstufe Fehlermeldungen erhalten, wenn Sie versuchen, ein Passwort festzulegen, das keine Zahlen, Groß- und Kleinbuchstaben sowie Sonderzeichen enthält.

There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Unabhängig davon, ob Sie das VALIDATE PASSWORD PLUGIN aktivieren, werden Sie von Ihrem Server im nächsten Schritt aufgefordert, ein Passwort für den MySQL-Root-Benutzer auszuwählen und zu bestätigen. Dieser ist nicht mit dem System-Root zu verwechseln. Der Datenbank-Root-Benutzer ist ein Administrator mit vollen Berechtigungen im Datenbanksystem. Auch wenn die Standardauthentifizierungsmethode für den MySQL-Root-Benutzer kein Passwort erfordert, sollten Sie – selbst wenn Sie ein Passwort festlegen – zur zusätzlichen Sicherheit ein sicheres Passwort definieren.

Wenn die Passwortüberprüfung aktiviert ist, wird Ihnen die Stärke des soeben eingegebenen Root-Passworts angezeigt, und Ihr Server fragt Sie, ob Sie mit diesem Passwort fortfahren möchten. Wenn Sie mit Ihrem aktuellen Passwort zufrieden sind, geben Sie an der entsprechenden Stelle “J” für „Ja“ ein.

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Drücken Sie bei den restlichen Fragen jeweils „J“ und anschließend die Eingabetaste. Dadurch werden einige anonyme Benutzer und die Testdatenbank entfernt, Remote-Root-Anmeldungen deaktiviert und die neuen Regeln geladen, sodass MySQL die vorgenommenen Änderungen sofort übernimmt.

Wenn Sie fertig sind, testen Sie, ob Sie sich an der MySQL-Konsole anmelden können, indem Sie Folgendes eingeben:

sudo mysql

Dadurch wird eine Verbindung zum MySQL-Server als administrativer Datenbankbenutzer „root“ hergestellt, was durch die Verwendung von „sudo“ beim Ausführen dieses Befehls automatisch erkannt wird. Nachfolgend finden Sie eine Beispielausgabe:

Output
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28-0ubuntu4 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

Um die MySQL-Konsole zu verlassen, geben Sie Folgendes ein:

exit

Beachten Sie, dass Sie kein Passwort für die Verbindung als Root-Benutzer benötigen, selbst wenn Sie beim Ausführen des Skripts `mysql_secure_installation` ein Passwort festgelegt haben. Dies liegt daran, dass die Standardauthentifizierungsmethode für den administrativen MySQL-Benutzer `unix_socket` anstelle eines Passworts ist. Obwohl dies zunächst wie ein Sicherheitsrisiko erscheinen mag, erhöht es die Sicherheit des Datenbankservers, da sich nur Systembenutzer mit sudo-Rechten, die sich über die Konsole oder ein Programm mit denselben Rechten verbinden, als MySQL-Root-Benutzer anmelden dürfen. Konkret bedeutet dies, dass Sie den administrativen Datenbank-Root-Benutzer nicht für die Verbindung aus Ihrer PHP-Anwendung verwenden können. Die Festlegung eines Passworts für das MySQL-Root-Konto dient als Sicherheitsmaßnahme für den Fall, dass die Standardauthentifizierungsmethode von `unix_socket` auf ein Passwort umgestellt wird.

Zur Erhöhung der Sicherheit empfiehlt es sich, für jede Datenbank separate Benutzerkonten mit weniger umfangreichen Berechtigungen einzurichten, insbesondere wenn Sie planen, mehrere Datenbanken auf Ihrem Server zu hosten.

Ihr MySQL-Server ist nun installiert und gesichert. Als Nächstes installieren Sie PHP, die letzte Komponente des LAMP-Stacks.

Schritt 3 – PHP installieren

Sie haben Apache für die Bereitstellung Ihrer Inhalte und MySQL für die Speicherung und Verwaltung Ihrer Daten installiert. PHP ist der Teil Ihrer Konfiguration, der den Code zur Anzeige dynamischer Inhalte für den Endbenutzer verarbeitet. Zusätzlich zum PHP-Paket benötigen Sie php-mysql, ein PHP-Modul, das die Kommunikation von PHP mit MySQL-basierten Datenbanken ermöglicht. Außerdem benötigen Sie libapache2-mod-php, damit Apache PHP-Dateien verarbeiten kann. Die PHP-Kernpakete werden automatisch als Abhängigkeiten installiert.

Um diese Pakete zu installieren, führen Sie folgenden Befehl aus:

sudo apt install php libapache2-mod-php php-mysql

Sobald die Installation abgeschlossen ist, führen Sie folgenden Befehl aus, um Ihre PHP-Version zu überprüfen:

php -v
Output
PHP 8.1.2 (cli) (built: Mar 4 2022 18:13:46) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
Apache-Verzeichnis wechseln (optional)

In manchen Fällen möchten Sie die Art und Weise ändern, wie Apache Dateien ausliefert, wenn ein Verzeichnis angefordert wird. Aktuell sucht Apache bei einer Verzeichnisanfrage zuerst nach der Datei `index.html`. Wir möchten den Webserver anweisen, PHP-Dateien zu priorisieren, sodass Apache zuerst nach der Datei `index.php` sucht. Andernfalls hat die im Dokumentenstammverzeichnis der Anwendung abgelegte Datei `index.html` immer Vorrang vor der Datei `index.php`.

Um diese Änderung vorzunehmen, öffnen Sie die Konfigurationsdatei dir.conf in einem Texteditor Ihrer Wahl. Hier verwenden wir nano:

sudo nano /etc/apache2/mods-enabled/dir.conf

Es wird folgendermaßen aussehen:

<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Verschieben Sie die oben genannte PHP-Indexdatei an die erste Position nach der DirectoryIndex-Spezifikation, und zwar so:

<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Wenn Sie fertig sind, speichern und schließen Sie die Datei mit Strg+X. Bestätigen Sie das Speichern mit J und drücken Sie anschließend die Eingabetaste, um den Speicherort für die Datei festzulegen.

Starten Sie anschließend den Apache-Webserver neu, damit Ihre Änderungen wirksam werden. Dies können Sie mit folgendem Befehl tun:

sudo systemctl restart apache2

Sie können den Status des Apache2-Dienstes auch mit systemctl überprüfen:

sudo systemctl status apache2
Sample Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2021-07-15 09:22:59 UTC; 1h 3min ago
Main PID: 3719 (apache2)
Tasks: 55 (limit: 2361)
CGroup: /system.slice/apache2.service
├─3719 /usr/sbin/apache2 -k start
├─3721 /usr/sbin/apache2 -k start
└─3722 /usr/sbin/apache2 -k start
Jul 15 09:22:59 ubuntu1804 systemd[1]: Starting The Apache HTTP Server...
Jul 15 09:22:59 ubuntu1804 apachectl[3694]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' di
Jul 15 09:22:59 ubuntu1804 systemd[1]: Started The Apache HTTP Server.

Um aus dieser Situation herauszukommen, Q Drücken.

PHP-Erweiterungen installieren (optional)

Um die Funktionalität von PHP zu erweitern, können Sie einige zusätzliche Module installieren. Um die verfügbaren PHP-Module und -Bibliotheken anzuzeigen, geben Sie die Suchergebnisse von apt in less ein, einem Pager, mit dem Sie durch die Ausgabe anderer Befehle scrollen können.

apt search php- | less

Bewegen Sie sich mit den Pfeiltasten nach oben und unten und drücken Sie die Taste Q, um das Programm zu beenden.

Die Ergebnisse zeigen alle optionalen Komponenten, die Sie installieren können. Für jede Komponente wird eine kurze Beschreibung angezeigt:

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
Tracks usage of TCP/IP and builds html files with graphs
bluefish/bionic 2.2.10-1 amd64
advanced Gtk+ text editor for web and software development
cacti/bionic 1.1.38+ds1-1 all
web interface for graphing of monitoring systems
ganglia-webfrontend/bionic 3.6.1-3 all
cluster monitoring toolkit - web front-end
golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
PHP-like Compression and Archive Extensions in Go
haserl/bionic 0.9.35-2 amd64
CGI scripting program for embedded environments
kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php
kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php-l10n
…

Um mehr über die Funktionen der einzelnen Module zu erfahren, können Sie im Internet nach weiteren Informationen suchen. Sie können sich auch die ausführlichen Paketbeschreibungen ansehen, indem Sie Folgendes eingeben:

apt show package_name

Es wird eine umfangreiche Ausgabe geben, die ein Feld namens Beschreibung enthält, welches die Funktionalität des Moduls näher erläutert.

Um beispielsweise herauszufinden, was das php-cli-Modul bewirkt, können Sie Folgendes eingeben:

apt show php-cli

Neben einer Fülle weiterer Informationen finden Sie dort unter anderem Folgendes:

Output
…
Description: command-line interpreter for the PHP scripting language (default)
This package provides the /usr/bin/php command interpreter, useful for
testing PHP scripts from a shell or performing general shell scripting tasks.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.
.
This package is a dependency package, which depends on Ubuntu's default
PHP version (currently 7.2).
…

Wenn Sie sich nach einiger Recherche für die Installation eines Pakets entscheiden, können Sie dies mit dem Befehl apt install tun, genau wie bei jeder anderen Software.

Wenn Sie sich für php-cli entscheiden, können Sie Folgendes eingeben:

sudo apt install php-cli

Wenn Sie mehr als ein Modul installieren möchten, können Sie dies tun, indem Sie jedes Modul durch ein Leerzeichen getrennt auflisten und anschließend den Befehl `apt install` ausführen, wie folgt:

sudo apt install package1 package2 ...

Ihr LAMP-Stack ist nun installiert und konfiguriert. Bevor Sie fortfahren, empfehlen wir die Einrichtung eines virtuellen Apache-Hosts, um Ihre Serverkonfigurationsdetails zu speichern.

An diesem Punkt ist Ihr LAMP-Stack voll funktionsfähig. Bevor Sie Ihre Konfiguration jedoch mit einem PHP-Skript testen, empfiehlt es sich, einen geeigneten virtuellen Apache-Host einzurichten, der Ihre Website-Dateien und -Ordner aufnimmt.

Schritt 4 – Erstellen Sie einen virtuellen Host für Ihre Website

Bei Verwendung des Apache-Webservers können Sie virtuelle Hosts (ähnlich den Serverblöcken in Nginx) erstellen, um Konfigurationsdetails zu kapseln und mehrere Domains auf einem einzigen Server zu hosten. In dieser Anleitung richten wir eine Domain namens „your_domain“ ein. Ersetzen Sie diesen Namen jedoch durch Ihren eigenen Domainnamen.

Apache unter Ubuntu verwendet standardmäßig einen virtuellen Host, der so konfiguriert ist, dass er Dokumente aus dem Verzeichnis `/var/www/html` ausliefert. Dies funktioniert zwar für eine einzelne Website problemlos, kann aber bei mehreren Websites umständlich werden. Anstatt `/var/www/html` zu ändern, erstellen wir eine Verzeichnisstruktur in `/var/www` für die Website `your_domain` und belassen `/var/www/html` als Standardverzeichnis, sofern der Client keine andere Option angibt. (Anpassen Sie dies an jede andere Website.)

Erstellen Sie ein Verzeichnis für Ihre_Domain wie folgt:

sudo mkdir /var/www/your_domain

Weisen Sie als Nächstes dem Verzeichnis die Besitzrechte mit der Umgebungsvariablen $USER zu, die auf den aktuellen Benutzer Ihres Systems verweist:

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

Öffnen Sie als Nächstes eine neue Konfigurationsdatei im Verzeichnis „sites-available“ von Apache mit Ihrem bevorzugten Befehlszeileneditor. Hier verwenden wir nano:

sudo nano /etc/apache2/sites-available/your_domain.conf

Dadurch wird eine neue, leere Datei erstellt. Fügen Sie die folgende Minimalkonfiguration mit Ihrem Domainnamen hinzu:

<VirtualHost *:80>
ServerName your_domain
ServerAlias www.your_domain
ServerAdmin webmaster@localhost
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Wenn Sie fertig sind, speichern und schließen Sie die Datei. Wenn Sie nano verwenden, drücken Sie dazu STRG+X, dann Y und anschließend die Eingabetaste.

Mit dieser VirtualHost-Konfiguration weisen wir Apache an, Ihre Domain über /var/www/Ihre_Domain als Web-Root-Verzeichnis bereitzustellen. Wenn Sie Apache ohne Domainnamen testen möchten, können Sie die Optionen ServerName und ServerAlias ​​entfernen oder auskommentieren, indem Sie am Anfang jeder Optionszeile ein Rautezeichen (#) hinzufügen.

Aktivieren Sie nun den neuen virtuellen Host mit a2ensite:

sudo a2ensite your_domain

Möglicherweise möchten Sie die mit Apache installierte Standardwebsite deaktivieren. Dies ist erforderlich, wenn Sie keine eigene Domain verwenden, da Apache in diesem Fall Ihre Standardeinstellungen für den virtuellen Host überschreibt. Um die Standard-Apache-Website zu deaktivieren, geben Sie Folgendes ein:

sudo a2dissite 000-default

Um sicherzustellen, dass Ihre Konfigurationsdatei keine Syntaxfehler enthält, führen Sie folgenden Befehl aus:

sudo apache2ctl configtest

Laden Sie abschließend Apache neu, damit diese Änderungen wirksam werden:

sudo systemctl reload apache2

Ihre neue Website ist jetzt online, aber das Web-Root-Verzeichnis /var/www/your_domain ist noch leer. Erstellen Sie dort eine index.html-Datei, um zu testen, ob der virtuelle Host wie erwartet funktioniert.

nano /var/www/your_domain/index.html

Fügen Sie folgenden Inhalt in diese Datei ein:

<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>

Speichern und schließen Sie die Datei. Öffnen Sie anschließend Ihren Browser und rufen Sie den Domainnamen oder die IP-Adresse Ihres Servers auf:

http://server_domain_or_IP

Ihre Webseite sollte den Inhalt der soeben bearbeiteten Datei widerspiegeln:

Sie können diese Datei als temporäre Startseite für Ihre Anwendung verwenden, bis Sie eine index.php-Datei als Ersatz einrichten. Sobald Sie dies getan haben, denken Sie daran, die index.html-Datei aus Ihrem Dokumentenstammverzeichnis zu entfernen oder umzubenennen, da sie standardmäßig Vorrang vor der index.php-Datei hat.

Ein Hinweis zu DirectoryIndex in Apache

Bei den Standardeinstellungen von Apache DirectoryIndex hat die Datei index.html immer Vorrang vor der Datei index.php. Dies ist nützlich, um Wartungsseiten in PHP-Anwendungen einzurichten, indem eine temporäre index.html-Datei mit einer Informationsmeldung für Besucher erstellt wird. Da diese Seite Vorrang vor der index.php-Seite hat, wird sie zur Startseite der Anwendung. Nach Abschluss der Wartungsarbeiten wird die index.html-Datei umbenannt oder aus dem Stammverzeichnis entfernt, wodurch die normale Anwendungsseite wiederhergestellt wird.

Wenn Sie dieses Verhalten ändern möchten, müssen Sie die Datei /etc/apache2/mods-enabled/dir.conf bearbeiten und die Indexierungsreihenfolge der Datei index.php in der DirectoryIndex-Direktive ändern:

sudo nano /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Nach dem Speichern und Schließen der Datei müssen Sie Apache neu laden, damit die Änderungen wirksam werden:

sudo systemctl reload apache2

Als nächstes erstellen wir ein PHP-Skript, um zu testen, ob PHP auf Ihrem Server ordnungsgemäß installiert und konfiguriert ist.

Schritt 5 – Testen Sie die PHP-Verarbeitung auf Ihrem Webserver

Nachdem Sie nun einen benutzerdefinierten Speicherort für Ihre Website-Dateien und -Ordner festgelegt haben, erstellen Sie ein PHP-Testskript, um zu überprüfen, ob Apache in der Lage ist, Anfragen für PHP-Dateien zu bearbeiten und zu verarbeiten.

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

nano /var/www/your_domain/info.php

Dadurch wird eine leere Datei geöffnet. Fügen Sie den folgenden Text, der gültiger PHP-Code ist, in die Datei ein:

<?php
phpinfo();

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Um dieses Skript zu testen, öffnen Sie Ihren Webbrowser und rufen Sie die Domain oder IP-Adresse Ihres Servers auf, gefolgt vom Skriptnamen, der in diesem Fall info.php lautet:

http://server_domain_or_IP/info.php

Hier ist ein Beispiel für eine Standard-PHP-Webseite:

Diese Seite liefert Informationen über Ihren Server aus PHP-Sicht. Sie ist hilfreich beim Debuggen und um sicherzustellen, dass Ihre Einstellungen korrekt angewendet werden.

Wenn Sie diese Seite in Ihrem Browser sehen, funktioniert Ihre PHP-Installation wie erwartet.

Nachdem Sie die Informationen zu Ihrem PHP-Server auf dieser Seite überprüft haben, sollten Sie die erstellte Datei löschen, da sie sensible Informationen über Ihre PHP-Umgebung und Ihren Ubuntu-Server enthält. Verwenden Sie dazu den Befehl `rm:`.

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

Sie können diese Seite jederzeit neu erstellen, falls Sie die Informationen erneut benötigen.

Schritt 6 – Testen der Datenbankverbindung von PHP aus (Optional)

Um zu testen, ob PHP eine Verbindung zu MySQL herstellen und Datenbankabfragen ausführen kann, können Sie eine Testtabelle mit Testdaten erstellen und deren Inhalt über ein PHP-Skript abfragen. Zuvor müssen Sie jedoch eine Testdatenbank und einen neuen MySQL-Benutzer anlegen, der für den Zugriff darauf korrekt konfiguriert ist.

Erstellen Sie eine Datenbank namens example_database und einen Benutzer namens example_user. Sie können diese Namen durch andere Werte ersetzen.

Stellen Sie zunächst mit dem Root-Konto eine Verbindung zur MySQL-Konsole her:

sudo mysql

Um eine neue Datenbank zu erstellen, führen Sie folgenden Befehl in Ihrer MySQL-Konsole aus:

CREATE DATABASE example_database;

Erstellen Sie nun einen neuen Benutzer und erteilen Sie ihm volle Berechtigungen für die soeben erstellte benutzerdefinierte Datenbank.

Der folgende Befehl erstellt einen neuen Benutzer namens example_user, der mit der Methode caching_sha2_password authentifiziert wird. Wir definieren das Passwort für diesen Benutzer als password, Sie sollten diesen Wert jedoch durch ein sicheres Passwort Ihrer Wahl ersetzen.

CREATE USER 'example_user'@'%' IDENTIFIED BY 'password';

Erteilen Sie diesem Benutzer nun Berechtigungen für die Datenbank example_database:

GRANT ALL ON example_database.* TO 'example_user'@'%';

Dies gewährt dem Benutzer example_user volle Berechtigungen für die Datenbank example_database und verhindert gleichzeitig, dass der Benutzer andere Datenbanken auf Ihrem Server erstellt oder ändert.

Beenden Sie nun die MySQL-Shell:

exit

Prüfen Sie, ob der neue Benutzer über die entsprechenden Berechtigungen verfügt, indem Sie sich erneut in der MySQL-Konsole anmelden, diesmal mit benutzerdefinierten Benutzeranmeldeinformationen:

mysql -u example_user -p

Beachten Sie den Parameter `-p` in diesem Befehl. Er fordert Sie auf, das Passwort auszuwählen, das Sie beim Erstellen des Benutzers `example_user` verwendet haben. Sobald Sie in der MySQL-Konsole angemeldet sind, überprüfen Sie, ob Sie Zugriff auf die Datenbank `example_database` haben.

SHOW DATABASES;

Dies führt zu folgender Ausgabe:

Output
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)

Erstellen Sie anschließend eine Testtabelle namens todo_list. Führen Sie in der MySQL-Konsole die folgende Anweisung aus:

CREATE TABLE example_database.todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);

Fügen Sie einige Datenzeilen in die Testtabelle ein. Wiederholen Sie den folgenden Befehl mehrmals mit unterschiedlichen Werten, um Ihre Testtabelle zu füllen:

INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

Um zu überprüfen, ob die Daten erfolgreich in Ihrer Tabelle gespeichert wurden, führen Sie Folgendes aus:

SELECT * FROM example_database.todo_list;

Die Ausgabe sieht wie folgt aus:

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 überprüft haben, dass Ihre Testtabelle gültige Daten enthält, beenden Sie die MySQL-Konsole:

exit

Jetzt können Sie das PHP-Skript erstellen, das die Verbindung zu MySQL herstellt und Ihre Inhalte abfragt. Erstellen Sie dazu mit Ihrem bevorzugten Editor eine neue PHP-Datei im Stammverzeichnis Ihrer Website.

nano /var/www/your_domain/todo_list.php

Das folgende PHP-Skript stellt eine Verbindung zu einer MySQL-Datenbank her, durchsucht die Tabelle „todo_list“ und zeigt die Ergebnisse in einer Liste an. Bei einem Problem mit der Datenbankverbindung wird eine Ausnahme ausgelöst.

Fügen Sie diesen Inhalt in Ihr todo_list.php-Skript ein und denken Sie daran, example_user und Ihr Passwort zu ersetzen:

<?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 Sie mit der Bearbeitung fertig sind.

Sie können diese Seite nun in Ihrem Webbrowser aufrufen, indem Sie den für Ihre Website konfigurierten Domainnamen oder die öffentliche IP-Adresse gefolgt von /todo_list.php besuchen:

http://your_domain_or_IP/todo_list.php

Diese Webseite sollte dem Besucher den Inhalt Ihrer Testtabelle anzeigen:

Dies bedeutet, dass Ihre PHP-Umgebung bereit ist, sich mit Ihrem MySQL-Server zu verbinden und zu interagieren.

Ergebnis

In diesem Leitfaden haben Sie eine flexible Grundlage geschaffen, um Ihren Besuchern PHP-Websites und -Anwendungen mithilfe von Apache als Webserver und MySQL als Datenbanksystem bereitzustellen.

Als nächsten Schritt sollten Sie sicherstellen, dass die Verbindungen zu Ihrem Webserver durch die Verwendung von HTTPS gesichert sind. Dazu können Sie unter Ubuntu 22.04 / 20.04 / 18.04 Let's Encrypt nutzen, um Ihre Website mit einem kostenlosen TLS/SSL-Zertifikat zu schützen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte Ihnen auch gefallen