One place for hosting & domains

      Stacks

      Installieren eines Linux-, Apache-, MariaDB-, PHP- (LAMP-) Stacks unter CentOS 8


      Einführung

      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.

      Voraussetzungen

      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.

      Schritt 1 – Installieren des Apache-Webservers

      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:

      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:

      Output

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

      Geben Sie die Adresse ein, die Sie in Ihrem Webbrowser erhalten, und Sie werden zur Standard-Startseite von Apache weitergeleitet:

      Standard Apache-Seite CentOS 8

      Wenn Sie diese Seite sehen, ist Ihr Webserver korrekt installiert.

      Schritt 2 — Installieren von MariaDB

      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:

      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:

      Output

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

      Beenden Sie anschließend die MariaDB Shell:

      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:

      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:

      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:

      Zu diesem Zeitpunkt ist Ihr Datenbanksystem eingerichtet und Sie können zur Installation von PHP, der letzten Komponente des LAMP-Stacks, übergehen.

      Schritt 3 — Installieren von PHP

      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.

      Schritt 4 – Testen von PHP mit Apache

      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:

      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:

      /var/www/html/info.php

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

      CentOS 8 Standard-PHP-Info Apache

      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.

      Schritt 5 — Testen der Datenbankverbindung von PHP (optional)

      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:

      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:

      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:

      /usr/share/nginx/html/todo_list.php

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

      Beispiel PHP To-Do-List

      Das bedeutet, dass Ihre PHP-Umgebung zur Verfügung steht, um mit Ihrem MariaDB-Server zu interagieren.

      Zusammenfassung

      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.



      Source link

      Installation des Linux, Apache, MySQL, PHP (LAMP) Stacks auf Ubuntu 18.04


      Eine frühere Version dieses Tutorials wurde von Brennan Bearnes geschrieben.

      Einführung

      Ein „LAMP“-Stack ist eine aus Open-Source-Software bestehende Gruppe, die normalerweise zusammenhängend installiert wird, damit ein Server dynamische Websites und Web-Apps hosten kann. Dieser Begriff ist ein Acronym, das für das Linux Betriebssystem mit dem Apache Webserver steht. Die Daten dieser Site werden in einer MySQL-Datenbank gespeichert, und der dynamische Inhalt wird von PHP verarbeitet.

      In diesem Leitfaden installieren wir einen LAMP Stack auf einem Ubuntu 18.04 Server.

      Voraussetzungen

      Um dieses Tutorial fertigzustellen, benötigen Sie einen Ubuntu 18.04 Server mit einem sudo-aktivierten Benutzerkonto ohne Rootberechtigung und einer einfachen Firewall. Das kann mit unserem Leitfaden für das erstmalige Server-Setup für Ubuntu 18.04 konfiguriert werden.

      Schritt 1 — Installation von Apache und Aktualisierung der Firewall

      Der Apache-Webserver gehört zu den weltweit beliebtesten Webservern. Er ist umfassend dokumentiert und wird seit Beginn des Internets weitläufig eingesetzt, was ihn zur beliebten Standardoption für das Hosting einer Website macht.

      Installieren Sie Apache mit Ubuntus Paketmanager apt:

      • sudo apt update
      • sudo apt install apache2

      Da es sich hierbei um einen sudo-Befehl handelt, werden diese Operationen mit Rootberechtigungen ausgeführt. Sie werden aufgefordert, Ihre reguläres Benutzerpasswort einzugeben, um sich zu verifizieren.

      Nach Eingabe des Passworts teilt Ihnen apt mit, welche Pakete installiert werden und wie viel zusätzlichen Festplattenplatz das erfordern wird. Drücken Sie auf Y und dann die ENTER, um mit der Installation zu beginnen.

      Stellen Sie die Firewall so ein, dass Webverkehr gestattet ist

      Vorausgesetzt, dass Sie die Ersteinrichtung des Servers korrekt vorgenommen und die UFW-Firewall aktiviert haben, müssen Sie als nächstes sichergehen, dass Ihre Firewall HTTP- und HTTPS-Verkehr gestattet. Sie können auch prüfen, ob UFW ein Anwendungsprofil für Apache aufweist:

      Output

      Available applications: Apache Apache Full Apache Secure OpenSSH

      Wenn Sie sich das gesamte Apache Full Profil ansehen, sollte es zeigen, dass es den Verkehr zu den Ports 80 und 443 gestattet:

      • sudo ufw app info "Apache Full"

      Output

      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

      Aktivieren Sie eingehenden HTTP- und HTTPS-Verkehr für dieses Profil:

      • sudo ufw allow in "Apache Full"

      Sie können eine Stichprobenkontrolle vornehmen, um zu verifizieren, dass alles wie geplant vorgenommen wurde, indem Sie die öffentliche IP-Adresse Ihres Servers im Web-Browser aufrufen (siehe Anmerkung unter der nächsten Rubrik, um zu erfahren, wie die öffentliche IP-Adresse lautet, sofern Sie diese Informationen noch nicht haben):

      http://your_server_ip
      

      Es wird die Standard-Webseite für Ubuntu 18.04 Apache angezeigt, die Informations- und Testzwecken dient. Sie sollte ungefähr wie folgt aussehen:

      Ubuntu 18.04 Apache Standard

      Wenn Sie diese Seite sehen, ist Ihr Webserver korrekt installiert und über Ihre Firewall zugänglich.

      So finden Sie die öffentliche IP-Adresse Ihres Servers

      Wenn Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, haben Sie mehrere Möglichkeiten, sie zu finden. Es ist normalerweise die Adresse, die Sie zur Verbindung mit Ihrem Server über SSH verwenden.

      Dies kann auf unterschiedliche Weise über die Befehlszeile erfolgen. Sie können zunächst die iproute2-Tools verwenden, um Ihre IP-Adresse zu erhalten, indem Sie Folgendes eingeben:

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

      Damit erhalten Sie zwei oder drei Zeilen. Das sind alle korrekte Adressen, aber Ihr Computer kann ggf. nur eine davon verwenden. Probieren Sie daher jede aus.

      Eine alternative Methode ist die Verwendung des curl-Utilitys, um einen Dritten zu kontaktieren, der Ihnen sagt, wie ihm Ihr Server angezeigt wird. Dazu wird ein bestimmter Server nach Ihrer IP-Adresse gefragt:

      • sudo apt install curl
      • curl http://icanhazip.com

      Unabhängig davon, wie Sie Ihre IP-Adresse in Erfahrung bringen, geben Sie sie in die Adressleiste Ihres Webbrowsers ein, um die Standard-Apache-Seite zu sehen.

      Schritt 2 — Installation von MySQL

      Nachdem jetzt Ihr Webserver läuft, müssen Sie MySQL installieren. MySQL ist ein Datenbank-Managementsystem. Damit wird im Grunde genommen der Zugriff auf Datenbanken organisiert und bereitgestellt, in denen Ihre Website Informationen speichern kann.

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

      • sudo apt install mysql-server

      Anmerkung: In diesem Fall müssen Sie sudo apt update nicht vor dem Befehl ausführen. Sie haben es gerade erst oben ausgeführt, um Apache zu installieren. Der Paketindex auf Ihrem Computer sollte bereits aktualisiert worden sein.

      Auch mit diesem Befehl zeigen Sie eine Liste der Pakete an, die installiert werden, sowie den dafür benötigten Speicherplatz. Geben Sie Y ein, um fortzufahren.

      Wenn die Installation abgeschlossen ist, führen Sie ein einfaches Sicherheitsskript aus, das in MySQL vorinstalliert ist, um einige gefährliche Standardeinstellungen zu entfernen und den Zugriff auf Ihr Datenbanksystem zu sperren. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:

      • sudo mysql_secure_installation

      Sie werden gefragt, ob Sie das VALIDATE PASSWORD PLUGIN konfigurieren möchten.

      Anmerkung: Die Aktivierung dieser Funktion bleibt Ihnen überlassen. Sollten Sie sie aktivieren, werden Passwörter, die nicht den angegebenen Kriterien entsprechen, als Fehler von MySQL abgelehnt. Das verursacht Probleme, wenn Sie ein schwaches Passwort mit Software verwenden, die automatisch die MySQL-Benutzerinformationen konfiguriert, wie die Ubuntu-Pakete für phpMyAdmin. Sie können die Validierung deaktiviert lassen, aber sollten immer starke, eindeutige Passwörter für die Datenbankinformationen verwenden.

      Geben Sie Y für Ja oder etwas Anderes ein, um ohne Aktivierung weiterzumachen.

      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 dazu aufgefordert, eine Stufe der Passwortvalidierung zu wählen. Denken Sie daran, dass die Auswahl von 2 als stärkste Validierungsstufe Fehler ergibt, wenn Sie ein Passwort ohne Zahlen, Buchstaben, Klein- oder Großbuchstaben und Sonderzeichen einrichten oder eines aus geläufigen Wörtern aus einem Wörterbuch.

      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 sich für die Einrichtung des VALIDATE PASSWORD PLUGIN entschieden haben, wird der Server Sie als nächstes auffordern, ein Passwort für den MySQL root-Benutzer zu wählen und zu bestätigen. Dies ist ein Administratorkonto in MySQL mit mehr Privilegien. Sie können das mit dem root-Konto für den Server vergleichen (obwohl das Konto, das Sie gerade konfigurieren, ein MySQL-spezifisches Konto ist). Vergewissern Sie sich, dass es ein starkes, eindeutiges Passwort ist, und lassen Sie es nicht einfach leer.

      Wenn Sie Passwortvalidierung aktiviert haben, wird Ihnen die Passwortstärke des soeben eingegebenen Root-Passworts gezeigt und Sie werden gefragt, ob Sie das Passwort ändern möchten. Wenn Sie mit Ihrem aktuellen Passwort zufrieden sind, geben Sie in der Eingabeaufforderung N für „nein“ ein:

      Using existing password for root.
      
      Estimated strength of the password: 100
      Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
      

      Drücken Sie bei den restlichen Fragen auf Y und bei jeder Eingabeaufforderung die ENTER. Damit werden einige anonyme Benutzer und die Testdatenbank entfernt, ferngesteuerte Root-Logins deaktiviert und diese neuen Regeln geladen, damit MySQL die Änderungen, die Sie gerade vorgenommen haben, unverzüglich anwendet.

      Beachten Sie, dass in Ubuntu-Systemen, die MySQL 5.7 (oder später) ausführen, der MySQL root-Benutzer statt über das Passwort standardmäßig mit dem Plugin auth_socket authentifiziert wird. Dadurch entsteht in vielen Fällen mehr Sicherheit und Benutzerfreundlichkeit, kann aber auch Dinge komplizieren, wenn Sie einem externen Programm (z. B. phpMyAdmin) Zugriff auf den Benutzer erteilen müssen.

      Wenn Sie zur Verbindung mit MySQL als root lieber ein Passwort verwenden, müssen Sie das Authentifizierungsverfahren von auth_socket in mysql_native_password ändern. Öffnen Sie dazu die MySQL -Eingabeaufforderung auf Ihrem Terminal:

      Prüfen Sie dann mit folgendem Befehl, welches Authentifizierungsverfahren Ihre MySQL -Benutzerkonten verwenden:

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

      Output

      +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)

      In diesem Beispiel können Sie sehen, dass der root-Benutzer über das auth_socket-Plugin authentifiziert wird. Um das root-Konto zur Authentifizierung mit einem Passwort konfigurieren zu können, führen Sie den folgenden ALTER USER-Befehl aus. Denken Sie daran, password in ein starkes Passwort Ihrer Wahl zu ändern:

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

      Führen Sie dann FLUSH PRIVILEGES aus, die den Server anweisen, die Berechtigungstabellen neu zu laden und die Änderungen zu übernehmen:

      Prüfen Sie die von Ihren Benutzern verwendeten Authentifizierungsmethoden erneut, um zu bestätigen, dass root nicht mehr über das auth_socket-Plugin authentifiziert wird:

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

      Output

      +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)

      In diesem Beispiel können Sie sehen, dass der MySQL root-Benutzer jetzt mit einem Passwort authentifiziert wird. Nach der Bestätigung auf Ihrem eigenen Server können Sie die MySQL-Shell beenden:

      Jetzt ist Ihr Datenbanksystem eingerichtet und Sie können PHP installieren, den letzten Bestandteil des LAMP-Stacks.

      Schritt 3 — Installation von PHP

      PHP ist der Bestandteil Ihres Setups, der Code verarbeitet, um dynamischen Inhalt anzuzeigen. Es kann Skripte ausführen, zwecks Datenabruf Verbindungen zu Ihren MySQL-Datenbanken herstellen und den verarbeiteten Inhalt zur Ansicht auf Ihren Webserver übertragen.

      Verwenden Sie erneut das apt-System, um PHP zu installieren. Setzen Sie hier auch ein paar Hilfspakete ein, damit PHP-Code auf dem Apache-Server laufen und mit Ihrer MySQL-Datenbank kommunizieren kann:

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

      Damit sollte PHP ohne Probleme installiert werden. Wir werden das gleich testen.

      In den meisten Fällen sollten Sie die Art ändern, wie Apache Dateien überliefert, wenn ein Verzeichnis angefordert wird. Wenn derzeit ein Benutzer ein Verzeichnis vom Server anfordert, sucht Apache zunächst nach der Datei index.html. Wir möchten dem Webserver mitteilen, PHP-Dateien bevorzugt anzufordern. Daher sollte Apache erst nach der Datei index.php suchen.

      Geben Sie dazu diesen Befehl ein, um die Datei dir.conf in einem Texteditor mit Rootberechtigung zu öffnen:

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

      Sie wird ungefähr so aussehen:

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

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

      Verschieben Sie die PHP-Indexdatei (oben hervorgehoben) auf die erste Position nach der DirectoryIndex-Spezifikation, wie folgt:

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

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

      Speichern und schließen Sie dann die Datei durch Drücken von CTRL+X. Bestätigen Sie das Speichern, indem Sie Y eingeben und dann mit der ENTER den Dateispeicherort verifizieren.

      Starten Sie daran anschließend den Apache-Webserver neu, damit Ihre Änderungen erkannt werden. Geben Sie dazu Folgendes ein:

      • sudo systemctl restart apache2

      Sie können auch mit systemctl den Status des apache2-Dienstes prüfen:

      • sudo systemctl status apache2

      Sample Output

      ● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Tue 2018-04-23 14:28:43 EDT; 45s ago Docs: man:systemd-sysv-generator(8) Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) Tasks: 6 (limit: 512) CGroup: /system.slice/apache2.service ├─13623 /usr/sbin/apache2 -k start ├─13626 /usr/sbin/apache2 -k start ├─13627 /usr/sbin/apache2 -k start ├─13628 /usr/sbin/apache2 -k start ├─13629 /usr/sbin/apache2 -k start └─13630 /usr/sbin/apache2 -k start

      Drücken Sie Q, um diese Statusausgabe zu beenden.

      Um die Funktionalität von PHP zu verbessern, haben Sie die Möglichkeit, zusätzliche Module zu installieren. Um die verfügbaren Optionen für PHP-Module und Bibliotheken zu sehen, sollten Sie die Ergebnisse der apt Suche in less einspeisen, einem Pager, mit dem Sie durch die Ausgabe anderer Befehle scrollen können:

      Verwenden Sie die Pfeiltasten, um nach oben und unten zu scrollen und drücken Sie zum Beenden auf Q.

      Die Ergebnisse sind alle optionalen Komponenten, die Sie installieren können. Sie erhalten eine kurze Beschreibung jeder Komponente:

      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 Funktion der einzelnen Module zu erfahren, können Sie im Internet nach weiteren Informationen suchen. Sie können sich auch die lange Beschreibung des Pakets ansehen, indem Sie Folgendes eingeben:

      Sie erhalten zahlreiche Ausgaben und ein Feld Description mit längeren Erklärungen zur Funktionalität, die das jeweilige Modul bereitstellt.

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

      Neben einer großen Menge weiterer Informationen finden Sie etwas, das ungefähr so aussieht:

      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 Ihren Recherchen entscheiden, ein Paket zu installieren, können Sie dies mit dem apt install-Befehl tun, wie Sie es bereits für die andere Software getan haben.

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

      Wenn Sie mehr als ein Modul installieren möchten, können Sie die durch ein Leerzeichen getrennten Module nach dem apt install-Befehl auflisten, wie zum Beispiel:

      • sudo apt install package1 package2 ...

      Jetzt ist Ihr LAMP-Stack installiert und konfiguriert. Bevor Sie etwas Anderes tun, empfehlen wir, dass Sie einen virtuellen Apache Host einrichten, wo Sie die Konfigurationsinformationen Ihres Servers speichern können.

      Schritt 4 — Einrichten eines virtuellen Hosts (Empfohlen)

      Wenn Sie den Apache-Webserver verwenden, können Sie virtuelle Hosts _(ähnlich wie Server Blocks in Nginx) verwenden, um Konfigurationsinformationen mit einzuschließen und mehr als eine Domäne auf einem einzigen Server zu hosten. Wir richten eine Domäne namens **yourdomain ein, aber Sie sollten **diesen Namen durch Ihren eigenen Domänenamen ersetzen. Um mehr über die Einrichtung eines Domänenamens mit DigitalOcean zu erfahren, lesen Sie unsere Einführung zu DigitalOcean DNS.

      Apache auf Ubuntu 18.04 hat einen Server-Block, der standardmäßig aktiviert und so konfiguriert ist, dass er Dokumente aus dem /var/www/html-Verzeichnis bereitstellt. Das eignet sich gut für eine Site, kann aber umständlich werden, wenn Sie mehrere Sites hosten. Statt /var/www/html zu ändern, erstellen wir eine Verzeichnisstruktur innerhalb /var/www für unsere your_domain und lassen dabei /var/www/html als Standardverzeichnis, das bereitgestellt wird, wenn eine Client-Anfrage keine übereinstimmenden Sites ergibt.

      Erstellen Sie das Verzeichnis für your_domain wie folgt:

      sudo mkdir /var/www/your_domain
      

      Weisen Sie als Nächstes das Eigentum am Verzeichnis mit der $USER Umgebungsvariablen zu:

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

      Die Berechtigungen Ihrer Web-Roots sollten korrekt sein, wenn Sie Ihren unmask-Wert nicht geändert haben, aber Sie können das durch die folgende Eingabe prüfen:

      • sudo chmod -R 755 /var/www/your_domain

      Erstellen Sie als Nächstes eine index.html Beispielsseite durch die Verwendung von nano oder Ihrem bevorzugten Texteditor:

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

      Fügen Sie dann das folgende HTML-Beispiel hinzu:

      /var/www/your_domain/index.html

      <html>
          <head>
              <title>Welcome to Your_domain!</title>
          </head>
          <body>
              <h1>Success!  The your_domain server block is working!</h1>
          </body>
      </html>
      

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

      Sie müssen eine virtuelle Host-Datei mit den richtigen Richtlinien erstellen, damit Apache diesen Inhalt bereitstellen kann. Statt die Standardkonfigurationsdatei direkt unter /etc/apache2/sites-available/000-default.conf zu ändern, erstellen wir eine neue in /etc/apache2/sites-available/your_domain.conf:

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

      Fügen Sie den folgenden Konfigurationsblock ein, der dem Standard ähnlich ist, aber für unser neues Verzeichnis und den Domänenamen aktualisiert wurde:

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

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

      Sie werden feststellen, dass wir DocumentRoot auf unser neues Verzeichnis und ServerAdmin auf eine E-Mail aktualisiert haben, auf die der Site-Administator von your_domain zugreifen kann. Wir haben auch zwei Richtlinien hinzugefügt: ServerName, der die Basisdomäne festlegt, die zu dieser virtuellen Host-Definition passen sollte, und ServerAlias, der weitere Namen definiert, die wie der Basisname passen sollten.

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

      Aktivieren wir jetzt die Datei über das Tool a2ensite:

      • sudo a2ensite your_domain.conf

      Deaktivieren Sie die unter 000-default.conf definierte Standard-Site:

      • sudo a2dissite 000-default.conf

      Als Nächstes testen wir auf Konfigurationsfehler:

      • sudo apache2ctl configtest

      Sie sollten die folgende Ausgabe sehen:

      Output

      Syntax OK

      Starten Sie Apache neu, um Ihre Änderungen zu implementieren.

      • sudo systemctl restart apache2

      Apache sollte jetzt für Ihren Domänenamen eingerichtet sein. Sie können dies testen, indem Sie zu http://your_domain navigieren, wo Sie etwas Ähnliches wie dies sehen sollten:

      Beispiel für einen virtuellen Apache Host

      Damit ist Ihr virtueller Host vollständig eingerichtet. Bevor Sie allerdings mehr Änderungen vornehmen oder eine Anwendung ensetzen, wäre es hilfreich, Ihre PHP-Konfiguration proaktiv zu testen, für den Fall, dass es Probleme gibt, die behoben werden müssen.

      Schritt 5 — Test der PHP-Verarbeitung auf Ihrem Webserver

      Um die für PHP korrekte Systemkonfiguration zu testen, erstellen Sie ein sehr einfaches PHP-Skript namens info.php. Damit Apache diese Datei finden und sie korrekt bereitstellen kann, muss sie in Ihrem Web-Root-Verzeichnis gespeichert sein.

      Erstellen Sie die Datei im zuvor erstellten Web-Root-Verzeichnis, indem Sie Folgendes ausführen:

      • sudo nano /var/www/your_domain/info.php

      Damit wird eine leere Datei geöffnet. Fügen Sie der Datei den folgenden Text, d. h. den gültigen PHP-Code, hinzu:

      info.php

      <?php
      phpinfo();
      ?>
      

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

      Jetzt können Sie testen, ob Ihr Webserver den Inhalt korrekt anzeigen kann, der von diesem PHP-Skript generiert wurde. Rufen Sie dazu diese Seite in Ihrem Web-Browser auf. Sie benötigen erneut die öffentliche IP-Adresse des Servers.

      Besuchen Sie dazu folgende Adresse:

      http://your_domain/info.php
      

      Sie sollten auf einer Seite landen, die ungefähr so aussieht:

      Ubuntu 18.04 Standard PHP Info

      Diese Seite stellt einige grundlegende Informationen über den Server aus der Sicht von PHP bereit. Sie ist zum Debuggen nützlich und um sicherzustellen, dass Ihre Einstellungen korrekt angewendet werden.

      Wenn Sie diese Seite in Ihrem Browser sehen können, funktioniert Ihr PHP wie geplant.

      Nach diesem Test sollten Sie die Datei entfernen, weil sie unberechtigten Benutzer Informationen über Ihren Server anzeigen könnte. Führen Sie dazu folgenden Befehl aus:

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

      Sie können diese Seite immer wieder neu erstellen, wenn Sie später auf die Informationen zugreifen müssen.

      Zusammenfassung

      Jetzt haben Sie einen LAMP-Stack installiert und verfügen über viele Möglichkeiten für die nächsten Schritte. Sie haben kurz gesagt eine Plattform installiert, die es Ihnen ermöglicht, die meisten Arten von Websites und Web-Software auf Ihrem Server zu installieren.

      Im nächsten Schritt sollten Sie sicherstellen, dass Verbindungen zu Ihrem Webserver gesichert sind, indem Sie sie über HTTPS bereitstellen. Die einfachste Möglichkeit ist die Verwendung von Let’s Encrypt, um Ihre Website mit einem kostenlosen TLS/SSL-Zertifikat zu sichern.

      Andere gängige Optionen sind:



      Source link