Website-Suche

Installiere Apache, MySQL, PHP (LAMP-Stack) auf Ubuntu 20.04 LTS


LAMP-Stack ist eine beliebte Open-Source-Webentwicklungsplattform, die verwendet werden kann, um dynamische Websites und webbasierte Anwendungen auszuführen und bereitzustellen. Typischerweise besteht ein LAMP-Stack aus dem Apache-Webserver, MariaDB/MySQL-Datenbanken und den Programmiersprachen PHP/Python/Perl. LAMP ist das Akronym für Linux, Apache, MariaDB/MySQL, PHP/Python/Perl. Dieses Schritt-für-Schritt-Tutorial beschreibt, wie man Apache, MySQL und PHP (LAMP-Stack) auf einem Ubuntu 20.04 LTS Server installiert.

Installiere Apache, MySQL, PHP (LAMP-Stack) auf Ubuntu 20.04 LTS

Für den Zweck dieses Tutorials werden wir das folgende Ubuntu-System verwenden.

  • Betriebssystem : Ubuntu 20.04 LTS Server Edition
  • IP-Adresse : 192.168.225.52/24

Zuerst lass uns den Apache-Server installieren.

1. Installieren Sie den Apache-Webserver in Ubuntu

Zuerst aktualisieren Sie den Ubuntu-Server mit den Befehlen:

$ sudo apt update
$ sudo apt upgrade

Installieren Sie als Nächstes den Apache-Webserver:

$ sudo apt install apache2

Überprüfen Sie mit dem Befehl, ob der Apache-Webserver läuft oder nicht:

$ sudo systemctl status apache2

Beispielausgabe wäre:

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabl>
     Active: active (running) since Fri 2020-05-29 07:02:26 UTC; 25s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 23996 (apache2)
      Tasks: 55 (limit: 2283)
     Memory: 5.1M
     CGroup: /system.slice/apache2.service
             ├─23996 /usr/sbin/apache2 -k start
             ├─23998 /usr/sbin/apache2 -k start
             └─23999 /usr/sbin/apache2 -k start

May 29 07:02:26 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
May 29 07:02:26 ubuntuserver apachectl[23981]: AH00558: apache2: Could not reliably det>
May 29 07:02:26 ubuntuserver systemd[1]: Started The Apache HTTP Server.

Herzlichen Glückwunsch! Der Apache-Dienst läuft und funktioniert!!

1.1. Apache-Webserver über die UFW-Firewall zulassen

UFW, steht für Unkomplizierte Firewall, ist ein Programm zur Verwaltung einer Netfilter-Firewall, das einfach zu bedienen sein soll. UFW ist standardmäßig in allen Ubuntu-Versionen verfügbar.

Standardmäßig kann auf den Apache-Webbrowser von entfernten Systemen nicht zugegriffen werden, wenn Sie die UFW-Firewall in Ubuntu 20.04 LTS aktiviert haben. Sie müssen die http- und https-Ports erlauben, indem Sie die unten angegebenen Schritte befolgen.

Listen Sie zunächst die auf Ihrem Ubuntu-System verfügbaren Anwendungsprofile mit dem Befehl auf:

$ sudo ufw app list

Beispielfausgabe:

Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Wie Sie sehen können, haben die Apache- und OpenSSH-Anwendungen UFW-Profile installiert. Sie können Informationen zu jedem Profil und dessen enthaltenen Regeln mit dem Befehl ufw app info "Profilname" auflisten.

Lassen Sie uns das “Apache Full ”-Profil mit folgendem Befehl ansehen:

$ sudo ufw app info "Apache Full"

Beispielausgabe:

Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
80,443/tcp

Wie Sie sehen, enthält das Profil "Apache Full" die Regeln, um den Datenverkehr zu den Ports 80 und 443 zu ermöglichen.

Führen Sie nun den folgenden Befehl aus, um eingehenden HTTP- und HTTPS-Verkehr für dieses Profil zuzulassen:

$ sudo ufw allow in "Apache Full"

Sie werden eine Ausgabe wie unten sehen:

Rules updated
Rules updated (v6)

Wenn Sie keinen https-Verkehr zulassen möchten, sondern nur http (80) Verkehr, führen Sie aus:

$ sudo ufw app info "Apache"

1.2. Apache-Webserver testen

Öffnen Sie nun Ihren Webbrowser und rufen Sie die Apache-Testseite auf, indem Sie zu http://localhost/ oder http://IP-Address/ navigieren.

Wenn Sie die "Apache 2 Ubuntu Standardseite" wie unten gezeigt sehen, sind Sie startklar. Der Apache-Server funktioniert!

Apache-Webserver testen

2. Installiere MySQL in Ubuntu

Um MySQL unter Ubuntu zu installieren, führen Sie aus:

$ sudo apt install mysql-server

Überprüfen Sie mit dem Befehl, ob der MySQL-Dienst läuft oder nicht:

$ sudo systemctl status mysql

Beispielausgabe:

● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-05-29 07:15:22 UTC; 2min 8s ago
   Main PID: 25242 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 2283)
     Memory: 323.7M
     CGroup: /system.slice/mysql.service
             └─25242 /usr/sbin/mysqld

May 29 07:15:16 ubuntuserver systemd[1]: Starting MySQL Community Server...
May 29 07:15:22 ubuntuserver systemd[1]: Started MySQL Community Server.

Wie Sie in der obigen Ausgabe sehen, läuft MySQL!

2.1. Datenbank-Administratorbenutzer (root) Passwort für MySQL einrichten

Standardmäßig ist das Passwort des MySQL-root-Benutzers leer. Es wird nicht empfohlen, ein leeres Passwort für das Datenbank-Administratorkonto zu verwenden. Sie müssen Ihren MySQL-Server sichern, indem Sie das folgende Skript ausführen:

$ sudo mysql_secure_installation

Es wird Sie gefragt, ob Sie die "VALIDATE PASSWORD" Komponente einrichten möchten oder nicht. Diese Komponente ermöglicht es den Benutzern, ein starkes Passwort für Datenbankanmeldeinformationen zu konfigurieren. Wenn sie aktiviert ist, überprüft sie automatisch die Stärke des Passworts und erzwingt, dass die Benutzer nur Passwörter festlegen, die ausreichend sicher sind. Es ist sicher, sie deaktiviert zu lassen. Sie müssen jedoch ein starkes und eindeutiges Passwort für die Datenbankanmeldeinformationen verwenden. Wenn Sie diese Komponente nicht aktivieren möchten, drücken Sie einfach eine beliebige Taste, um den Passwortvalidierungsteil zu überspringen und die restlichen Schritte fortzusetzen.

Geben Sie y ein, wenn Sie die VALIDATE PASSWORD-Komponente einrichten möchten:

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT 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 component?

Press y|Y for Yes, any other key for No: y

Wenn Ihre Antwort Ja lautet, werden Sie aufgefordert, die Stufe der Passwortüberprüfung auszuwählen. Die verfügbaren Passwortüberprüfungen sind niedrig, mittel und stark. Geben Sie einfach die entsprechende Zahl ein (0 für niedrig, 1 für mittel und 2 für starkes Passwort) und drücken Sie die ENTER-Taste.

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

Geben Sie nun das Passwort für den MySQL-root-Benutzer ein. Bitte beachten Sie, dass Sie das Passwort für den MySQL-root-Benutzer entsprechend der Passwort-Richtlinie verwenden müssen, die Sie im vorherigen Schritt gewählt haben. Wenn Sie das Plugin nicht aktiviert haben, verwenden Sie einfach ein beliebiges starkes und einzigartiges Passwort Ihrer Wahl.

Please set the password for root here.

New password:

Re-enter new password:

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

Sobald Sie das Passwort zweimal eingegeben haben, werden Sie die Passwortstärke sehen (in unserem Fall ist sie 100). Wenn es für Sie in Ordnung ist, drücken Sie Y, um mit dem angegebenen Passwort fortzufahren. Wenn Sie mit der Passwortlänge nicht zufrieden sind, drücken Sie eine andere Taste und legen Sie ein starkes Passwort fest. Ich bin mit meinem aktuellen Passwort zufrieden, daher habe ich y gewählt.

Für die restlichen Fragen geben Sie einfach y ein und drücken Sie ENTER. Dadurch wird der anonyme Benutzer entfernt, die Anmeldung des Root-Benutzers aus der Ferne deaktiviert und die Testdatenbank entfernt.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

Fertig! Wir haben das Passwort des MySQL-root-Benutzers gesetzt.

2.2. Ändern der Authentifizierungsmethode für den MySQL-Root-Benutzer

Standardmäßig ist der MySQL-Root-Benutzer ab MySQL 5.7 und neueren Versionen unter Ubuntu so eingestellt, dass er die Authentifizierung über das auth_socket-Plugin verwendet. Obwohl dies die Sicherheit erhöht, wird es auch komplizierter, wenn Sie mit externen Programmen, zum Beispiel phpMyAdmin, auf Ihren Datenbankserver zugreifen. Um dieses Problem zu beheben, müssen Sie die Authentifizierungsmethode von auth_socket zu caching_sha2_password oder mysql_native_password ändern.

Ab MySQL-Version 8.0 ist das bevorzugte und standardmäßige Authentifizierungs-Plugin caching_sha2_password. Das Authentifizierungs-Plugin caching_sha2_password bietet eine sicherere Passwortverschlüsselung als das Plugin mysql_native_password.

Um das Authentifizierungs-Plugin zu ändern, melden Sie sich mit folgendem Befehl am MySQL-Prompt an:

$ sudo mysql

Oder,

$ mysql -u root -p

Geben Sie das MySQL-root-Passwort ein, das wir im vorherigen Schritt eingerichtet haben.

Führen Sie den folgenden Befehl an der MySQL-Eingabeaufforderung aus, um die aktuelle Authentifizierungsmethode für alle MySQL-Benutzerkonten zu finden:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Beispielausgabe:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$=s%UO"�o@>.@320vBX9Agb0kvpTpyiqIsh6XlD0UqNXLcl3KLzp46.Le. | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             |                                                                        | auth_socket           | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

Finden Sie die aktuelle Authentifizierungsmethode für alle MySQL-Benutzerkonten in Ubuntu

Wie Sie sehen, verwendet der MySQL-Root-Benutzer das auth_socket-Plugin zur Authentifizierung.

Um das auth_socket-Plugin auf caching_sha2_password zu ändern, führen Sie den folgenden Befehl an der MySQL-Eingabeaufforderung aus. Wenn Sie das VALIDATE PASSWORD-Plugin aktiviert haben, stellen Sie sicher, dass Sie ein starkes Passwort gemäß den aktuellen Richtlinienanforderungen verwendet haben. Ein starkes Passwort sollte aus mindestens 8 Zeichen bestehen, einschließlich eines Großbuchstabens, eines Kleinbuchstabens, einer Zahl und eines Sonderzeichens.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';

Ersetzen Sie Password123#@! im obigen Befehl durch ein starkes und einzigartiges Passwort Ihrer Wahl.

Aktualisieren Sie die Änderungen mit dem Befehl:

mysql> FLUSH PRIVILEGES;

Überprüfen Sie nun, ob das aktuelle Authentifizierungs-Plugin mithilfe des Befehls geändert wurde oder nicht:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Beispielausgabe:

Überprüfen Sie das aktuelle Authentifizierungs-Plugin in MySQL

Gut! Jetzt kann der MySQL-root-Benutzer sich mit einem Passwort authentifizieren, um auf die MySQL-Shell zuzugreifen.

Beenden des MySQL-Prompts:

mysql> exit

Hinweis:

Auch wenn das caching_sha2_password-Plugin eine verbesserte sichere Verschlüsselung bietet, gibt es einige Kompatibilitätsprobleme mit vorhandenen MySQL-Installationen. Für Details siehe diesen Link. Wenn Sie auf Kompatibilitätsprobleme stoßen, müssen Sie das mysql_native_password-Plugin als Standard-Authentifizierungs-Plugin einstellen.

Um zum mysql_native_password-Plugin zu wechseln, führen Sie den folgenden Befehl an der MySQL-Eingabeaufforderung aus.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Aktualisieren Sie die Änderungen mit dem Befehl:

mysql> FLUSH PRIVILEGES;

Überprüfen Sie nun erneut, ob die Authentifizierungsmethode geändert wurde oder nicht, indem Sie den Befehl verwenden:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Beispielausgabe:

Finden Sie die aktuelle Authentifizierungsmethode für alle MySQL-Benutzerkonten

Beenden von der MySQL-Eingabeaufforderung:

mysql> exit

3. PHP unter Ubuntu installieren

Um PHP zu installieren, führen Sie aus:

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

Nachdem Sie PHP installiert haben, erstellen Sie eine info.php-Datei im Apache-Root-Dokumentenordner. In der Regel ist der Apache-Root-Dokumentenordner in den meisten Debian-basierten Linux-Distributionen /var/www/html/ oder /var/www/. In Ubuntu 20.04 LTS ist es /var/www/html/.

Lassen Sie uns die Datei info.php im Apache-Stammordner erstellen:

$ sudo vi /var/www/html/info.php

Fügen Sie die folgenden Zeilen hinzu:

<?php
phpinfo();
?>

Drücken Sie die ESC-Taste und geben Sie :wq ein, um die Datei zu speichern und zu beenden. Starten Sie den Apache-Dienst neu, damit die Änderungen wirksam werden.

$ sudo systemctl restart apache2

3.1. PHP testen

Öffnen Sie Ihren Webbrowser und navigieren Sie zu http://IP-address/info.php URL.

Sie werden die PHP-Informationen wie Version, Server-API und die Details aller aktivierten PHP-Plugins sehen.

PHP-Testseite

Normalerweise, wenn ein Benutzer ein Verzeichnis vom Webserver anfordert, wird Apache zuerst nach einer Datei mit dem Namen index.html suchen. Wenn Sie möchten, dass Apache stattdessen PHP-Dateien bedient, verschieben Sie index.php an die erste Position in der Datei dir.conf, wie unten gezeigt.

$ sudo vi /etc/apache2/mods-enabled/dir.conf

Hier ist der Inhalt der obigen Datei.

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

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Verschiebe die index.php-Datei an erste Stelle. Sobald du die Änderungen vorgenommen hast, wird deine dir.conf-Datei wie unten aussehen.

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

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Drücken Sie die ESC-Taste und geben Sie :wq ein, um die Datei zu speichern und zu schließen. Starten Sie den Apache-Dienst neu, damit die Änderungen wirksam werden.

$ sudo systemctl restart apache2

3.2. PHP-Module installieren

Um die Funktionalität von PHP zu verbessern, können Sie einige zusätzliche PHP-Module installieren.

Um die verfügbaren PHP-Module aufzulisten, führen Sie aus:

$ sudo apt-cache search php- | less

Beispielausgabe:

Liste der verfügbaren PHP-Module in Ubuntu

Verwenden Sie die Pfeiltasten, um durch das Ergebnis zu navigieren. Um zu beenden, geben Sie q ein.

Um die Details eines bestimmten PHP-Moduls zu finden, zum Beispiel php-gd, führen Sie Folgendes aus:

$ sudo apt-cache show php-gd

Um ein PHP-Modul zu installieren, führen Sie aus:

$ sudo apt install php-gd

Vergessen Sie nicht, den Apache-Dienst nach der Installation eines PHP-Moduls neu zu starten. Um zu überprüfen, ob das Modul geladen ist oder nicht, öffnen Sie die Datei info.php in Ihrem Browser und prüfen Sie, ob es vorhanden ist.

Herzlichen Glückwunsch! Wie Sie sehen können, ist es sehr einfach, Apache, MySQL, PHP (LAMP-Stack) auf Ubuntu 20.04 LTS zu installieren. Sie können nun damit beginnen, Ihre Websites mit dem LAMP-Stack zu hosten.

Als Nächstes lesen:

  • Installiere phpMyAdmin mit LAMP-Stack auf Ubuntu 20.04 LTS

Verwandte Lektüre:

  • Installieren Sie Nginx, MySQL, PHP (LEMP-Stack) auf Ubuntu 20.04 LTS
  • Apache, MariaDB, PHP (LAMP-Stack) in CentOS 8 installieren