LAMP-Stack ist eine beliebte Open-Source-Webentwicklungsplattform, die zum Ausführen und Bereitstellen dynamischer Websites und webbasierter Anwendungen verwendet werden kann. Typischerweise besteht ein LAMP-Stack aus Apache-Webserver, MariaDB/MySQL-Datenbanken, PHP/Python/Perl-Programmiersprachen. LAMP ist die Abkürzung für Linux, Apache, MariaDB/MYSQL, PHP/Python/Perl. Diese Schritt-für-Schritt-Anleitung beschreibt, wie Sie Apache, MySQL, PHP (LAMP-Stack) auf der Ubuntu 20.04 LTS Server Edition installieren.
Installieren Sie Apache, MySQL, PHP (LAMP Stack) auf Ubuntu 20.04 LTS
Für dieses Tutorial verwenden wir das folgende Ubuntu-System.
- Betriebssystem :Ubuntu 20.04 LTS Server Edition
- IP-Adresse :192.168.225.52/24
Lassen Sie uns zuerst den Apache-Server installieren.
1. Installieren Sie den Apache-Webserver in Ubuntu
Aktualisieren Sie zunächst den Ubuntu-Server mit den folgenden 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.
Herzliche Glückwünsche! Der Apache-Dienst ist in Betrieb!
1.1. Apache-Webserver über UFW-Firewall zulassen
UFW , steht für U nkompliziert F irew all, ist ein Programm zur Verwaltung einer Netfilter-Firewall, das einfach zu bedienen ist. UFW ist standardmäßig in allen Ubuntu-Versionen verfügbar.
Standardmäßig kann von Remote-Systemen nicht auf den Apache-Webbrowser zugegriffen werden, wenn Sie die UFW-Firewall in Ubuntu 20.04 LTS aktiviert haben. Sie müssen http
zulassen und https
Ports, 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
Beispielausgabe:
Available applications: Apache Apache Full Apache Secure OpenSSH
Wie Sie sehen können, haben Apache- und OpenSSH-Anwendungen UFW-Profile installiert. Sie können Informationen zu jedem Profil und den darin enthaltenen Regeln mit ufw app info "Profile Name"
auflisten Befehl.
Lassen Sie uns einen Blick auf “Apache Full”
werfen Profil mit dem Befehl:
$ 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, "Apache Full"
-Profil enthält die Regeln zum Aktivieren des Datenverkehrs zu den Ports 80
und 443
.
Führen Sie nun den folgenden Befehl aus, um eingehendes HTTP
zuzulassen und HTTPS
Verkehr für dieses Profil:
$ sudo ufw allow in "Apache Full"
Sie sehen eine Ausgabe wie unten:
Rules updated Rules updated (v6)
Wenn Sie https
nicht zulassen möchten Datenverkehr, sondern nur http
(80) Datenverkehr, Ausführung:
$ sudo ufw app info "Apache"
1.2. Testen Sie den Apache-Webserver
Öffnen Sie nun Ihren Webbrowser und greifen Sie auf die Apache-Testseite zu, indem Sie zu http://localhost/
navigieren oder http://IP-Address/
.
Wenn Sie die unten gezeigte "Apache 2 Ubuntu-Standardseite" sehen, können Sie loslegen. Apache-Server funktioniert!
2. Installieren Sie MySQL in Ubuntu
Um MySQL auf Ubuntu zu installieren, führen Sie Folgendes aus:
$ sudo apt install mysql-server
Überprüfen Sie, ob der MySQL-Dienst ausgeführt wird oder nicht, indem Sie den Befehl verwenden:
$ 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. Richten Sie das Kennwort des Administratorbenutzers (Root) der Datenbank für Mysql
ein
Standardmäßig ist MySQL root
Benutzerkennwort ist leer. Es wird nicht empfohlen, ein leeres Passwort für das Datenbankadministratorkonto zu verwenden. Sie müssen Ihren MySQL-Server sichern, indem Sie das folgende Skript ausführen:
$ sudo mysql_secure_installation
Sie werden gefragt, ob Sie "VALIDATE PASSWORD"
einrichten möchten Komponente oder nicht. Diese Komponente ermöglicht es den Benutzern, sichere Passwörter für Datenbankanmeldeinformationen zu konfigurieren. Wenn aktiviert, überprüft es automatisch die Stärke des Passworts und zwingt die Benutzer, nur die Passwörter festzulegen, die sicher genug sind. Es ist sicher, es deaktiviert zu lassen . Sie müssen jedoch ein sicheres und eindeutiges Kennwort für Datenbankanmeldeinformationen verwenden. Wenn Sie diese Komponente nicht aktivieren möchten, drücken Sie einfach eine beliebige Taste, um den Teil der Kennwortvalidierung zu überspringen und mit den restlichen Schritten fortzufahren.
Geben Sie y
ein wenn Sie VALIDATE PASSWORD
einrichten möchten Komponente:
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 ist , werden Sie aufgefordert, die Ebene der Passwortvalidierung auszuwählen. Die verfügbaren Passwortvalidierungen sind niedrig , mittel und stark . Geben Sie einfach die entsprechende Zahl ein (0 für niedriges, 1 für mittleres und 2 für sicheres Passwort) und drücken Sie die EINGABETASTE.
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 MySQL root
ein Benutzer. Bitte beachten Sie, dass Sie das Passwort für MySQL root
verwenden müssen Benutzer abhängig von der Kennwortrichtlinie, die Sie im vorherigen Schritt ausgewählt haben. Wenn Sie das Plugin nicht aktiviert haben, verwenden Sie einfach ein sicheres und eindeutiges 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, sehen Sie die Passwortstärke (in unserem Fall ist es 100 ). Wenn es für Sie in Ordnung ist, drücken Sie Y, um mit dem bereitgestellten Passwort fortzufahren. Wenn Sie mit der Passwortlänge nicht zufrieden sind, drücken Sie eine beliebige andere Taste und legen Sie ein starkes Passwort fest. Ich bin mit meinem aktuellen Passwort einverstanden, also habe ich y
gewählt .
Geben Sie für die restlichen Fragen einfach y
ein und drücken Sie ENTER
. Dadurch wird der anonyme Benutzer entfernt, die Anmeldung des Root-Benutzers aus der Ferne verweigert 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!
Erledigt! Wir haben MySQL auf root
gesetzt Benutzerkennwort.
2.2. Authentifizierungsmethode für MySQL-Root-Benutzer ändern
Standardmäßig ist der MySQL-Root-Benutzer so eingestellt, dass er sich mit auth_socket
authentifiziert Plugin ab MySQL 5.7 und neueren Versionen auf Ubuntu. Obwohl dies die Sicherheit erhöht, wird es auch komplizierter, wenn Sie mit externen Programmen, z. B. phpMyAdmin, auf Ihren Datenbankserver zugreifen. Um dieses Problem zu beheben, müssen Sie die Authentifizierungsmethode von auth_socket in caching_sha2_password
ändern oder mysql_native_password
.
Ab MySQL 8.0-Version ist das bevorzugte und standardmäßige Authentifizierungs-Plugin caching_sha2_password
. Das caching_sha2_password
Das Authentifizierungs-Plugin bietet eine sicherere Passwortverschlüsselung als das mysql_native_password
Plugin.
Um das Authentifizierungs-Plugin zu ändern, melden Sie sich mit dem Befehl:
bei Ihrer MySQL-Eingabeaufforderung an$ sudo mysql
Oder,
$ mysql -u root -p
Geben Sie das MySQL-root
ein Passwort, 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"�[email protected]>[email protected] | 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)
Wie Sie sehen, verwendet der MySQL-Root-Benutzer auth_socket
Plugin für die Authentifizierung.
Um auth_socket
zu ändern Plugin zu caching_sha2_password
, führen Sie den folgenden Befehl an der MySQL-Eingabeaufforderung aus. Wenn Sie VALIDATE PASSWORD
aktiviert haben vergewissern Sie sich, dass Sie ein sicheres Passwort gemäß den aktuellen Richtlinienanforderungen verwendet haben. Ein starkes Sollte besteht aus mindestens 8 Zeichen, darunter ein Großbuchstabe, ein Kleinbuchstabe, eine Zahl und ein Sonderzeichen.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';
Ersetzen Sie Password123#@!
mit einem starken und eindeutigen Passwort Ihrer Wahl im obigen Befehl.
Aktualisieren Sie die Änderungen mit dem Befehl:
mysql> FLUSH PRIVILEGES;
Überprüfen Sie nun, ob das aktuelle Authentifizierungs-Plugin geändert wurde oder nicht, indem Sie den Befehl verwenden:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Beispielausgabe:
Gut! Nun das MySQL root
Der Benutzer kann sich mit einem Passwort authentifizieren, um auf die MySQL-Shell zuzugreifen.
Beenden Sie die MySQL-Eingabeaufforderung:
mysql> exit
Hinweis:
Obwohl caching_sha2_password
Das Plugin bietet eine verbesserte sichere Verschlüsselung, hat aber einige Kompatibilitätsprobleme mit bestehenden MySQL-Installationen. Einzelheiten finden Sie unter diesem Link . Wenn Sie auf Kompatibilitätsprobleme gestoßen sind, müssen Sie mysql_native_password
festlegen plugin als Standard-Authentifizierungs-Plugin.
Um zu mysql_native_password
zu wechseln plugin, 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:
Beenden Sie die mysql-Eingabeaufforderung:
mysql> exit
3. Installieren Sie PHP in Ubuntu
Um PHP zu installieren, führen Sie Folgendes aus:
$ sudo apt install php libapache2-mod-php php-mysql
Erstellen Sie nach der Installation von PHP info.php
Datei im Apache-Stammdokumentordner. Normalerweise ist der Apache-Stammdokumentordner /var/www/html/
oder /var/www/
in den meisten Debian-basierten Linux-Distributionen. In Ubuntu 20.04 LTS ist es /var/www/html/
.
Lassen Sie uns info.php
erstellen Datei im Apache-Root-Ordner:
$ sudo vi /var/www/html/info.php
Fügen Sie die folgenden Zeilen hinzu:
<?php phpinfo(); ?>
Drücken Sie ESC
drücken und :wq
eingeben um die Datei zu speichern und zu beenden. Starten Sie den Apache-Dienst neu, um die Änderungen zu übernehmen.
$ sudo systemctl restart apache2
3.1. PHP testen
Öffnen Sie Ihren Webbrowser und navigieren Sie zu http://IP-address/info.php
URL.
Sie sehen die PHP-Informationen wie Version, Server-API und die Details aller aktivierten PHP-Plugins.
Wenn ein Benutzer ein Verzeichnis vom Webserver anfordert, sucht Apache normalerweise zuerst nach einer Datei mit dem Namen index.html
. Wenn Sie Apache ändern möchten, um PHP-Dateien statt anderer bereitzustellen, verschieben Sie index.php
an die erste Position in der dir.conf
Datei 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
Verschieben Sie die index.php
Datei zuerst . Nachdem Sie die Änderungen vorgenommen haben, wird Ihre dir.conf
Datei wird 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 ESC
drücken und :wq
eingeben um die Datei zu speichern und zu schließen. Starten Sie den Apache-Dienst neu, um die Änderungen zu übernehmen.
$ 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 Folgendes aus:
$ sudo apt-cache search php- | less
Beispielausgabe:
Verwenden Sie die Pfeiltasten, um durch das Ergebnis zu gehen. Geben Sie zum Beenden q
ein .
Um die Details eines bestimmten PHP-Moduls zu finden, zum Beispiel php-gd , ausführen:
$ sudo apt-cache show php-gd
Um ein PHP-Modul zu installieren, führen Sie Folgendes 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 sie vorhanden ist.
Herzliche Glückwünsche! Wie Sie sehen können, ist es sehr einfach, Apache, mysql, php (LAMP-Stack) auf Ubuntu 20.04 LTS zu installieren. Sie können jetzt damit beginnen, Ihre Websites mit dem LAMP-Stack zu hosten.
Weiterlesen:
- Installieren Sie phpMyAdmin mit LAMP Stack auf Ubuntu 20.04 LTS
Verwandte Lektüre:
- Installieren Sie Nginx, MySQL, PHP (LEMP Stack) auf Ubuntu 20.04 LTS
- Installieren Sie Apache, MariaDB, PHP (LAMP Stack) in CentOS 8