Tutorial: Installieren eines LAMP-Webservers auf Amazon Linux 2 - Amazon Elastic Compute Cloud

Tutorial: Installieren eines LAMP-Webservers auf Amazon Linux 2

Die folgenden Verfahren helfen Ihnen beim Installieren eines Apache-Webservers mit PHP- und MariaDB-Unterstützung (MariaDB ist eine von der Community entwickelte Fork von MySQL) auf Ihrer Amazon Linux 2-Instance (manchmal auch als LAMP-Webserver oder LAMP-Stack bezeichnet). Sie können diesen Server dazu verwenden, eine statische Website zu hosten oder eine dynamische PHP-Anwendung bereitzustellen, die Informationen aus einer Datenbank liest und in diese schreibt.

Wichtig

Weitere Informationen zur Einrichtung eines LAMP-Webservers auf Amazon Linux AMI finden Sie unter Tutorial: Installieren eines LAMP-Webservers mit dem Amazon Linux AMI.

Dieses Tutorial funktioniert nicht, wenn Sie versuchen, einen LAMP-Webserver auf einer Ubuntu- oder Red Hat Enterprise Linux-Instance einzurichten. Weitere Informationen zu anderen Verteilungen finden Sie in der jeweiligen Dokumentation. Weitere Informationen über LAMP-Webserver auf Ubuntu finden Sie in der Ubuntu-Community-Dokumentation unter dem Thema ApacheMySQLPHP.

Option: Abschließen dieses Tutorials mit Automation

Um dieses Tutorial mit AWS Systems Manager Automation anstelle der folgenden Aufgaben abzuschließen, führen Sie das Automation-Dokument AWSDocs-InstallALAMPServer-AL2 aus.

Schritt 1: Vorbereiten des LAMP-Servers

Voraussetzungen

In diesem Tutorial wird davon ausgegangen, dass Sie bereits mit Amazon Linux 2 eine neue Instance mit einem öffentlichen DNS-Namen gestartet haben, die über das Internet erreichbar ist. Weitere Informationen finden Sie unter Schritt 1: Starten einer Instance. Außerdem müssen Sie Ihre Sicherheitsgruppe so konfiguriert haben, dass Verbindungen über SSH (Port 22), HTTP (Port 80) und HTTPS (Port 443) erlaubt sind. Weitere Informationen zu diesen Voraussetzungen finden Sie unter Autorisieren von eingehendem Datenverkehr für Linux-Instances.

Anmerkung

Bei der folgenden Prozedur wird die neueste verfügbare PHP-Version, derzeit PHP 7.2, auf Amazon Linux 2 installiert. Falls Sie andere PHP-Anwendungen als die in diesem Tutorial beschriebenen verwenden möchten, prüfen Sie ihre Kompatibilität mit PHP 7.2.

Vorbereiten des LAMP-Servers

  1. Verbinden Sie sich mit der Instance.

  2. Um sicherzustellen, dass alle Ihre Softwarepakete aktuell sind, führen Sie ein schnelles Softwareupdate auf Ihrer Instance aus. Dieser Vorgang kann einige Minuten dauern. Es ist jedoch wichtig, sicherzustellen, dass Sie über die aktuellen Sicherheitsaktualisierungen und Fehlerbehebungen verfügen.

    Mit der Option -y werden die Updates installiert, ohne um Bestätigung zu bitten. Wenn Sie die Aktualisierungen vor der Installation überprüfen möchten, können Sie diese Option auslassen.

    [ec2-user ~]$ sudo yum update -y
  3. Installieren Sie die lamp-mariadb10.2-php7.2- und php7.2 Amazon Linux Extras-Repositorys, um die aktuellen Versionen der LAMP MariaDB- und PHP-Pakete für Amazon Linux 2 zu erhalten.

    [ec2-user ~]$ sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
    Anmerkung

    Wenn die Fehlermeldung sudo: amazon-linux-extras: command not found angezeigt wird, wurde Ihre Instance nicht mit einem Amazon Linux 2-AMI; gestartet (möglicherweise verwenden Sie stattdessen das Amazon Linux AMI). Sie können Ihre Version von Amazon Linux mit dem folgenden Befehl anzeigen.

    cat /etc/system-release

    Weitere Informationen zur Einrichtung eines LAMP-Webservers auf Amazon Linux AMI finden Sie unter Tutorial: Installieren eines LAMP-Webservers mit dem Amazon Linux AMI.

  4. Da Ihre Instance jetzt aktuell ist, können Sie die Softwarepakete für den Apache-Webserver, MariaDB und PHP installieren.

    Verwenden Sie den Befehl yum install, um mehrere Softwarepakete und alle damit verbundenen Abhängigkeiten gleichzeitig zu installieren.

    [ec2-user ~]$ sudo yum install -y httpd mariadb-server
    Anmerkung

    Sie können die aktuellen Versionen dieser Pakete mit dem folgenden Befehl anzeigen:

    yum info package_name
  5. Starten Sie den Apache-Webserver.

    [ec2-user ~]$ sudo systemctl start httpd
  6. Konfigurieren Sie den Apache-Webserver mit dem Befehl systemctl so, dass er bei jedem Systemstart startet.

    [ec2-user ~]$ sudo systemctl enable httpd

    Mit folgendem Befehl können Sie prüfen, ob der Befehl httpd ausgeführt wird:

    [ec2-user ~]$ sudo systemctl is-enabled httpd
  7. Fügen Sie eine Sicherheitsregel hinzu, um eingehende HTTP-Verbindungen (Port 80) auf Ihre Instance zuzulassen, wenn Sie dies nicht bereits getan haben. Standardgemäß wurde eine launch-wizard-N Sicherheitsgruppe während der Initialisierung für Ihre Instance konfiguriert. Diese Gruppe enthält eine einzige Regel, um SSH-Verbindungen zuzulassen.

    1. Öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/.

    2. Wählen Sie Instances und wählen Sie Ihre Instance aus.

    3. Wählen Sie unter Security Group (Sicherheitsgruppe) view inbound rules (Regeln für eingehenden Datenverkehr anzeigen) aus.

    4. Sie sollten die folgende Liste von Regeln in Ihrer Standard-Sicherheitsgruppe sehen:

      Security Groups associated with i-1234567890abcdef0 Ports Protocol Source launch-wizard-N 22 tcp 0.0.0.0/0 ✔

      Fügen Sie mithilfe der Verfahren in Hinzufügen von Regeln zu einer Sicherheitsgruppe eine neue eingehende Sicherheitsregel mit den folgenden Werten hinzu:

      • Typ: HTTP

      • Protocol (Protokoll): TCP

      • Portbereich: 80

      • Quelle: Benutzerdefiniert

  8. Testen Sie Ihren Webserver. Geben Sie in einen Web-Browser die öffentliche DNS-Adresse (oder die öffentliche IP-Adresse) Ihrer Instance ein. Wenn keine Inhalte in /var/www/html vorhanden sind, sollte die Testseite von Apache angezeigt werden. Sie können das öffentliche DNS für Ihre Instance mithilfe der Amazon EC2-Konsole abrufen (in der Spalte Public DNS; sollte diese Spalte verborgen sein, klicken Sie auf das Symbol Show/Hide Columns (Spalten ein-/ausblenden) (das getriebeförmige Symbol) und wählen Sie Public DNS (Öffentliches DNS) aus).

    Wenn Sie die Apache-Testseite nicht anzeigen können, prüfen Sie, ob die verwendete Sicherheitsgruppe eine Regel enthält, um den HTTP-Datenverkehr (Port 80) zuzulassen. Weitere Informationen zum Hinzufügen einer HTTP-Regel zu einer Sicherheitsgruppe finden Sie unter Hinzufügen von Regeln zu einer Sicherheitsgruppe.

    Wichtig

    Wenn Sie nicht Amazon Linux verwenden, müssen Sie möglicherweise auch die Firewall auf Ihrer Instance konfigurieren, um diese Verbindungen zu erlauben. Weitere Informationen zum Konfigurieren der Firewall finden Sie in der Dokumentation für Ihre spezifische Verteilung.

    
                        Apache-Testseite

Der Apache-Befehl httpd gilt für Dateien, die in einem Verzeichnis gespeichert sind, das als Apache-Dokumenten-Stammverzeichnis bezeichnet wird. Das Amazon Linux-Apache-Dokumenten-Stammverzeichnis ist /var/www/html, das standardmäßig Eigentum des Stammverzeichnisses ist.

Damit das ec2-user-Konto Dateien in diesem Verzeichnis bearbeiten kann, müssen Sie die Eigentümerschaft und die Berechtigungen des Verzeichnisses ändern. Es gibt viele Möglichkeiten, um diese Aufgabe zu erfüllen. In diesem Tutorial fügen Sie ec2-user zur apache-Gruppe hinzu, geben der apache-Gruppe Eigentümerschaft über das Verzeichnis /var/www und weisen der Gruppe Schreibberechtigungen zu.

So richten Sie Dateiberechtigungen ein

  1. Fügen Sie Ihren Benutzer (in diesem Fall ec2-user) zu der apache-Gruppe hinzu.

    [ec2-user ~]$ sudo usermod -a -G apache ec2-user
  2. Melden Sie sich ab und anschließend wieder an, um die neue Gruppe auszuwählen, und verifizieren Sie dann Ihre Mitgliedschaft.

    1. Melden Sie sich ab (Sie können den Befehl exit verwenden oder das Terminal-Fenster schließen):

      [ec2-user ~]$ exit
    2. Ihre Mitgliedschaft in der apache-Gruppe zu verifizieren, stellen Sie erneut die Verbindung zu Ihrer Instance her und führen Sie anschließend den folgenden Befehl aus:

      [ec2-user ~]$ groups ec2-user adm wheel apache systemd-journal
  3. Übertragen Sie die Eigentümerschaft der Datei /var/www und ihrer Inhalte auf die apache-Gruppe.

    [ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
  4. Um Schreibberechtigungen für die Gruppe hinzuzufügen und die Gruppen-ID für zukünftige Unterverzeichnisse einzurichten, ändern Sie die Verzeichnisberechtigungen von /var/www und deren Unterverzeichnisse.

    [ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
  5. Um Schreibberechtigungen für die Gruppe hinzuzufügen, ändern Sie die Dateiberechtigungen von /var/www und deren Unterverzeichnisse rekursiv.

    [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;

Jetzt kann ec2-user (und jedes zukünftige Mitglied der apache-Gruppe) im Dokumenten-Stammverzeichnis von Apache Dateien hinzufügen, löschen und bearbeiten. Auf diese Weise können Sie Inhalte hinzufügen, beispielsweise eine statische Website oder eine PHP-Anwendung.

So sichern Sie Ihren Webserver (optional)

Ein Webserver, auf dem HTTP ausgeführt wird, bietet keine Transportsicherheit für die gesendeten oder empfangenen Daten. Wenn Sie über einen Webbrowser Verbindung zu einem HTTP-Server aufnehmen, sind die URLs, die Sie besuchen, die Inhalte von Webseiten, die Sie empfangen, und die Inhalte (einschließlich Passwörtern) aller HTML-Formulare, die Sie übermitteln, überall auf dem Netzwerk-Pfad für Lauscher zugänglich. Die beste Methode, Ihren Webserver abzusichern, besteht darin, Unterstützung für HTTPS (HTTP Secure) zu installieren, wodurch Ihre Daten mit der SSL/TLS-Verschlüsselung geschützt werden.

Weitere Informationen zur Aktivierung von HTTPS auf Ihrem Server finden Sie unter Tutorial: SSL/TLS unter Amazon Linux 2 konfigurieren.

Schritt 2: Testen Ihres Lamp-Servers

Wenn Ihr Server installiert ist und läuft und Ihre Dateiberechtigungen korrekt eingestellt sind, müsste für Ihr ec2-user-Konto die Erstellung einer PHP-Datei im Verzeichnis /var/www/html möglich sein, auf die über das Internet zugegriffen werden kann.

So testen Sie Ihren LAMP-Server

  1. Erstellen Sie eine PHP-Datei im Dokumenten-Stammverzeichnis von Apache.

    [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

    Wenn beim Ausführen dieses Befehls der Fehler „Permission denied“ angezeigt wird, melden Sie sich ab und anschließend wieder an, damit die richtigen Gruppenberechtigungen übernommen werden, die Sie in So richten Sie Dateiberechtigungen ein konfiguriert haben.

  2. Geben Sie in einem Webbrowser die URL der Datei ein, die Sie gerade erstellt haben. Diese URL ist die öffentliche DNS-Adresse Ihrer Instance, gefolgt von einem Schrägstrich und dem Dateinamen. Beispiel:

    http://my.public.dns.amazonaws.com/phpinfo.php

    Die PHP-Informationsseite wird angezeigt:

    Anmerkung

    Wenn diese Seite nicht angezeigt wird, überprüfen Sie, ob die Datei /var/www/html/phpinfo.php im vorherigen Schritt ordnungsgemäß angelegt wurde. Mit dem folgenden Befehl können Sie auch überprüfen, ob alle erforderlichen Pakete installiert wurden.

    [ec2-user ~]$ sudo yum list installed httpd mariadb-server php-mysqlnd

    Wenn eines der erforderlichen Pakete in Ihrem Ergebnis nicht aufgelistet ist, installieren Sie es mit dem Befehl sudo yum install package. Überprüfen Sie außerdem in der Ausgabe des Befehls amazon-linux-extras, ob die php7.2- und lamp-mariadb10.2-php7.2-Extras aktiviert sind.

  3. Löschen Sie die Datei phpinfo.php. Obwohl sie nützliche Informationen enthalten könnte, sollte sie aus Sicherheitsgründen nicht über das Internet übertragen werden.

    [ec2-user ~]$ rm /var/www/html/phpinfo.php

Sie sollten nun über einen voll funktionsfähigen LAMP-Webserver verfügen. Wenn Sie zum Dokumenten-Stammverzeichnis von Apache unter /var/www/html Inhalte hinzufügen, können Sie diese unter der öffentlichen DNS-Adresse für Ihre Instance anzeigen.

Schritt 3: Sichern des Datenbankservers

Die Standardinstallation des MariaDB-Servers verfügt über mehrere Funktionen, die hervorragend zum Testen und für die Entwicklung geeignet sind, aber bei Produktionsservern sollten Sie deaktiviert oder entfernt werden. Mit dem Befehl mysql_secure_installation rufen Sie eine Anleitung dazu auf, wie Sie ein Stammpasswort einrichten und die unsicheren Funktionen aus Ihrer Installation entfernen. Auch wenn Sie nicht vorhaben, den MariaDB-Server zu verwenden, empfehlen wir Ihnen die Durchführung dieses Verfahrens.

Sichern des MariaDB-Servers

  1. Starten Sie den MariaDB-Server.

    [ec2-user ~]$ sudo systemctl start mariadb
  2. Führen Sie mysql_secure_installation.

    [ec2-user ~]$ sudo mysql_secure_installation
    1. Geben Sie das Passwort für das Stammkonto ein, wenn Sie dazu aufgefordert werden.

      1. Geben Sie das aktuelle Stammpasswort ein. Standardmäßig ist für das Stammkonto kein Passwort eingerichtet. Drücken Sie die Eingabetaste.

      2. Drücken Sie Y, um ein Passwort einzurichten, und geben Sie ein sicheres Passwort zweimal ein. Weitere Informationen zum Erstellen eines sicheren Passworts finden Sie unter https://identitysafe.norton.com/password-generator/. Bewahren Sie dieses Passwort an einem sicheren Ort auf.

        Anmerkung

        Die Einrichtung eines Stammpassworts für MariaDB ist nur die grundlegendste Maßnahme, um Ihre Datenbank abzusichern. Wenn Sie eine datenbankgestützte Anwendung aufbauen oder installieren, legen Sie für diese Anwendung normalerweise einen Datenbank-Servicebenutzer an und nutzen das Stammkonto ausschließlich zur Datenbankverwaltung.

    2. Geben Sie Y ein, um die anonymen Benutzerkonten zu entfernen.

    3. Geben Sie Y ein, um die Root-Anmeldung per Remote-Zugriff zu deaktivieren.

    4. Geben Sie Y ein, um die Testdatenbank zu entfernen.

    5. Geben Sie Y ein, um die Tabellen mit den Berechtigungen neu zu laden. Speichern Sie anschließend Ihre Änderungen.

  3. (Optional) Wenn Sie nicht vorhaben, den MariaDB-Server weiter zu verwenden, stoppen Sie ihn. Sie können ihn erneut starten, wenn Sie ihn wieder brauchen.

    [ec2-user ~]$ sudo systemctl stop mariadb
  4. (Optional) Wenn Sie wollen, dass der MariaDB-Server bei jedem Systemstart gestartet wird, geben Sie den folgenden Befehl ein.

    [ec2-user ~]$ sudo systemctl enable mariadb

Schritt 4: (Optional) Installieren von phpMyAdmin

phpMyAdmin ist ein webbasiertes Datenbankverwaltungs-Tool, das Sie verwenden können, um die MySQL-Datenbanken auf Ihrer EC2-Instance anzuzeigen und zu bearbeiten. Führen Sie die unten genannten Schritte durch, um phpMyAdmin auf Ihrer Amazon Linux-Instance zu installieren und zu konfigurieren.

Wichtig

Es ist nicht empfehlenswert, phpMyAdmin zum Zugriff auf einen LAMP-Server zu verwenden, falls Sie nicht SSL/TLS in Apache aktiviert haben; andernfalls werden Ihr Datenbankadministrator-Passwort und andere Daten ungesichert im Internet übertragen. Sicherheitsempfehlungen von den Entwicklern finden Sie unter Securing your phpMyAdmin installation. Allgemeine Informationen zur Sicherung eines Webservers auf einer EC2-Instance finden Sie unter Tutorial: SSL/TLS unter Amazon Linux 2 konfigurieren.

So installieren Sie phpMyAdmin

  1. Installieren Sie die erforderlichen Abhängigkeiten.

    [ec2-user ~]$ sudo yum install php-mbstring -y
  2. Starten Sie Apache erneut.

    [ec2-user ~]$ sudo systemctl restart httpd
  3. Starten Sie php-fpm neu.

    [ec2-user ~]$ sudo systemctl restart php-fpm
  4. Navigieren Sie zum Stammverzeichnis von Apache unter /var/www/html.

    [ec2-user ~]$ cd /var/www/html
  5. Wählen Sie ein Quellpaket für die letzte phpMyAdmin-Version unter https://www.phpmyadmin.net/downloads. Um die Datei direkt in Ihre Instance herunterzuladen, kopieren Sie den Link in einen wget-Befehl wie im folgenden Beispiel:

    [ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
  6. Erstellen Sie mit dem folgenden Befehl einen phpMyAdmin-Ordner und extrahieren Sie das Paket in diesen.

    [ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
  7. Löschen Sie den Tarball phpMyAdmin-latest-all-languages.tar.gz.

    [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
  8. (Optional) Wenn der MySQL-Server nicht ausgeführt wird, starten Sie ihn jetzt.

    [ec2-user ~]$ sudo systemctl start mariadb
  9. Geben Sie in einem Webbrowser die URL Ihrer phpMyAdmin-Installation ein. Diese URL ist die öffentliche DNS-Adresse (oder die öffentliche IP-Adresse) Ihrer Instance gefolgt von einem Schrägstrich und dem Namen wie im folgenden Beispiel: Beispiel:

    http://my.public.dns.amazonaws.com/phpMyAdmin

    Die phpMyAdmin-Anmeldeseite wird angezeigt:

  10. Melden Sie sich bei Ihrer phpMyAdmin-Installation mit dem root-Benutzernamen und dem MySQL-Stammpasswort an, das Sie zuvor erstellt haben.

    Ihre Installation muss vor der Inbetriebnahme noch konfiguriert werden. Zum Konfigurieren von phpMyAdmin, können Sie manuell eine Konfigurationsdatei erstellen, die Konfigurationskonsole verwenden oder beide Ansätze kombinieren.

    Informationen zur Verwendung von phpMyAdmin finden Sie im phpMyAdmin-Benutzerhandbuch.

Fehlersuche

Dieser Abschnitt enthält Vorschläge zum Lösen häufiger Probleme, die bei der Einrichtung eines neuen LAMP-Servers auftreten können.

Ich kann zu meinem Server keine Verbindung über einen Webbrowser herstellen.

Führen Sie die folgende Prüfungen durch, um zu sehen, ob Ihr Apache-Webserver ausgeführt wird und auf ihn zugegriffen werden kann.

  • Wird der Webserver ausgeführt?

    Mit folgendem Befehl können Sie prüfen, ob der Befehl httpd ausgeführt wird:

    [ec2-user ~]$ sudo systemctl is-enabled httpd

    Wenn der httpd-Prozess nicht ausgeführt wird, wiederholen Sie die unter Vorbereiten des LAMP-Servers beschriebenen Schritte.

  • Ist die Firewall richtig konfiguriert?

    Wenn Sie die Apache-Testseite nicht anzeigen können, prüfen Sie, ob die verwendete Sicherheitsgruppe eine Regel enthält, um den HTTP-Datenverkehr (Port 80) zuzulassen. Weitere Informationen zum Hinzufügen einer HTTP-Regel zu einer Sicherheitsgruppe finden Sie unter Hinzufügen von Regeln zu einer Sicherheitsgruppe.

Verwandte Themen

Weitere Informationen zum Übertragen von Dateien auf Ihre Instance oder zum Installieren eines WordPress-Blogs auf Ihrem Webserver finden Sie in der folgenden Dokumentation:

Weitere Informationen über die in diesem Tutorial verwendete(n) Befehle und Software finden Sie auf den folgenden Webseiten:

Weitere Informationen zum Registrieren eines Domänennamens für Ihren Webserver oder zum Übertragen eines bestehenden Domänennamens auf diesen Host finden Sie unter Erstellen und Migrieren von Domänen und Subdomänen zu Amazon Route 53 im Entwicklerhandbuch für Amazon Route 53.