

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Tutorial: Erstellen eines Webservers und einer Amazon RDS-DB-Instance
<a name="TUT_WebAppWithRDS"></a>

Dieses Tutorial veranschaulicht, wie Sie einen Apache-Webserver mit PHP installieren und eine MariaDB-, MySQL- oder PostgreSQL-Datenbank erstellen. Der Webserver wird auf einer Amazon-EC2-Instance unter Verwendung von Amazon Linux 2023 ausgeführt und Sie können zwischen einer MySQL- oder PostgreSQL-DB-Instance wählen. Die Amazon EC2-Instance und die -DB-Instance/ der werden beide in einer virtuellen privaten Cloud (VPC) auf der Basis des Amazon VPC-Service ausgeführt. 

**Wichtig**  
Für die Erstellung eines AWS Kontos fallen keine Gebühren an. Wenn Sie dieses Tutorial abschließen, können Ihnen jedoch Kosten für die von Ihnen verwendeten AWS Ressourcen entstehen. Sie können diese Ressourcen nach Abschluss des Tutorials löschen, wenn sie nicht mehr benötigt werden.

**Anmerkung**  
Dieses Tutorial funktioniert mit Amazon Linux 2023 und möglicherweise nicht mit anderen Linux-Versionen.

Im folgenden Tutorial erstellen Sie eine EC2-Instance, die die Standard-VPC, Subnetze und die Sicherheitsgruppe für Ihr AWS-Konto verwendet. In diesem Tutorial erhalten Sie Informationen zum Erstellen der DB-Instance und richten die Verbindung mit der EC2-Instance, die Sie erstellt haben, automatisch ein. Das Tutorial zeigt Ihnen dann, wie Sie den Webserver auf der EC2-Instance installieren. Sie verbinden Ihren Webserver in der VPC mit Ihrer DB-Instance in der VPC mithilfe des DB-Instance-Endpunkts.

1. [Starten Sie eine EC2-Instance, um eine Verbindung mit Ihrer DB-Instance herzustellen.](CHAP_Tutorials.WebServerDB.LaunchEC2.md)

1. [Erstellen einer DB-Instance von Amazon RDS](CHAP_Tutorials.WebServerDB.CreateDBInstance.md)

1. [Installieren eines Webservers auf Ihrer EC2-Instance](CHAP_Tutorials.WebServerDB.CreateWebServer.md)

Das folgende Diagramm zeigt die Konfiguration nach Abschluss des Tutorials.

![\[Einzelnes VPC-Szenario\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


**Anmerkung**  
Nach Abschluss des Tutorials gibt es in jeder Availability Zone im VPC ein öffentliches und ein privates Subnetz.  Wenn Sie stattdessen lieber eine neue VPC für dieses Szenario konfigurieren möchten, führen Sie die Aufgaben in [Tutorial: Eine VPC zur Verwendung mit einem  erstellen (IPv4 nur)](CHAP_Tutorials.WebServerDB.CreateVPC.md) aus.

# Starten Sie eine EC2-Instance, um eine Verbindung mit Ihrer DB-Instance herzustellen.
<a name="CHAP_Tutorials.WebServerDB.LaunchEC2"></a>

Erstellen Sie im öffentlichen Subnetz Ihrer VPC eine Amazon-EC2-Instance.

**Starten Sie EC2-Instances wie folgt:**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon EC2 EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie in der oberen rechten Ecke von den aus AWS-Managementkonsole, AWS-Region wo Sie die EC2-Instance erstellen möchten.

1. Wählen Sie **EC2-Dashboard** und anschließend **Instance starten** wie im Folgenden gezeigt.  
![\[EC2-Dashboard\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

1. Wählen Sie auf der Seite **Eine Instance starten** die folgenden Einstellungen aus.

   1. Geben Sie unter **Name and tags** (Name und Tags) als **Name** den Namen **tutorial-ec2-instance-web-server** ein.

   1. Wählen Sie unter **Anwendungs- und Betriebssystem-Images (Amazon Machine Image)** die Option **Amazon Linux** und dann die Registerkarte **Amazon Linux 2023 AMI** aus. Übernehmen Sie für alle anderen Einstellungen die Standardwerte.  
![\[Auswählen eines Amazon Machine Image\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. Wählen Sie unter **Instance type** (Instance-Typ) den Wert **t2.micro** aus.

   1. Wählen Sie unter **Key pair (login)** (Schlüsselpaar (Anmeldung)) einen **Key pair name** (Schlüsselpaarname), um ein vorhandenes Schlüsselpaar zu verwenden. Wenn Sie ein neues Schlüsselpaar für die Amazon-EC2-Instance erstellen möchten, wählen Sie **Create new key pair** (Neues Schlüsselpaar erstellen) aus und erstellen sie das Schlüsselpaar im Fenster **Create key pair** (Schlüsselpaar erstellen).

      Weitere Informationen zum Erstellen eines neuen Schlüsselpaars finden Sie unter [Erstellen eines Schlüsselpaars](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair) im *Amazon-EC2-Benutzerhandbuch*.

   1. Legen Sie unter **Network settings** (Netzwerkeinstellungen) die folgenden Werte fest und übernehmen Sie für die anderen Einstellungen die Standardwerte:
      + Wählen Sie für **Allow SSH traffic from** (SSH-Verkehr zulassen von) die Quelle von SSH-Verbindungen mit der EC2-Instance aus.

        Sie können **My IP** (Meine IP) auswählen, wenn die angezeigte IP-Adresse für SSH-Verbindungen korrekt ist.

        Andernfalls können Sie die IP-Adresse, die für die Verbindung mit EC2-Instances in Ihrer VPC verwendet werden soll, mit Secure Shell (SSH) ermitteln. Um Ihre öffentliche IP-Adresse in einem anderen Browserfenster oder einer anderen Registerkarte zu ermitteln, können Sie den Dienst unter verwenden. [https://checkip.amazonaws.com](https://checkip.amazonaws.com) Ein Beispiel für eine IP-Adresse ist `203.0.113.25/32`.

        In vielen Fällen können Sie eine Verbindung über einen Internetdienstanbieter (ISP) oder hinter Ihrer Firewall ohne statische IP-Adresse herstellen. Bestimmen Sie in diesem Fall den Bereich der IP-Adressen, die von Client-Computern verwendet werden.
**Warnung**  
Wenn Sie `0.0.0.0/0` für SSH-Zugriff verwenden, ermöglichen Sie für alle IP-Adressen den Zugriff auf Ihre öffentlichen Instances. Dieser Ansatz ist zwar für kurze Zeit in einer Testumgebung zulässig, aber für Produktionsumgebungen sehr unsicher. Für die Produktion wird nur eine bestimmte IP-Adresse bzw. ein bestimmter Adressbereich für den Zugriff auf Ihre Instances autorisiert.
      + Aktivieren Sie die **Option „ HTTPs Datenverkehr aus dem Internet zulassen**“.
      + Aktivieren Sie **Allow HTTP traffic from the internet** (HTTP-Verkehr aus dem Internet zulassen).  
![\[Konfigurieren von Instance-Details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_14.png)

   1. Übernehmen Sie die Standardwerte für die übrigen Abschnitte.

   1. Überprüfen Sie Ihre Instance-Konfiguration im Bereich **Summary** (Übersicht). Wenn alles in Ordnung ist, klicken Sie auf **Launch instance** (Instance starten).

1. Notieren Sie auf der im Folgenden gezeigten Seite **Startstatus** die Kennung für die neue EC2-Instance, beispielsweise: `i-1234567890abcdef0`.  
![\[EC2-Instance-ID auf der Seite Startstatus.\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. Wählen Sie die EC2-Instance-Kennung aus, um die Liste der EC2-Instances zu öffnen. Wählen Sie dann Ihre EC2-Instance aus.

1. Notieren Sie sich die folgenden Werte auf der Registerkarte **Details**. Diese benötigen Sie, wenn Sie eine Verbindung über SSH herstellen:

   1. Notieren Sie sich in der **Instanzübersicht** den Wert für **Public IPv4 DNS**.  
![\[Öffentlicher EC2-DNS-Name auf der Registerkarte „Details“ der Seite „Instances“.\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. Notieren Sie sich unter **Instance-Details** den Wert für **Schlüsselpaarname**.  
![\[EC2-Schlüsselpaarname auf der Registerkarte „Details“ der Seite „Instances“.\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

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

1. Schließen Sie [Erstellen einer DB-Instance von Amazon RDS](CHAP_Tutorials.WebServerDB.CreateDBInstance.md) ab.

# Erstellen einer DB-Instance von Amazon RDS
<a name="CHAP_Tutorials.WebServerDB.CreateDBInstance"></a>

Erstellen Sie eine DB-Instance von RDS für MariaDB, RDS für MySQL oder RDS für PostgreSQL, die die von einer Webanwendung verwendeten Daten enthält. 

------
#### [ RDS for MariaDB ]

**So erstellen Sie eine MariaDB-Instance**

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Überprüfen Sie in der oberen rechten Ecke der AWS-Managementkonsole die AWS-Region. Sie sollte der Region entsprechen, in der Sie eine EC2-Instance erstellt haben.

1. Wählen Sie im Navigationsbereich **Databases (Datenbanken)** aus.

1. Wählen Sie **Create database (Datenbank erstellen)** aus.

1. Wählen Sie auf der Seite **Datenbank erstellen** die Option **Standarderstellung** aus.

1. Wählen Sie für **Engine options (Engine-Optionen)** die Option **MariaDB** aus.  
![\[Engine-Typ auswählen\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/tutorial-create-mariadb.png)

1. Wählen Sie für **Vorlagen** die Option **Kostenloses Kontingent** oder **Sandbox** aus. **Kostenloses Kontingent** wird für Konten mit kostenlosem Tarif angezeigt. **Sandbox** wird für Konten mit kostenpflichtigem Tarif angezeigt.  
![\[Vorlage auswählen\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. Verwenden Sie im Abschnitt **Availability & durability (Verfügbarkeit und Stabilität)** die Standardwerte.

1. Legen Sie im Abschnitt **Settings (Einstellungen)** die folgenden Werte fest:
   + **DB Instance Identifier (DB-Instance-Kennung** – Typ **tutorial-db-instance**.
   + **Master username (Masterbenutzername)** – Typ **tutorial\$1user**.
   + **Automatisch ein Passwort generieren** - Lassen Sie die Option ausgeschaltet.
   + **Master-Passwort** - Geben Sie ein Passwort ein.
   + **Confirm password (Passwort bestätigen)**: Geben Sie das Passwort erneut ein.  
![\[Abschnitte zur Einstellung\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. Legen Sie im Abschnitt **Instance Configuration** folgende Werte fest:
   + **Burst-fähige Klassen (einschließlich t-Klassen)**
   + **db.t3.micro**  
![\[Abschnitt Instance-Konfiguration\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. Im Abschnitt **Speicher** behalten Sie die Standardwerte eingestellt.

1. Im Abschnitt **Konnektivität** legen Sie die folgenden Werte fest und behalten Sie die Standardwerte für die anderen Werte bei:
   + Wählen Sie unter **Compute-Ressource** die Option **Connect to an EC2 compute resource** (Verbinden mit einer EC2 Compute-Ressource).
   + Als **EC2-Instance** wählen Sie die EC2-Instance, die Sie zuvor erstellt haben, z. B. **tutorial-ec2-instance-web-server**.  
![\[Abschnitt „Connectivity (Anbindung)“\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. Stellen Sie im Abschnitt **Datenbankauthentifizierung** sicher, dass **Passwortauthentifizierung** ausgewählt ist.

1. Öffnen Sie den Abschnitt **Additional configuration (Zusätzliche Konfiguration)** und geben Sie **sample** für **Initial database name (Erster Datenbankname)** ein. Behalten Sie für die anderen Optionen die Standardeinstellungen bei.

1. Um Ihre MariaDB-Instance zu erstellen, wählen Sie **Create database (Datenbank erstellen)** aus.

   Ihre neue DB-Instance wird in der Liste **Databases (Datenbanken)** mit dem Status **Creating (Wird erstellt)** angezeigt.

1. Warten Sie, bis der **Status** Ihrer neuen DB-Instance als **Available (Verfügbar)** angezeigt wird. Wählen Sie dann den Namen der DB-Instance aus, um deren Details anzuzeigen.

1. Zeigen Sie im Abschnitt **Connectivity & security (Anbindung und Sicherheit)** den **Endpoint (Endpunkt)** und den **Port** der DB-Instance an.  
![\[DB-Instance-Details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port.png)

   Notieren Sie den Endpunkt und den Port Ihrer DB-Instance. Sie verwenden diese Informationen, um Ihren Webserver mit Ihrer DB-Instance zu verbinden.

1. Schließen Sie [Installieren eines Webservers auf Ihrer EC2-Instance](CHAP_Tutorials.WebServerDB.CreateWebServer.md) ab.

------
#### [ RDS for MySQL ]

**So erstellen Sie eine MySQL-DB-Instance**

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Überprüfen Sie in der oberen rechten Ecke der AWS-Managementkonsole die AWS-Region. Sie sollte der Region entsprechen, in der Sie eine EC2-Instance erstellt haben.

1. Wählen Sie im Navigationsbereich **Databases (Datenbanken)** aus.

1. Wählen Sie **Create database (Datenbank erstellen)** aus.

1. Wählen Sie auf der Seite **Datenbank erstellen** die Option **Standarderstellung** aus.

1. Wählen Sie unter **Engine-Optionen** die Option **MySQL** aus.  
![\[Engine-Typ auswählen\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/tutorial-create-mysql.png)

1. Wählen Sie für **Vorlagen** die Option **Kostenloses Kontingent** oder **Sandbox** aus. **Kostenloses Kontingent** wird für Konten mit kostenlosem Tarif angezeigt. **Sandbox** wird für Konten mit kostenpflichtigem Tarif angezeigt.  
![\[Vorlage auswählen\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. Verwenden Sie im Abschnitt **Availability & durability (Verfügbarkeit und Stabilität)** die Standardwerte.

1. Legen Sie im Abschnitt **Settings (Einstellungen)** die folgenden Werte fest:
   + **DB Instance Identifier (DB-Instance-Kennung** – Typ **tutorial-db-instance**.
   + **Master username (Masterbenutzername)** – Typ **tutorial\$1user**.
   + **Automatisch ein Passwort generieren** - Lassen Sie die Option ausgeschaltet.
   + **Master-Passwort** - Geben Sie ein Passwort ein.
   + **Confirm password (Passwort bestätigen)**: Geben Sie das Passwort erneut ein.  
![\[Abschnitte zur Einstellung\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. Legen Sie im Abschnitt **Instance Configuration** folgende Werte fest:
   + **Burst-fähige Klassen (einschließlich t-Klassen)**
   + **db.t3.micro**  
![\[Abschnitt Instance-Konfiguration\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. Im Abschnitt **Speicher** behalten Sie die Standardwerte eingestellt.

1. Im Abschnitt **Konnektivität** legen Sie die folgenden Werte fest und behalten Sie die Standardwerte für die anderen Werte bei:
   + Wählen Sie unter **Compute-Ressource** die Option **Connect to an EC2 compute resource** (Verbinden mit einer EC2 Compute-Ressource).
   + Als **EC2-Instance** wählen Sie die EC2-Instance, die Sie zuvor erstellt haben, z. B. **tutorial-ec2-instance-web-server**.  
![\[Abschnitt „Connectivity (Anbindung)“\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. Stellen Sie im Abschnitt **Datenbankauthentifizierung** sicher, dass **Passwortauthentifizierung** ausgewählt ist.

1. Öffnen Sie den Abschnitt **Additional configuration (Zusätzliche Konfiguration)** und geben Sie **sample** für **Initial database name (Erster Datenbankname)** ein. Behalten Sie für die anderen Optionen die Standardeinstellungen bei.

1. Um Ihre MySQL-DB-Instance zu erstellen, wählen Sie **Create database (Datenbank erstellen)** aus.

   Ihre neue DB-Instance wird in der Liste **Databases (Datenbanken)** mit dem Status **Creating (Wird erstellt)** angezeigt.

1. Warten Sie, bis der **Status** Ihrer neuen DB-Instance als **Available (Verfügbar)** angezeigt wird. Wählen Sie dann den Namen der DB-Instance aus, um deren Details anzuzeigen.

1. Zeigen Sie im Abschnitt **Connectivity & security (Anbindung und Sicherheit)** den **Endpoint (Endpunkt)** und den **Port** der DB-Instance an.  
![\[DB-Instance-Details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port.png)

   Notieren Sie den Endpunkt und den Port Ihrer DB-Instance. Sie verwenden diese Informationen, um Ihren Webserver mit Ihrer DB-Instance zu verbinden.

1. Schließen Sie [Installieren eines Webservers auf Ihrer EC2-Instance](CHAP_Tutorials.WebServerDB.CreateWebServer.md) ab.

------
#### [ RDS for PostgreSQL ]

**Erstellen einer PostgreSQL-DB-Instance**

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Überprüfen Sie in der oberen rechten Ecke der AWS-Managementkonsole die AWS-Region. Sie sollte der Region entsprechen, in der Sie eine EC2-Instance erstellt haben.

1. Wählen Sie im Navigationsbereich **Databases (Datenbanken)** aus.

1. Wählen Sie **Create database (Datenbank erstellen)** aus.

1. Wählen Sie auf der Seite **Datenbank erstellen** die Option **Standarderstellung** aus.

1. Wählen Sie unter **Engine-Optionen** die Option **PostgreSQL**.  
![\[Engine-Typ auswählen\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/tutorial-create-postgres.png)

1. Wählen Sie für **Vorlagen** die Option **Kostenloses Kontingent** oder **Sandbox** aus. **Kostenloses Kontingent** wird für Konten mit kostenlosem Tarif angezeigt. **Sandbox** wird für Konten mit kostenpflichtigem Tarif angezeigt.  
![\[Vorlage auswählen\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. Verwenden Sie im Abschnitt **Availability & durability (Verfügbarkeit und Stabilität)** die Standardwerte.

1. Legen Sie im Abschnitt **Settings (Einstellungen)** die folgenden Werte fest:
   + **DB Instance Identifier (DB-Instance-Kennung** – Typ **tutorial-db-instance**.
   + **Master username (Masterbenutzername)** – Typ **tutorial\$1user**.
   + **Automatisch ein Passwort generieren** - Lassen Sie die Option ausgeschaltet.
   + **Master-Passwort** - Geben Sie ein Passwort ein.
   + **Confirm password (Passwort bestätigen)**: Geben Sie das Passwort erneut ein.  
![\[Abschnitte zur Einstellung\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. Legen Sie im Abschnitt **Instance Configuration** folgende Werte fest:
   + **Burst-fähige Klassen (einschließlich t-Klassen)**
   + **db.t3.micro**  
![\[Abschnitt Instance-Konfiguration\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. Im Abschnitt **Speicher** behalten Sie die Standardwerte eingestellt.

1. Im Abschnitt **Konnektivität** legen Sie die folgenden Werte fest und behalten Sie die Standardwerte für die anderen Werte bei:
   + Wählen Sie unter **Compute-Ressource** die Option **Connect to an EC2 compute resource** (Verbinden mit einer EC2 Compute-Ressource).
   + Als **EC2-Instance** wählen Sie die EC2-Instance, die Sie zuvor erstellt haben, z. B. **tutorial-ec2-instance-web-server**.  
![\[Abschnitt „Connectivity (Anbindung)“\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. Stellen Sie im Abschnitt **Datenbankauthentifizierung** sicher, dass **Passwortauthentifizierung** ausgewählt ist.

1. Öffnen Sie den Abschnitt **Additional configuration (Zusätzliche Konfiguration)** und geben Sie **sample** für **Initial database name (Erster Datenbankname)** ein. Behalten Sie für die anderen Optionen die Standardeinstellungen bei.

1. Um Ihre PostgreSQL-DB-Instance zu erstellen, wählen Sie **Datenbank erstellen** aus.

   Ihre neue DB-Instance wird in der Liste **Databases (Datenbanken)** mit dem Status **Creating (Wird erstellt)** angezeigt.

1. Warten Sie, bis der **Status** Ihrer neuen DB-Instance als **Available (Verfügbar)** angezeigt wird. Wählen Sie dann den Namen der DB-Instance aus, um deren Details anzuzeigen.

1. Zeigen Sie im Abschnitt **Connectivity & security (Anbindung und Sicherheit)** den **Endpoint (Endpunkt)** und den **Port** der DB-Instance an.  
![\[DB-Instance-Details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port_postgres.png)

   Notieren Sie den Endpunkt und den Port Ihrer DB-Instance. Sie verwenden diese Informationen, um Ihren Webserver mit Ihrer DB-Instance zu verbinden.

1. Schließen Sie [Installieren eines Webservers auf Ihrer EC2-Instance](CHAP_Tutorials.WebServerDB.CreateWebServer.md) ab.

------

# Installieren eines Webservers auf Ihrer EC2-Instance
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer"></a>

Installieren Sie einen Webserver auf der EC2-Instance, die Sie in [Starten Sie eine EC2-Instance, um eine Verbindung mit Ihrer DB-Instance herzustellen.](CHAP_Tutorials.WebServerDB.LaunchEC2.md) erstellt haben. Der Webserver stellt eine Verbindung mit der DB-Instance von Amazon RDS her, die Sie in [Erstellen einer DB-Instance von Amazon RDS](CHAP_Tutorials.WebServerDB.CreateDBInstance.md) erstellt haben. 

## Installieren eines Apache-Webservers mit PHP und MariaDB
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer.Apache"></a>

Stellen Sie eine Verbindung mit Ihrer EC2-Instance her und installieren Sie den Webserver.

**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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) im *Amazon-EC2-Benutzerhandbuch* befolgen.

   Wir empfehlen, dass Sie eine Verbindung mit Ihrer EC2-Instance mithilfe von SSH herstellen. Wenn das SSH-Client-Dienstprogramm unter Windows, Linux oder Mac installiert ist, können Sie mit dem folgenden Befehlsformat eine Verbindung mit der Instance herstellen:

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   Nehmen wir zum Beispiel an, das `ec2-database-connect-key-pair.pem` in `/dir1` unter Linux gespeichert und das öffentliche IPv4-DNS für Ihre EC2-Instance `ec2-12-345-678-90.compute-1.amazonaws.com` ist. Ihr SSH-Befehl würde wie folgt aussehen:

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. Installieren Sie die neuesten Bugfixes 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.

   ```
   sudo dnf update -y
   ```

1. Nachdem die Aktualisierungen abgeschlossen sind, installieren Sie die Software von Apache-Webserver, PHP und MariaDB mit den folgenden Befehlen. Mit diesem Befehl werden gleichzeitig mehrere Softwarepakete und zugehörige Abhängigkeiten installiert.

------
#### [ MariaDB & MySQL ]

   ```
   sudo dnf install -y httpd php php-mysqli mariadb105
   ```

------
#### [ PostgreSQL ]

   ```
   sudo dnf install -y httpd php php-pgsql postgresql15
   ```

------

   Wenn Sie eine Fehlermeldung erhalten, wurde Ihre Instance wahrscheinlich nicht mit einem Amazon-Linux-2023-AMI gestartet. Stattdessen verwenden Sie möglicherweise das Amazon-Linux-2-AMI. 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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-updates.html).

1. Starten Sie den Webserver mithilfe des folgenden Befehls.

   ```
   sudo systemctl start httpd
   ```

   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 erstellt habe [Tutorial: Eine VPC zur Verwendung mit einem  erstellen (IPv4 nur)](CHAP_Tutorials.WebServerDB.CreateVPC.md). 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, um eine Verbindung mit dem Webserver herzustellen.
**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 unter der öffentlichen DNS-Adresse Ihrer EC2-Instance Ihre Inhalte angezeigt. Bis zu diesem Zeitpunkt erscheinen sie auf der Apache-Testseite.

1. Konfigurieren Sie den Webserver so, dass er mit jedem Systemstart gestartet wird. Verwenden Sie hierzu den Befehl `systemctl`.

   ```
   sudo systemctl enable httpd
   ```

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`. 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 legen Sie Dateiberechtigungen für den Apache-Webserver fest**

1. Fügen Sie den Benutzer `ec2-user` zur Gruppe `apache` hinzu.

   ```
   sudo usermod -a -G apache ec2-user
   ```

1. Melden Sie sich ab, um Ihre Berechtigungen zu aktualisieren und die neue Gruppe `apache` einzufügen.

   ```
   exit
   ```

1. Melden Sie sich wieder an und überprüfen Sie mit dem Befehl `apache`, ob die Gruppe `groups` vorhanden ist.

   ```
   groups
   ```

   Die Ausgabe sieht folgendermaßen oder ähnlich aus:

   ```
   ec2-user adm wheel apache systemd-journal
   ```

1. Ändern Sie die Besitzergruppe für das Verzeichnis `/var/www` und dessen Inhalte in die Gruppe `apache`.

   ```
   sudo chown -R ec2-user:apache /var/www
   ```

1. Ä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.

   ```
   sudo chmod 2775 /var/www
   find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Ändern Sie die Dateiberechtigungen für Dateien im Verzeichnis `/var/www` und dessen Unterverzeichnissen rekursiv, um Schreibberechtigungen für die Gruppe hinzuzufügen.

   ```
   find /var/www -type f -exec sudo chmod 0664 {} \;
   ```

Jetzt kann `ec2-user` (und jedes künftige Mitglied der `apache`-Gruppe) im Dokumentstammverzeichnis von Apache Dateien hinzufügen, löschen und bearbeiten. Damit haben Sie die Möglichkeit, Inhalte hinzuzufügen, z. B. eine statische Website oder eine PHP-Anwendung. 

**Anmerkung**  
Ein Webserver, auf dem HTTP ausgeführt wird, bietet keine Transportsicherheit für die gesendeten oder empfangenen Daten. Wenn Sie über einen Webbrowser eine Verbindung mit einem HTTP-Server herstellen, sind viele Informationen überall auf dem Netzwerkpfad für Lauscher zugänglich. Zu diesen Informationen gehören URLs die von Ihnen besuchten Websites, die Inhalte von Webseiten, die Sie erhalten, und die Inhalte (einschließlich Passwörter) aller HTML-Formulare.   
Die bewährte Methode, Ihren Webserver abzusichern, besteht darin, Unterstützung für HTTPS (HTTP Secure) zu installieren. Dieses Protokoll schützt Ihre Daten durch SSL/TLS Verschlüsselung. Weitere Informationen finden Sie unter [Tutorial: Configure SSL/TLS with the Amazon Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-ami.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

## Herstellen der Verbindung zwischen Ihrem Apache-Webserver und Ihrer DB-Instance
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer.PHPContent"></a>

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`.

   ```
   cd /var/www
   mkdir inc
   cd inc
   ```

1. 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.

   ```
   >dbinfo.inc
   nano dbinfo.inc
   ```

1. Fügen Sie der Datei `dbinfo.inc` die folgenden Inhalte hinzu. Hier *db\$1instance\$1endpoint* ist Ihr DB-Instance-Endpunkt, der , ohne den Port, für 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.  
Stellen Sie sicher, dass Sie `master password` in Ihrer Anwendung in ein geeignetes Passwort ändern.

   ```
   <?php
   
   define('DB_SERVER', 'db_instance_endpoint');
   define('DB_USERNAME', 'tutorial_user');
   define('DB_PASSWORD', 'master password');
   define('DB_DATABASE', 'sample');
   ?>
   ```

1. Speichern und schließen Sie die Datei `dbinfo.inc`. Wenn Sie Nano verwenden, speichern und schließen Sie die Datei mit Strg\$1S und Strg\$1X.

1. Ändern Sie das Verzeichnis in `/var/www/html`.

   ```
   cd /var/www/html
   ```

1. 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.

   ```
   >SamplePage.php
   nano SamplePage.php
   ```

1. Fügen Sie der Datei `SamplePage.php` die folgenden Inhalte hinzu:

------
#### [ MariaDB & MySQL ]

   ```
   <?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;
   }
   ?>
   ```

------
#### [ PostgreSQL ]

   ```
   <?php include "../inc/dbinfo.inc"; ?>
   
   <html>
   <body>
   <h1>Sample page</h1>
   <?php
   
   /* Connect to PostgreSQL and select the database. */
   $constring = "host=" . DB_SERVER . " dbname=" . DB_DATABASE . " user=" . DB_USERNAME . " password=" . DB_PASSWORD ;
   $connection = pg_connect($constring);
   
   if (!$connection){
    echo "Failed to connect to PostgreSQL";
    exit;
   }
   
   /* 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 = pg_query($connection, "SELECT * FROM EMPLOYEES");
   
   while($query_data = pg_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
   
     pg_free_result($result);
     pg_close($connection);
   ?>
   </body>
   </html>
   
   
   <?php
   
   /* Add an employee to the table. */
   function AddEmployee($connection, $name, $address) {
      $n = pg_escape_string($name);
      $a = pg_escape_string($address);
      echo "Forming Query";
      $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
   
      if(!pg_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 serial PRIMARY KEY,
            NAME VARCHAR(45),
            ADDRESS VARCHAR(90)
          )";
   
        if(!pg_query($connection, $query)) echo("<p>Error creating table.</p>"); 
     }
   }
   /* Check for the existence of a table. */
   function TableExists($tableName, $connection, $dbName) {
     $t = strtolower(pg_escape_string($tableName)); //table name is case sensitive
     $d = pg_escape_string($dbName); //schema is 'public' instead of 'sample' db name so not using that
   
     $query = "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t';";
     $checktable = pg_query($connection, $query);
   
     if (pg_num_rows($checktable) >0) return true;
     return false;
   
   }
   ?>
   ```

------

1. Speichern und schließen Sie die Datei `SamplePage.php`.

1. Ü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-12-345-67-890.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. Wenn Sie überprüfen möchten, ob die Daten in die Tabelle eingefügt wurden, installieren Sie den MySQL-Client auf der Amazon-EC2-Instance. Stellen Sie dann eine Verbindung mit der DB-Instance her und führen Sie eine Abfrage der Tabelle aus. 

Informationen zum Installieren des MySQL-Clients und zum Herstellen einer Verbindung mit einer DB-Instance finden Sie unter [Herstellen einer Verbindung mit Ihrer MySQL-DB-Instance](USER_ConnectToInstance.md).

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](USER_DeleteInstance.md). Sie müssen keinen abschließenden Snapshot erstellen.
+ Um eine Amazon EC2-Instance zu beenden, folgen Sie den Anweisungen in [Beenden Ihrer Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html) im *Amazon EC2-Benutzerhandbuch*.