Erstellen einer EC2-Instance und Installieren eines Webservers - Amazon Relational Database Service

Erstellen einer EC2-Instance und Installieren eines Webservers

In diesem Schritt erstellen Sie einen Webserver, der eine Verbindung mit der Amazon RDS-DB-Instance herstellt, die Sie in Erstellen einer DB-Instance. erstellt haben.

Starten einer EC2-Instance

Zunächst erstellen Sie im öffentlichen Subnetz Ihrer VPC eine Amazon EC2-Instance.

Starten Sie EC2-Instances wie folgt:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/.

  2. Wählen Sie EC2-Dashboard und anschließend Instance starten wie im Folgenden gezeigt.

    
                                EC2-Dashboard
  3. Wählen Sie das Amazon Linux AMI (Amazon Linux-AMI) aus, wie im Folgenden gezeigt.

    
                                Auswählen eines Amazon Machine Image
    Wichtig

    Wählen Sie nicht Amazon Linux 2 AMI aus, da dieses nicht über die für dieses Tutorial erforderlichen Softwarepakte verfügt.

  4. Wählen Sie den Instance-Typ t2.micro aus wie im Folgenden gezeigt. Wählen Sie anschließend Next: Configure Instance Details (Weiter: Instance-Details konfigurieren) aus.

    
                                Wählen eines Instance-Typs
  5. Legen Sie auf der Seite Configure Instance Details (Konfigurieren von Instance-Detail)s wie im Folgenden gezeigt die folgenden Werte fest und behalten Sie die Standardwerte für die anderen Werte bei:

    
                                Konfigurieren von Instance-Details
  6. Wählen Sie Next: Add Storage.

  7. Behalten Sie auf der Seite Add Storage (Speicher hinzufügen) die Standardwerte bei und wählen Sie Next: Add Tags (Weiter: Tags hinzufügen).

  8. Wählen Sie auf der anschließend angezeigten Seite Add Tags (Tags hinzufügen) die Option Add Tag (Tag hinzufügen), geben Sie Name für Key (Schlüssel) und tutorial-web-server für Value (Wert) ein.

    
                                Taggen der Instance
  9. Wählen Sie Next: Configure Security Group (Weiter: Konfigurieren der Sicherheitsgruppe) aus.

  10. Wählen Sie auf der nachfolgend gezeigten Seite Configure Security Group (Sicherheitsgruppe konfigurieren) die Option Select an existing security group (Vorhandene Sicherheitsgruppe auswählen) aus. Wählen Sie dann eine vorhandene Sicherheitsgruppe aus, z. B. die in Erstellen einer VPC-Sicherheitsgruppe für einen öffentlichen Webserver erstellte tutorial-securitygroup. Stellen Sie sicher, dass die von Ihnen gewählte Sicherheitsgruppe Regeln für eingehenden Datenverkehr für Secure Shell (SSH) und HTTP-Zugriff enthält.

    
                                Konfigurieren der Sicherheitsgruppe
  11. Wählen Sie Review and Launch (Prüfen und Starten).

  12. Prüfen Sie auf der Seite Überprüfen des Instance-Starts wie im Folgenden gezeigt die Einstellungen und wählen Sie anschließend Starten.

    
                                Überprüfen des Instance-Starts
  13. Wählen Sie auf der Seite Select an existing key pair or create a new key pair (Ein bestehendes Schlüsselpaar wählen oder ein neues Schlüsselpaar erstellen) wie im Folgenden gezeigt Create a new key pair (Neues Schlüsselpaar erstellen) und legen Sie Key pair name (Schlüsselpaarname) auf tutorial-key-pair fest. Wählen Sie Schlüsselpaar herunterladen und speichern Sie anschließend die Schlüsselpaardatei auf Ihrem lokalen Computer. Sie verwenden diese Schlüsselpaardatei, um eine Verbindung mit Ihrer EC2-Instance herzustellen.

    
                                Auswählen eines vorhandenen Schlüsselpaars oder Erstellen eines neuen Schlüsselpaars
  14. Um Ihre EC2-Instance zu starten, wählen Sie Starten der Instances. Notieren Sie auf der im Folgenden gezeigten Seite Startstatus den Bezeichner für die neue EC2-Instance, beispielsweise: i-0288d65fd4470b6a9.

    
                                Startstatus
  15. Wählen Sie View Instances (Instances anzeigen) aus, um nach Ihrer Instance zu suchen.

  16. Warten Sie, bis der Instance-Status für Ihre Instance als Running (wird ausgeführt) angezeigt wird, bevor Sie fortfahren.

Installieren eines Apache-Webservers mit PHP

Als Nächstes stellen Sie eine Verbindung mit Ihrer EC2-Instance her und installieren den Webserver.

Anmerkung

Dieses Tutorial wurde für die Arbeit mit einer DB-Instance mit MySQL Version 5.6 entwickelt. Wenn Sie stattdessen eine DB-Instance mit MySQL 8.0 verwenden, müssen Sie die folgenden Parameter auf die Werte festlegen, die in einer vom Kunden erstellten DB-Parametergruppe angegeben sind:

  • character_set_serverutf8

  • collation_serverutf8_general_ci

Die Standardeinstellungen für diese Parameter führen dazu, dass die Datenbankverbindung fehlschlägt. Andere Parametereinstellungen können das Problem ebenfalls beheben. Informationen zum Festlegen von Parametern finden Sie unter Arbeiten mit DB-Parametergruppen.

Ändern Sie nach dem Zurücksetzen der Parameter Ihre DB-Instance so, dass sie die DB-Parametergruppe verwendet, und starten Sie die DB-Instance neu. Weitere Informationen finden Sie unter Ändern einer Amazon RDS-DB-Instance und Neustarten einer DB-Instance.

So stellen Sie eine Verbindung mit Ihrer EC2-Instance her und installieren den Apache-Webserver mit PHP

  1. Stellen Sie eine Verbindung mit der von Ihnen zuvor erstellten EC2-Instance her, indem Sie die Schritte unter Herstellen einer Verbindung zur Linux-Instance ausführen.

  2. Installieren Sie die neuesten Fehlerbehebungen und Sicherheitsupdates, indem Sie die Software auf Ihrer EC2-Instance aktualisieren. Verwenden Sie dazu den folgenden Befehl.

    Anmerkung

    Mit der Option -y werden die Updates installiert, ohne um Bestätigung zu bitten. Um Updates vor der Installation zu überprüfen, lassen Sie diese Option aus.

    [ec2-user ~]$ sudo yum update -y
  3. Nachdem die Aktualisierungen abgeschlossen sind, installieren Sie den Apache-Webserver mit dem PHP-Softwarepaket unter Verwendung des Befehls yum install. Mit diesem Befehl werden gleichzeitig mehrere Softwarepakete und zugehörige Abhängigkeiten installiert.

    [ec2-user ~]$ sudo yum install -y httpd24 php56 php56-mysqlnd

    Wenn Sie die Fehlermeldung No package package-name available erhalten, wurde Ihre Instance nicht mit dem Amazon Linux-AMI gestartet. Sie können stattdessen das Amazon Linux 2-AMI verwenden. Sie können Ihre Version von Amazon Linux mit dem folgenden Befehl anzeigen.

    cat /etc/system-release

    Weitere Informationen finden Sie unter Aktualisieren der Software einer Instance.

  4. Starten Sie den Webserver mithilfe des folgenden Befehls.

    [ec2-user ~]$ sudo service httpd start

    Sie können testen, ob Ihr Webserver richtig installiert und gestartet ist. Geben Sie dazu den öffentlichen DNS-Namen (Domain Name System) Ihrer EC2-Instance in die Adressleiste eines Webbrowsers ein, zum Beispiel: http://ec2-42-8-168-21.us-west-1.compute.amazonaws.com. Wenn Ihr Webserver ausgeführt wird, wird Ihnen die Apache-Testseite angezeigt.

    Wenn Sie die Apache-Testseite nicht sehen, überprüfen Sie die Regeln für eingehenden Datenverkehr für die VPC-Sicherheitsgruppe, die Sie in Tutorial: Erstellen eines Amazon VPC zur Verwendung mit einer DB-Instance erstellt haben. Stellen Sie sicher, dass die Regeln für eingehenden Datenverkehr eine Regel enthalten, die den HTTP-Zugriff (Port 80) für die IP-Adresse ermöglicht, die Sie zum Herstellen einer Verbindung mit dem Webserver verwenden.

    Anmerkung

    Die Apache-Testseite wird nur angezeigt, wenn im Dokumentstammverzeichnis, /var/www/html, keine Inhalte vorhanden sind. Wenn Sie dem Dokumentstammverzeichnis Inhalte hinzugefügt haben, werden anstelle der Apache-Testseite unter der öffentlichen DNS-Adresse Ihrer EC2-Instance Ihre Inhalte angezeigt.

  5. Konfigurieren Sie den Webserver so, dass er mit jedem Systemstart gestartet wird. Verwenden Sie hierzu den Befehl chkconfig.

    [ec2-user ~]$ sudo chkconfig httpd on

Um für ec2-user die Verwaltung von Dateien im Standardstammverzeichnis Ihres Apache-Webservers zuzulassen, ändern Sie die Eigentümerschaft und die Berechtigungen für das Verzeichnis /var/www. In diesem Tutoral fügen Sie Ihrer EC2-Instance eine Gruppe mit dem Namen www hinzu. Dann weisen Sie dieser Gruppe die Eigentümerschaft für das Verzeichnis /var/www zu und fügen Schreibrechte für die Gruppe hinzu. Alle Mitglieder dieser Gruppe können anschließend Dateien für den Webserver hinzufügen, löschen und ändern.

So legen Sie Dateiberechtigungen für den Apache-Webserver fest

  1. Fügen Sie Ihrer EC2-Instance mit dem folgenden Befehl die Gruppe www hinzu.

    [ec2-user ~]$ sudo groupadd www
  2. Fügen Sie den Benutzer ec2-user zur Gruppe www hinzu.

    [ec2-user ~]$ sudo usermod -a -G www ec2-user
  3. Melden Sie sich ab, um Ihre Berechtigungen zu aktualisieren und die neue Gruppe www einzufügen.

    [ec2-user ~]$ exit
  4. Melden Sie sich wieder an und überprüfen Sie mit dem Befehl www, ob die Gruppe groups vorhanden ist.

    [ec2-user ~]$ groups ec2-user wheel www
  5. Ändern Sie die Besitzergruppe für das Verzeichnis /var/www und dessen Inhalte in die Gruppe www.

    [ec2-user ~]$ sudo chgrp -R www /var/www
  6. Ändern Sie die Verzeichnisberechtigungen von /var/www und dessen Unterverzeichnissen, indem Sie Schreibberechtigungen für die Gruppe hinzufügen und die Gruppen-ID für zukünftige Unterverzeichnisse einrichten.

    [ec2-user ~]$ sudo chmod 2775 /var/www [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} +
  7. Ändern Sie die Dateiberechtigungen für Dateien im Verzeichnis /var/www und dessen Unterverzeichnissen rekursiv, um Schreibberechtigungen für die Gruppe hinzuzufügen.

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

Herstellen der Verbindung zwischen Ihrem Apache-Webserver und Ihrer DB-Instance

Als Nächstes fügen Sie Ihrem Apache-Server, der mit Ihrer Amazon RDS-DB-Instance/dem verbunden ist, Inhalte hinzu.

So fügen Sie dem Apache-Server, der mit Ihrer -DB-Instance/dem verbunden ist, Inhalte hinzu

  1. Während die Verbindung mit Ihrer EC2-Instance besteht, ändern Sie das Verzeichnis in /var/www und erstellen Sie ein neues Unterverzeichnis namens inc.

    [ec2-user ~]$ cd /var/www [ec2-user ~]$ mkdir inc [ec2-user ~]$ cd inc
  2. Erstellen Sie im Verzeichnis inc eine neue Datei namens dbinfo.inc und bearbeiten Sie anschließend die Datei, indem Sie Nano (oder einen Editor Ihrer Wahl) aufrufen.

    [ec2-user ~]$ >dbinfo.inc [ec2-user ~]$ nano dbinfo.inc
  3. Fügen Sie der Datei dbinfo.inc die folgenden Inhalte hinzu. In diesem Fall ist db_instance_endpoint Ihr DB-Instance-Endpunkt/ ohne den Port, und das Hauptpasswort ist das Hauptpasswort für Ihre DB-Instance/Ihren .

    Anmerkung

    Es wird empfohlen, die Informationen zu Benutzername und Passwort in einem Ordner abzulegen, der nicht Teil des Dokumentstammverzeichnisses für Ihren Webserver ist. Auf diese Weise wird die Möglichkeit verringert, dass Ihre Sicherheitsinformationen offengelegt werden.

    <?php define('DB_SERVER', 'db_instance_endpoint'); define('DB_USERNAME', 'tutorial_user'); define('DB_PASSWORD', 'master password'); define('DB_DATABASE', 'sample'); ?>
  4. Speichern und schließen Sie die Datei dbinfo.inc.

  5. Ändern Sie das Verzeichnis in /var/www/html.

    [ec2-user ~]$ cd /var/www/html
  6. Erstellen Sie im Verzeichnis html eine neue Datei namens SamplePage.php und bearbeiten Sie anschließend die Datei, indem Sie Nano (oder einen Editor Ihrer Wahl) aufrufen.

    [ec2-user ~]$ >SamplePage.php [ec2-user ~]$ nano SamplePage.php
  7. Fügen Sie der Datei SamplePage.php die folgenden Inhalte hinzu:

    Anmerkung

    Es wird empfohlen, die Informationen zu Benutzername und Passwort in einem Ordner abzulegen, der nicht Teil des Dokumentstammverzeichnisses für Ihren Webserver ist. Auf diese Weise wird die Möglichkeit verringert, dass Ihre Sicherheitsinformationen offengelegt werden.

    <?php include "../inc/dbinfo.inc"; ?> <html> <body> <h1>Sample page</h1> <?php /* Connect to MySQL and select the database. */ $connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD); if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error(); $database = mysqli_select_db($connection, DB_DATABASE); /* Ensure that the EMPLOYEES table exists. */ VerifyEmployeesTable($connection, DB_DATABASE); /* If input fields are populated, add a row to the EMPLOYEES table. */ $employee_name = htmlentities($_POST['NAME']); $employee_address = htmlentities($_POST['ADDRESS']); if (strlen($employee_name) || strlen($employee_address)) { AddEmployee($connection, $employee_name, $employee_address); } ?> <!-- Input form --> <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST"> <table border="0"> <tr> <td>NAME</td> <td>ADDRESS</td> </tr> <tr> <td> <input type="text" name="NAME" maxlength="45" size="30" /> </td> <td> <input type="text" name="ADDRESS" maxlength="90" size="60" /> </td> <td> <input type="submit" value="Add Data" /> </td> </tr> </table> </form> <!-- Display table data. --> <table border="1" cellpadding="2" cellspacing="2"> <tr> <td>ID</td> <td>NAME</td> <td>ADDRESS</td> </tr> <?php $result = mysqli_query($connection, "SELECT * FROM EMPLOYEES"); while($query_data = mysqli_fetch_row($result)) { echo "<tr>"; echo "<td>",$query_data[0], "</td>", "<td>",$query_data[1], "</td>", "<td>",$query_data[2], "</td>"; echo "</tr>"; } ?> </table> <!-- Clean up. --> <?php mysqli_free_result($result); mysqli_close($connection); ?> </body> </html> <?php /* Add an employee to the table. */ function AddEmployee($connection, $name, $address) { $n = mysqli_real_escape_string($connection, $name); $a = mysqli_real_escape_string($connection, $address); $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');"; if(!mysqli_query($connection, $query)) echo("<p>Error adding employee data.</p>"); } /* Check whether the table exists and, if not, create it. */ function VerifyEmployeesTable($connection, $dbName) { if(!TableExists("EMPLOYEES", $connection, $dbName)) { $query = "CREATE TABLE EMPLOYEES ( ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(45), ADDRESS VARCHAR(90) )"; if(!mysqli_query($connection, $query)) echo("<p>Error creating table.</p>"); } } /* Check for the existence of a table. */ function TableExists($tableName, $connection, $dbName) { $t = mysqli_real_escape_string($connection, $tableName); $d = mysqli_real_escape_string($connection, $dbName); $checktable = mysqli_query($connection, "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t' AND TABLE_SCHEMA = '$d'"); if(mysqli_num_rows($checktable) > 0) return true; return false; } ?>
  8. Speichern und schließen Sie die Datei SamplePage.php.

  9. Überprüfen Sie, ob Ihr Webserver erfolgreich eine Verbindung mit Ihrer DB-Instance herstellen kann, indem Sie einen Webbrowser öffnen und zu http://EC2 instance endpoint/SamplePage.php navigieren, beispielsweise: http://ec2-55-122-41-31.us-west-2.compute.amazonaws.com/SamplePage.php.

Sie können SamplePage.php verwenden, um Ihrer DB-Instance Daten hinzuzufügen. Die von Ihnen hinzugefügten Daten werden anschließend auf der Seite angezeigt. Um zu überprüfen, ob die Daten in die Tabelle eingefügt wurden, können Sie MySQL auf der Amazon EC2-Instance installieren, sich mit der DB-Instance verbinden und die Tabelle abfragen.

Um sicherzustellen, dass Ihre DB-Instance so sicher wie möglich ist, müssen Sie sich vergewissern, dass Quellen außerhalb der VPC keine Verbindungen mit Ihrer DB-Instance herstellen können.

Nachdem Sie Ihren Webserver und Ihre Datenbank getestet haben, sollten Sie Ihre DB-Instance und Ihre Amazon EC2-Instance löschen.

  • Um eine DB-Instance zu löschen, folgen Sie den Anweisungen in Löschen einer DB-Instance. Sie müssen keinen abschließenden Snapshot erstellen.

  • Um eine Amazon EC2-Instance zu beenden, folgen Sie den Anweisungen in Beenden Ihrer Instance im Amazon EC2-Benutzerhandbuch.