

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.

# Fortgeschrittene Beispiele für PHP in Elastic Beanstalk
<a name="php-samples"></a>

Um mit PHP-Anwendungen zu beginnen AWS Elastic Beanstalk, benötigen Sie ein [Anwendungsquellpaket](applications-sourcebundle.md), das Sie als erste Anwendungsversion hochladen und in einer Umgebung bereitstellen können. 

Wir empfehlen, mit einer einfachen PHP-Anwendung [QuickStart für PHP](php-quickstart.md) zu beginnen, die mit der EB-CLI bereitgestellt wird.

**Topics**
+ [Hinzufügen einer Datenbank](create_deploy_PHP.rds.md)
+ [Tutorial – Laravel](php-laravel-tutorial.md)
+ [Tutorial – CakePHP](php-cakephp-tutorial.md)
+ [Tutorial – Symfony](php-symfony-tutorial.md)
+ [Tutorial – HA-Produktion](php-ha-tutorial.md)
+ [Lernprogramm — HA WordPress](php-hawordpress-tutorial.md)
+ [Tutorial – Drupal mit hoher Verfügbarkeit](php-hadrupal-tutorial.md)

# Hinzufügen einer Amazon RDS-DB-Instance zu Ihrer PHP Elastic Beanstalk Beanstalk-Umgebung
<a name="create_deploy_PHP.rds"></a>

Dieses Thema enthält Anweisungen zum Erstellen eines Amazon RDS mit der Elastic-Beanstalk-Konsole. Sie können eine DB-Instance von Amazon Relational Database Service (Amazon RDS) verwenden, um Daten zu speichern, die von Ihrer Anwendung gesammelt und geändert wurden. Die Datenbank kann an Ihre Umgebung gekoppelt sein und von Elastic Beanstalk verwaltet werden oder sie kann als entkoppelte Datenbank erstellt und extern von einem anderen Service verwaltet werden. In dieser Anleitung wird die Datenbank an Ihre Umgebung gekoppelt und von Elastic Beanstalk verwaltet. Weitere Informationen zur Integration eines Amazon RDS mit Elastic Beanstalk finden Sie unter [Hinzufügen einer Datenbank zu Ihrer Elastic Beanstalk-Umgebung](using-features.managing.db.md).

**Topics**
+ [Hinzufügen einer DB-Instance zu Ihrer Umgebung](#php-rds-create)
+ [Herunterladen eines Treibers](#php-rds-drivers)
+ [Mit einem PDO oder My verbinden Sie sich mit einer Datenbank SQLi](#php-rds-connect)
+ [Verbinden mit einer Datenbank mit Symfony](#php-rds-symfony)

## Hinzufügen einer DB-Instance zu Ihrer Umgebung
<a name="php-rds-create"></a>

**So fügen Sie eine DB-Instance zu Ihrer Umgebung hinzu**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Database (Datenbank)** die Option **Edit (Bearbeiten)**.

1. Wählen Sie eine DB-Engine aus und geben Sie Benutzernamen und Passwort ein.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

Das Hinzufügen einer DB-Instance dauert ca. 10 Minuten. Sobald die Umgebungsaktualisierung abgeschlossen ist, stehen der Hostname der DB-Instance und andere Verbindungsinformationen über die folgenden Umgebungseigenschaften zur Verfügung:


| Eigenschaftenname | Beschreibung | Eigenschaftenwert | 
| --- | --- | --- | 
|  `RDS_HOSTNAME`  |  Der Hostname der DB-Instance.  |  Auf der Registerkarte **Connectivity & security (Konnektivität und Sicherheit)** in der Amazon RDS-Konsole: **Endpoint (Endpunkt)**.  | 
|  `RDS_PORT`  |  Der Port, über den die DB-Instance Verbindungen annimmt. Die DB-Engines haben unterschiedliche Standardwerte.  |  Auf der Registerkarte **Connectivity & security (Konnektivität und Sicherheit)** auf der Amazon RDS-Konsole: **Port**.  | 
|  `RDS_DB_NAME`  |  Der Datenbanknam, **ebdb**.  |  Auf der Registerkarte **Configuration (Konfiguration)** der Amazon RDS-Konsole: **DB-Name**.  | 
|  `RDS_USERNAME`  |  Der Benutzername, der für die Datenbank konfiguriert wurde.  |  Auf der Registerkarte **Configuration (Konfiguration)** in der Amazon RDS-Konsole: **Master username (Master-Benutzername)**.  | 
|  `RDS_PASSWORD`  |  Das Passwort, das für die Datenbank konfiguriert wurde.  |  Es ist in der Amazon RDS-Konsole nicht als Referenz angegeben.  | 

Weitere Informationen zur Konfiguration einer Datenbank-Instance in Verbindung mit einer Elastic-Beanstalk-Umgebung finden Sie unter [Hinzufügen einer Datenbank zu Ihrer Elastic Beanstalk-Umgebung](using-features.managing.db.md).

## Herunterladen eines Treibers
<a name="php-rds-drivers"></a>

Zur Verwendung von PHP Data Objects (PDO), um eine Verbindung mit der Datenbank herzustellen, installieren Sie den Treiber für die Datenbank-Engine, die Sie ausgewählt haben.
+ **MySQL** – [http://php.net/manual/en/ref.pdo-mysql.php](http://php.net/manual/en/ref.pdo-mysql.php)
+ **PostgreSQL** – [http://php.net/manual/en/ref.pdo-pgsql.php](http://php.net/manual/en/ref.pdo-pgsql.php)
+ **Oracle** – [http://php.net/manual/en/ref.pdo-oci.php](http://php.net/manual/en/ref.pdo-oci.php)
+ **SQL Server** – [http://php.net/manual/en/ref.pdo-sqlsrv.php](http://php.net/manual/en/ref.pdo-sqlsrv.php)

Weitere Informationen finden Sie unter [http://php.net/manual/en/pdo.installation.php](http://php.net/manual/en/pdo.installation.php).

## Mit einem PDO oder My verbinden Sie sich mit einer Datenbank SQLi
<a name="php-rds-connect"></a>

Sie können mit `$_SERVER[`VARIABLE`]` die Verbindungsinformationen in der Umgebung lesen.

Erstellen Sie für ein PDO einen Data Source Name (DSN) bestehend aus Host, Port und Namen. Geben Sie den DSN an den [Konstruktor für das PDO](https://php.net/manual/en/pdo.construct.php) mit dem Benutzernamen und Passwort der Datenbank weiter.

**Example Verbinden mit einer RDS-Datenbank mit PDO – MySQL**  

```
<?php
$dbhost = $_SERVER['RDS_HOSTNAME'];
$dbport = $_SERVER['RDS_PORT'];
$dbname = $_SERVER['RDS_DB_NAME'];
$charset = 'utf8' ;

$dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname};charset={$charset}";
$username = $_SERVER['RDS_USERNAME'];
$password = $_SERVER['RDS_PASSWORD'];

$pdo = new PDO($dsn, $username, $password);
?>
```

Für andere Treiber ersetzen Sie `mysql` durch den Namen Ihres Treibers – `pgsql`, `oci` oder `sqlsrv`.

Übergeben Sie für My SQLi den Hostnamen, den Benutzernamen, das Passwort, den Datenbanknamen und den Port an den `mysqli` Konstruktor.

**Example Verbinden mit einer RDS-Datenbank mit mysqli\$1connect()**  

```
$link = new mysqli($_SERVER['RDS_HOSTNAME'], $_SERVER['RDS_USERNAME'], $_SERVER['RDS_PASSWORD'], $_SERVER['RDS_DB_NAME'], $_SERVER['RDS_PORT']);
```

## Verbinden mit einer Datenbank mit Symfony
<a name="php-rds-symfony"></a>

Für Symfony ab Version 3.2 können Sie mit `%env(PROPERTY_NAME)%` basierend auf den Elastic Beanstalk-Umgebungseigenschaften Datenbankparameter in einer Konfigurationsdatei festlegen.

**Example app/config/parameters.yml**  

```
parameters:
    database_driver:   pdo_mysql
    database_host:     '%env(RDS_HOSTNAME)%'
    database_port:     '%env(RDS_PORT)%'
    database_name:     '%env(RDS_DB_NAME)%'
    database_user:     '%env(RDS_USERNAME)%'
    database_password: '%env(RDS_PASSWORD)%'
```

Unter [Externe Parameter (Symfony 3.4)](http://symfony.com/doc/3.4/configuration/external_parameters.html) finden Sie weitere Informationen.

In früheren Versionen von Symfony konnte auf Umgebungsvariablen nur zugegriffen werden, wenn der Name mit `SYMFONY__` begann. Dies bedeutet, dass die für Elastic Beanstalk definierten Umgebungseigenschaften nicht zugänglich sind und Sie eigene Umgebungseigenschaften definieren müssen, um die Verbindungsdaten an Symfony zu übermitteln.

Zum Verbinden einer Datenbank mit Symfony 2 [erstellen Sie eine Umgebungseigenschaft](create_deploy_PHP.container.md#php-console-properties) für jeden Parameter. Anschließend verwenden Sie `%property.name%`, um in einer Konfigurationsdatei auf die für Symfony umgewandelte Variable zuzugreifen. Beispiel: Auf eine Umgebungseigenschaft namens `SYMFONY__DATABASE__USER` kann als `database.user` zugegriffen werden.

```
    database_user:     "%database.user%"
```

Unter [Externe Parameter (Symfony 2.8)](http://symfony.com/doc/2.8/configuration/external_parameters.html) finden Sie weitere Informationen.

# Bereitstellen einer Laravel-Anwendung in Elastic Beanstalk
<a name="php-laravel-tutorial"></a>

Laravel ist ein Open-Source-Framework model-view-controller (MVC) für PHP. Dieses Tutorial führt Sie durch den Prozess, eine Laravel-Anwendung zu generieren, sie in einer AWS Elastic Beanstalk Umgebung bereitzustellen und sie so zu konfigurieren, dass sie eine Verbindung zu einer Amazon Relational Database Service (Amazon RDS) -Datenbank-Instance herstellt.

**Topics**
+ [Voraussetzungen](#php-laravel-tutorial-prereqs)
+ [Starten einer Elastic Beanstalk-Umgebung](#php-laravel-tutorial-launch)
+ [Installieren von Laravel und Erstellen einer Website](#php-laravel-tutorial-generate)
+ [Bereitstellen der Anwendung](#php-laravel-tutorial-deploy)
+ [Konfigurieren von Composer-Einstellungen](#php-laravel-tutorial-configure)
+ [Hinzufügen einer Datenbank zu Ihrer Umgebung](#php-laravel-tutorial-database)
+ [Bereinigen](#php-laravel-tutorial-cleanup)
+ [Nächste Schritte](#php-laravel-tutorial-nextsteps)

## Voraussetzungen
<a name="php-laravel-tutorial-prereqs"></a>

In diesem Tutorial wird davon ausgegangen, dass Sie die grundlegenden Elastic Beanstalk-Operationen und die Elastic Beanstalk-Konsole kennen. Sofern noch nicht geschehen, starten Sie anhand der Anleitung in [Erfahren Sie, wie Sie mit Elastic Beanstalk loslegen können](GettingStarted.md) die erste Elastic-Beanstalk-Umgebung.

Für die Verfahren in diesem Leitfaden benötigen Sie ein Befehlszeilen-Terminal oder eine Shell für die Ausführung der Befehle. Befehle werden ggf. in Auflistungen mit einem vorangestellten Eingabeaufforderungssymbol (\$1) und dem Namen des aktuellen Verzeichnisses angezeigt.

```
~/eb-project$ this is a command
this is output
```

In Linux und macOS können Sie Ihren bevorzugten Shell- und Paket-Manager verwenden. Unter Windows können Sie [das Windows-Subsystem für Linux installieren](https://docs.microsoft.com/en-us/windows/wsl/install-win10), um eine Windows-integrierte Version von Ubuntu und Bash zu erhalten.

Laravel 6 erfordert PHP 7.2 oder höher. Außerde werden die PHP-Erweiterungen benötigt, die unter dem Thema [Serveranforderungen](https://laravel.com/docs/6.x/installation#server-requirements) in der offiziellen Laravel-Dokumentation aufgeführt sind. Folgen Sie den Anweisungen zur Installation von PHP und Composer.

Weitere Informationen zu Support und Wartung von Laravel finden Sie im Thema [Support-Richtlinie](https://laravel.com/docs/master/releases#support-policy) in der offiziellen Laravel-Dokumentation.

## Starten einer Elastic Beanstalk-Umgebung
<a name="php-laravel-tutorial-launch"></a>

Erstellen Sie mit der Elastic Beanstalk-Konsole, eine Elastic Beanstalk-Umgebung. Wählen Sie die Plattform **PHP** und übernehmen Sie die Standardeinstellungen und den Beispielcode.

**So starten Sie eine Umgebung (Konsole)**

1. [Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole über diesen vorkonfigurierten Link: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? Anwendungsname=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

1. Wählen Sie unter **Platform (Plattform)** die Plattform und die Plattformvariante aus, die mit der Sprache Ihrer Anwendung übereinstimmen.

1. Wählen Sie unter **Application code (Anwendungscode)** die Option **Sample application (Beispielanwendung)** aus.

1. Klicken Sie auf **Review and launch (Überprüfen und starten)**.

1. Sehen Sie sich die verfügbaren Optionen an. Wählen Sie die gewünschte verfügbare Option aus und wählen Sie **Create App (App erstellen)** aus.

Das Erstellen der Umgebung benötigt etwa fünf Minuten. Dabei werden die folgenden Ressourcen erstellt:
+ **EC2 Instanz** — Eine virtuelle Maschine von Amazon Elastic Compute Cloud (Amazon EC2), die für die Ausführung von Web-Apps auf der von Ihnen ausgewählten Plattform konfiguriert ist.

  Jede Plattform führt eine spezifische Gruppe von Software, Konfigurationsdateien und Skripts zur Unterstützung einer bestimmten Sprachversion, eines Frameworks, Webcontainers oder einer Kombination daraus aus. Die meisten Plattformen verwenden entweder Apache oder NGINX als Reverseproxy, der vor der Web-App platziert ist, Anforderungen weiterleitet, statische Komponenten bedient und Zugriffs- und Fehlerprotokolle generiert.
+ **Instance-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Datenverkehr auf Port 80 zulässt. Diese Ressource ermöglicht es dem HTTP-Verkehr vom Load Balancer, die EC2 Instance zu erreichen, auf der Ihre Web-App ausgeführt wird. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Load balancer (Load Balancer)**– Ein Elastic Load Balancing Load Balancer ist für die Verteilung von Anforderungen an die Instances, auf denen Ihre Anwendung ausgeführt wird, konfiguriert. Mit einem Load Balancer müssen Ihre Instances nicht mehr direkt für das Internet zugänglich gemacht werden.
+ **Load Balancer-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Verkehr auf Port 80 zulässt. Diese Ressource ermöglicht, dass HTTP-Datenverkehr aus dem Internet den Load Balancer erreicht. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Auto Scaling group (Auto Scaling-Gruppe)** – Eine Auto Scaling-Gruppe, die so konfiguriert ist, dass sie eine Instance ersetzt, wenn diese beendet wird oder nicht verfügbar ist.
+ **Amazon S3-Bucket** – Ein Speicherort für Ihren Quellcode, Protokolle und andere Artefakte, die bei der Verwendung von Elastic Beanstalk erstellt werden.
+ ** CloudWatch CloudWatch Amazon-Alarme** — Zwei Alarme, die die Auslastung der Instances in Ihrer Umgebung überwachen und ausgelöst werden, wenn die Last zu hoch oder zu niedrig ist. Wenn ein Alarm ausgelöst wird, wird Ihre Auto Scaling-Gruppe nach oben oder nach unten skaliert.
+ **CloudFormation stack** — Elastic Beanstalk verwendet CloudFormation , um die Ressourcen in Ihrer Umgebung zu starten und Konfigurationsänderungen zu propagieren. Die Ressourcen werden in einer Vorlage definiert, die Sie in der [CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation) anzeigen können.
+ **Domainname** *— Ein Domainname, der in der Form an Ihre Web-App weitergeleitet wird. *subdomain* *region*.elasticbeanstalk.com*.
**Domain-Sicherheit**  
[Um die Sicherheit Ihrer Elastic-Beanstalk-Anwendungen zu erhöhen, ist die Domain *elasticbeanstalk.com* in der Public Suffix List (PSL) registriert.](https://publicsuffix.org/)  
Wenn Sie jemals sensible Cookies im Standard-Domainnamen für Ihre Elastic Beanstalk Beanstalk-Anwendungen einrichten müssen, empfehlen wir Ihnen, Cookies mit einem `__Host-` Präfix zu verwenden, um die Sicherheit zu erhöhen. Diese Vorgehensweise schützt Ihre Domain vor Cross-Site-Request-Forgery-Versuchen (CSRF). Weitere Informationen finden Sie auf der [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes)-Seite im Mozilla Developer Network.

All diese Ressourcen werden von Elastic Beanstalk verwaltet. Wenn Sie die Umgebung beenden, werden alle darin enthaltenen Ressourcen von Elastic Beanstalk beendet.

**Anmerkung**  
Der von Elastic Beanstalk erstellte Amazon S3-Bucket wird von den Umgebungen gemeinsam genutzt und beim Beenden einer Umgebung nicht gelöscht. Weitere Informationen finden Sie unter [Verwenden von Elastic Beanstalk mit Amazon S3](AWSHowTo.S3.md).

## Installieren von Laravel und Erstellen einer Website
<a name="php-laravel-tutorial-generate"></a>

Composer kann Laravel installieren und ein Arbeitsprojekt mit einem Befehl erstellen:

```
~$ composer create-project --prefer-dist laravel/laravel eb-laravel
```

Composer installiert Laravel und seine Abhängigkeiten und generiert ein Standardprojekt.

[Wenn Sie Probleme bei der Installation von Laravel haben, lesen Sie das Installationsthema in der offiziellen Dokumentation: 6.x. https://laravel.com/docs/](https://laravel.com/docs/6.x) 

## Bereitstellen der Anwendung
<a name="php-laravel-tutorial-deploy"></a>

Erstellen Sie mit den Dateien, die von Composer erstellt wurden, ein [Quell-Bundle](applications-sourcebundle.md) . Der folgende Befehl erstellt ein Quell-Bundle mit dem Namen `laravel-default.zip`. Die Dateien im Ordner `vendor` werden ausgeschlossen, weil sie viel Platz benötigen und zum Bereitstellen der Anwendung für Elastic Beanstalk nicht erforderlich sind.

```
~/eb-laravel$ zip ../laravel-default.zip -r * .[^.]* -x "vendor/*"
```

Laden Sie das Quell-Bundle nach Elastic Beanstalk hoch, um Laravel in der Umgebung bereitzustellen.

**So stellen Sie ein Quell-Bundle bereit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie auf der Umgebungsübersichtsseite die Option **Upload and deploy (Hochladen und bereitstellen)**.

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um das Quellpaket hochzuladen.

1. Wählen Sie **Deploy (Bereitstellen)** aus.

1. Wenn die Bereitstellung abgeschlossen ist, wählen Sie die Website-URL, um Ihre Website in einer neuen Registerkarte zu öffnen.

**Anmerkung**  
Um das Quell-Bundle weiter zu optimieren, initialisieren Sie ein Git-Repository und verwenden den [Befehl `git archive`](applications-sourcebundle.md#using-features.deployment.source.git), um das Quell-Bundle zu erstellen. Das Laravel-Standardprojekt enthält eine `.gitignore`-Datei, die Git anweist, den Ordner `vendor` sowie andere Dateien, die für die Bereitstellung nicht benötigt werden, auszuschließen.

## Konfigurieren von Composer-Einstellungen
<a name="php-laravel-tutorial-configure"></a>

Klicken Sie nach Abschluss der Bereitstellung auf die URL, um die Laravel-Anwendung im Browser zu öffnen:

![\[Error message indicating no permission to access or on this server.\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/php-laravel-403.png)


Was ist das? Elastic Beanstalk bedient das Stammverzeichnis Ihres Projekts standardmäßig auf dem Stammpfad der Website. In diesem Fall liegt die Standardseite (`index.php`) jedoch eine Ebene weiter unten im `public`-Ordner. Das können Sie überprüfen, indem Sie `/public` zur URL hinzufügen. Beispiel, `http://laravel.us-east-2.elasticbeanstalk.com/public`.

Damit die Anwendung Laravel im Stammverzeichnis verwendet werden kann, konfigurieren Sie mit der Elastic Beanstalk-Konsole das *Dokumentenstammverzeichnis* der Website.

**So konfigurieren Sie das Stammverzeichnis Ihrer Website**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Updates, monitoring and logging ** (Updates, Überwachung und Protokolle) die Option **Edit** (Bearbeiten) aus.

1. Geben Sie für **Document root (Basisverzeichnis)** **/public** ein.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

1. Wenn die Aktualisierung abgeschlossen ist, klicken Sie auf die URL, um Ihre Website erneut im Browser zu öffnen.

![\[Laravel logo with navigation menu items: Documentation, Laracasts, News, Forge, GitHub.\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/php-laravel-defaultnodb.png)


So weit, so gut. Jetzt fügen Sie eine Datenbank zu Ihrer Umgebung hinzu und konfigurieren eine Verbindung mit Laravel.

## Hinzufügen einer Datenbank zu Ihrer Umgebung
<a name="php-laravel-tutorial-database"></a>

Starten Sie eine RDS-DB-Instance in Ihrer Elastic Beanstalk-Umgebung. Sie können MySQL- oder PostgreSQL-Datenbanken mit Laravel auf Elastic Beanstalk verwenden. SQLServer In diesem Beispiel wird MySQL verwendet.

**So fügen Sie Ihrer Elastic Beanstalk-Umgebung eine RDS-DB-Instance hinzu**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Database (Datenbank)** die Option **Edit (Bearbeiten)** aus.

1. Wählen Sie für **Engine** **mysql** aus.

1. Geben Sie einen Master-**username (Benutzernamen)** und ein Master-**password (Passwort)** ein. Elastic Beanstalk stellt diese Werte für Ihre Anwendung mithilfe von Umgebungseigenschaften bereit.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

Das Erstellen einer Datenbank-Instance dauert ca. zehn Minuten. Weitere Informationen zu Datenbanken, die mit einer Elastic-Beanstalk-Umgebung gekoppelt sind, finden Sie unter [Hinzufügen einer Datenbank zu Ihrer Elastic Beanstalk-Umgebung](using-features.managing.db.md).

In der Zwischenzeit können Sie Ihren Quell-Code aktualisieren, um Verbindungsinformationen aus der Umgebung zu lesen. Elastic Beanstalk bietet Verbindungsdetails mithilfe von Umgebungsvariablen an, wie z. B. `RDS_HOSTNAME`, auf die Sie in Ihrer Anwendung zugreifen können.

Die Laravel-Datenbankkonfiguration ist in einer Datei mit dem Namen `database.php` im `config`-Ordner im Projektcode gespeichert. Suchen Sie den Eintrag `mysql` und ändern Sie die Variablen `host`, `database`, `username` und `and password`, damit sie die entsprechenden Werte aus Elastic Beanstalk lesen:

**Example \$1/Eb- .php laravel/config/database**  

```
...
    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('RDS_HOSTNAME', '127.0.0.1'),
            'port' => env('RDS_PORT', '3306'),
            'database' => env('RDS_DB_NAME', 'forge'),
            'username' => env('RDS_USERNAME', 'forge'),
            'password' => env('RDS_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
...
```

Um zu überprüfen, ob die Datenbankverbindung ordnungsgemäß konfiguriert ist, fügen Sie `index.php` den Code hinzu, um eine Verbindung zur Datenbank herzustellen und fügen Code zur Standardantwort hinzu:

**Example \$1/Eb- .php laravel/public/index**  

```
...
if(DB::connection()->getDatabaseName())
{
   echo "Connected to database ".DB::connection()->getDatabaseName();
}
$response->send();
...
```

Wenn die DB-Instance den Start abgeschlossen hat, bündeln Sie die aktualisierte Anwendung und stellen Sie sie in Ihrer Umgebung bereit.

**So aktualisieren Sie Ihre Elastic Beanstalk-Umgebung**

1. Erstellen Sie ein neues Quell-Bundle:

   ```
   ~/eb-laravel$ zip ../laravel-v2-rds.zip -r * .[^.]* -x "vendor/*"
   ```

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Klicken Sie auf die Schaltfläche **Upload and Deploy (Hochladen und bereitstellen)**.

1. Wählen Sie **Browse (Durchsuchen)** und laden Sie `laravel-v2-rds.zip` hoch.

1. Wählen Sie **Bereitstellen**.

Die Bereitstellung einer neuen Version Ihrer Anwendung dauert weniger als eine Minute. Wenn die Bereitstellung abgeschlossen ist, aktualisieren Sie die Webseite erneut, um zu überprüfen, ob die Datenbankverbindung erfolgreich war:

![\[Laravel website header with navigation menu items for Documentation, Laracasts, News, Forge, and GitHub.\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/php-laravel-defaultwdb.png)


## Bereinigen
<a name="php-laravel-tutorial-cleanup"></a>

Nachdem Sie die Arbeit mit dem Demo-Code abgeschlossen haben, können Sie Ihre Umgebung beenden. [Elastic Beanstalk löscht alle zugehörigen AWS Ressourcen wie [ EC2 Amazon-Instances, [Datenbank-Instances](using-features.managing.db.md)](using-features.managing.ec2.md), [Load Balancer](using-features.managing.elb.md), Sicherheitsgruppen und Alarme.](using-features.alarms.md#using-features.alarms.title) 

Durch das Entfernen von Ressourcen wird die Elastic Beanstalk Beanstalk-Anwendung nicht gelöscht, sodass Sie jederzeit neue Umgebungen für Ihre Anwendung erstellen können.

**So beenden Sie Ihre Elastic Beanstalk Beanstalk-Umgebung über die Konsole**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Klicken Sie auf **Actions** (Aktionen) und dann auf **Terminate Environment** (Umgebung beenden).

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um die Beendigung der Umgebung zu bestätigen.

Außerdem können Sie Datenbankressourcen beenden, die außerhalb der Elastic Beanstalk-Umgebung erstellt wurden. Beim Beenden einer Amazon RDS-DB-Instance können Sie einen Snapshot erstellen und die Daten zu einem späteren Zeitpunkt in einer anderen Instance wiederherstellen.

**So beenden Sie Ihre RDS DB-Instance**

1. Öffnen Sie die [Amazon RDS-Konsole](https://console.aws.amazon.com/rds).

1. Wählen Sie **Datenbanken** aus.

1. Wählen Sie Ihre DB-Instance aus.

1. Wählen Sie **Aktionen** und anschließend **Löschen** aus.

1. Wählen Sie, ob Sie einen Snapshot erstellen, und wählen Sie anschließend **Delete (Löschen)**.

## Nächste Schritte
<a name="php-laravel-tutorial-nextsteps"></a>

Weitere Informationen über Laravel finden Sie auf der offiziellen Laravel-Website unter [laravel.com](https://laravel.com/).

Im weiteren Verlauf der Anwendungsentwicklung können Sie Umgebungen verwalten und Anwendungen bereitstellen, ohne manuell eine ZIP-Datei zu erstellen und diese in die Elastic Beanstalk-Konsole hochzuladen. Die [Elastic Beanstalk Command Line Interface](eb-cli3.md) (EB CLI) bietet easy-to-use Befehle zum Erstellen, Konfigurieren und Bereitstellen von Anwendungen in Elastic Beanstalk Beanstalk-Umgebungen von der Befehlszeile aus.

In diesem Tutorial haben Sie die Composer-Optionen mit der Elastic Beanstalk-Konsole konfiguriert. Um diese Konfiguration zum Teil der Anwendungsquelle zu machen, können Sie eine Konfigurationsdatei wie diese verwenden.

**Example .ebextensions/composer.config**  

```
option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
```

Weitere Informationen finden Sie unter [Erweiterte Umgebungsanpassung mit Konfigurationsdateien (`.ebextensions`)](ebextensions.md).

Das Ausführen einer Amazon RDS-DB-Instance in Ihrer Elastic Beanstalk-Umgebung eignet sich hervorragend für Entwicklung und Tests, sie bindet jedoch den Lebenszyklus Ihrer Datenbank an Ihre Umgebung. Anweisungen zum Herstellen einer Verbindung mit einer Datenbank, die außerhalb der Umgebung ausgeführt wird, finden Sie unter [Hinzufügen einer Amazon RDS-DB-Instance zu Ihrer PHP Elastic Beanstalk Beanstalk-Umgebung](create_deploy_PHP.rds.md).

Sofern Sie planen, die Anwendung in einer Produktionsumgebung einzusetzen, [konfigurieren Sie einen benutzerdefinierten Domainnamen](customdomains.md) für die Umgebung und [aktivieren dann HTTPS](configuring-https.md) für sichere Verbindungen.

# Bereitstellen einer CakePHP-Anwendung in Elastic Beanstalk
<a name="php-cakephp-tutorial"></a>

CakePHP ist ein Open Source MVC-Framework für PHP. In diesem Tutorial wird der Prozess für das Erstellen eines CakePHP-Projekts, dessen Bereitstellung in einer Elastic Beanstalk-Umgebung und die Konfiguration zum Herstellen einer Verbindung mit einer Amazon RDS-Datenbank-Instance erklärt.

**Topics**
+ [Voraussetzungen](#php-cakephp-tutorial-prereqs)
+ [Starten einer Elastic Beanstalk-Umgebung](#php-cakephp-tutorial-launch)
+ [Installieren von CakePHP und Erstellen einer Website](#php-cakephp-tutorial-generate)
+ [Bereitstellen der Anwendung](#php-cakephp-tutorial-deploy)
+ [Hinzufügen einer Datenbank zu Ihrer Umgebung](#php-cakephp-tutorial-database)
+ [Bereinigen](#php-cakephp-tutorial-cleanup)
+ [Nächste Schritte](#php-cakephp-tutorial-nextsteps)

## Voraussetzungen
<a name="php-cakephp-tutorial-prereqs"></a>

In diesem Tutorial wird davon ausgegangen, dass Sie die grundlegenden Elastic Beanstalk-Operationen und die Elastic Beanstalk-Konsole kennen. Sofern noch nicht geschehen, starten Sie anhand der Anleitung in [Erfahren Sie, wie Sie mit Elastic Beanstalk loslegen können](GettingStarted.md) die erste Elastic-Beanstalk-Umgebung.

Für die Verfahren in diesem Leitfaden benötigen Sie ein Befehlszeilen-Terminal oder eine Shell für die Ausführung der Befehle. Befehle werden ggf. in Auflistungen mit einem vorangestellten Eingabeaufforderungssymbol (\$1) und dem Namen des aktuellen Verzeichnisses angezeigt.

```
~/eb-project$ this is a command
this is output
```

In Linux und macOS können Sie Ihren bevorzugten Shell- und Paket-Manager verwenden. Unter Windows können Sie [das Windows-Subsystem für Linux installieren](https://docs.microsoft.com/en-us/windows/wsl/install-win10), um eine Windows-integrierte Version von Ubuntu und Bash zu erhalten.

CakePHP 4 benötigt PHP 7.4 oder höher. Außerdem benötigt es die PHP-Erweiterungen, die in der offiziellen [CakePHP-Installationsdokumentation](https://book.cakephp.org/4/en/installation.html) aufgeführt sind. Sie müssen sowohl PHP als auch Composer installieren.

## Starten einer Elastic Beanstalk-Umgebung
<a name="php-cakephp-tutorial-launch"></a>

Erstellen Sie mit der Elastic Beanstalk-Konsole, eine Elastic Beanstalk-Umgebung. Wählen Sie die Plattform **PHP** und übernehmen Sie die Standardeinstellungen und den Beispielcode.

**So starten Sie eine Umgebung (Konsole)**

1. [Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole über diesen vorkonfigurierten Link: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? Anwendungsname=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

1. Wählen Sie unter **Platform (Plattform)** die Plattform und die Plattformvariante aus, die mit der Sprache Ihrer Anwendung übereinstimmen.

1. Wählen Sie unter **Application code (Anwendungscode)** die Option **Sample application (Beispielanwendung)** aus.

1. Klicken Sie auf **Review and launch (Überprüfen und starten)**.

1. Sehen Sie sich die verfügbaren Optionen an. Wählen Sie die gewünschte verfügbare Option aus und wählen Sie **Create App (App erstellen)** aus.

Das Erstellen der Umgebung benötigt etwa fünf Minuten. Dabei werden die folgenden Ressourcen erstellt:
+ **EC2 Instanz** — Eine virtuelle Maschine von Amazon Elastic Compute Cloud (Amazon EC2), die für die Ausführung von Web-Apps auf der von Ihnen ausgewählten Plattform konfiguriert ist.

  Jede Plattform führt eine spezifische Gruppe von Software, Konfigurationsdateien und Skripts zur Unterstützung einer bestimmten Sprachversion, eines Frameworks, Webcontainers oder einer Kombination daraus aus. Die meisten Plattformen verwenden entweder Apache oder NGINX als Reverseproxy, der vor der Web-App platziert ist, Anforderungen weiterleitet, statische Komponenten bedient und Zugriffs- und Fehlerprotokolle generiert.
+ **Instance-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Datenverkehr auf Port 80 zulässt. Diese Ressource ermöglicht es dem HTTP-Verkehr vom Load Balancer, die EC2 Instance zu erreichen, auf der Ihre Web-App ausgeführt wird. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Load balancer (Load Balancer)**– Ein Elastic Load Balancing Load Balancer ist für die Verteilung von Anforderungen an die Instances, auf denen Ihre Anwendung ausgeführt wird, konfiguriert. Mit einem Load Balancer müssen Ihre Instances nicht mehr direkt für das Internet zugänglich gemacht werden.
+ **Load Balancer-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Verkehr auf Port 80 zulässt. Diese Ressource ermöglicht, dass HTTP-Datenverkehr aus dem Internet den Load Balancer erreicht. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Auto Scaling group (Auto Scaling-Gruppe)** – Eine Auto Scaling-Gruppe, die so konfiguriert ist, dass sie eine Instance ersetzt, wenn diese beendet wird oder nicht verfügbar ist.
+ **Amazon S3-Bucket** – Ein Speicherort für Ihren Quellcode, Protokolle und andere Artefakte, die bei der Verwendung von Elastic Beanstalk erstellt werden.
+ ** CloudWatch CloudWatch Amazon-Alarme** — Zwei Alarme, die die Auslastung der Instances in Ihrer Umgebung überwachen und ausgelöst werden, wenn die Last zu hoch oder zu niedrig ist. Wenn ein Alarm ausgelöst wird, wird Ihre Auto Scaling-Gruppe nach oben oder nach unten skaliert.
+ **CloudFormation stack** — Elastic Beanstalk verwendet CloudFormation , um die Ressourcen in Ihrer Umgebung zu starten und Konfigurationsänderungen zu propagieren. Die Ressourcen werden in einer Vorlage definiert, die Sie in der [CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation) anzeigen können.
+ **Domainname** *— Ein Domainname, der in der Form an Ihre Web-App weitergeleitet wird. *subdomain* *region*.elasticbeanstalk.com*.
**Domain-Sicherheit**  
[Um die Sicherheit Ihrer Elastic-Beanstalk-Anwendungen zu erhöhen, ist die Domain *elasticbeanstalk.com* in der Public Suffix List (PSL) registriert.](https://publicsuffix.org/)  
Wenn Sie jemals sensible Cookies im Standard-Domainnamen für Ihre Elastic Beanstalk Beanstalk-Anwendungen einrichten müssen, empfehlen wir Ihnen, Cookies mit einem `__Host-` Präfix zu verwenden, um die Sicherheit zu erhöhen. Diese Vorgehensweise schützt Ihre Domain vor Cross-Site-Request-Forgery-Versuchen (CSRF). Weitere Informationen finden Sie auf der [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes)-Seite im Mozilla Developer Network.

All diese Ressourcen werden von Elastic Beanstalk verwaltet. Wenn Sie die Umgebung beenden, werden alle darin enthaltenen Ressourcen von Elastic Beanstalk beendet.

**Anmerkung**  
Der von Elastic Beanstalk erstellte Amazon S3-Bucket wird von den Umgebungen gemeinsam genutzt und beim Beenden einer Umgebung nicht gelöscht. Weitere Informationen finden Sie unter [Verwenden von Elastic Beanstalk mit Amazon S3](AWSHowTo.S3.md).

## Installieren von CakePHP und Erstellen einer Website
<a name="php-cakephp-tutorial-generate"></a>

Composer kann CakePHP installieren und ein Arbeitsprojekt mit einem Befehl erstellen:

```
~$ composer create-project --prefer-dist cakephp/app eb-cake
```

Composer installiert CakePHP und etwa 20 Abhängigkeiten und generiert ein Standardprojekt.

Wenn Probleme beim Installieren von CakePHP auftreten, rufen Sie das Thema Installation in der offiziellen Dokumentation: [http://book.cakephp.org/4.0/en/installation.html](http://book.cakephp.org/4.0/en/installation.html) auf

## Bereitstellen der Anwendung
<a name="php-cakephp-tutorial-deploy"></a>

Erstellen Sie mit den Dateien, die von Composer erstellt wurden, ein [Quell-Bundle](applications-sourcebundle.md) . Der folgende Befehl erstellt ein Quell-Bundle mit dem Namen `cake-default.zip`. Die Dateien im Ordner `vendor` werden ausgeschlossen, weil sie viel Platz benötigen und zum Bereitstellen der Anwendung für Elastic Beanstalk nicht erforderlich sind.

```
eb-cake zip ../cake-default.zip -r * .[^.]* -x "vendor/*"
```

Laden Sie das Quell-Bundle nach Elastic Beanstalk hoch, um CakePHP in der Umgebung bereitzustellen.

**So stellen Sie ein Quell-Bundle bereit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie auf der Umgebungsübersichtsseite die Option **Upload and deploy (Hochladen und bereitstellen)**.

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um das Quellpaket hochzuladen.

1. Wählen Sie **Deploy (Bereitstellen)** aus.

1. Wenn die Bereitstellung abgeschlossen ist, wählen Sie die Website-URL, um Ihre Website in einer neuen Registerkarte zu öffnen.

**Anmerkung**  
Um das Quell-Bundle weiter zu optimieren, initialisieren Sie ein Git-Repository und verwenden den [Befehl `git archive`](applications-sourcebundle.md#using-features.deployment.source.git), um das Quell-Bundle zu erstellen. Das Symfony-Standardprojekt enthält eine `.gitignore`-Datei, die Git anweist, den Ordner `vendor` sowie andere Dateien auszuschließen, die für die Bereitstellung nicht benötigt werden.

Wenn der Vorgang abgeschlossen ist, klicken Sie auf die URL, um Ihre CakePHP-Anwendung im Browser zu öffnen.

So weit, so gut. Anschließend fügen Sie Ihrer Umgebung eine Datenbank hinzu und konfigurieren eine CakePHP-Verbindung.

## Hinzufügen einer Datenbank zu Ihrer Umgebung
<a name="php-cakephp-tutorial-database"></a>

Starten Sie in Ihrer Elastic Beanstalk-Umgebung eine Amazon RDS-Datenbank-Instance. Sie können MySQL- oder PostgreSQL-Datenbanken mit CakePHP auf Elastic Beanstalk verwenden. SQLServer In diesem Beispiel wird PostgreSQL verwendet.

**So fügen Sie Ihrer Elastic Beanstalk-Umgebung eine Amazon RDS-DB-Instance hinzu**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie unter **Database (Datenbank)** die Option **Edit (Bearbeiten)**.

1. Wählen Sie für **DB engine** **postgres** aus.

1. Geben Sie einen Master-**username (Benutzernamen)** und ein Master-**password (Passwort)** ein. Elastic Beanstalk stellt diese Werte für Ihre Anwendung mithilfe von Umgebungseigenschaften bereit.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

Das Erstellen einer Datenbank-Instance dauert ca. zehn Minuten. In der Zwischenzeit können Sie Ihren Quell-Code aktualisieren, um Verbindungsinformationen aus der Umgebung zu lesen. Elastic Beanstalk bietet Verbindungsdetails mithilfe von Umgebungsvariablen, wie z. B. `RDS_HOSTNAME`, auf die Sie in Ihrer Anwendung zugreifen können.

Die CakePHP-Datenbankkonfiguration befindet sich in der Datei `app.php` im `config`-Ordner in Ihrem Projektcode. Öffnen Sie diese Datei und fügen Sie einigen Code hinzu, der die Umgebungsvariablen aus `$_SERVER` liest und sie den lokalen Variablen zuweist. Fügen Sie die hervorgehobenen Zeilen im untenstehenden Beispiel nach der ersten Zeile ein (`<?php`):

**Example \$1/Eb- .php cake/config/app**  

```
<?php
if (!defined('RDS_HOSTNAME')) {
  define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']);
  define('RDS_USERNAME', $_SERVER['RDS_USERNAME']);
  define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']);
  define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']);
}
return [
...
```

Die Datenbankverbindung wird weiter unten in `app.php` konfiguriert. Suchen Sie den folgenden Abschnitt und ändern Sie die Standard-Datenquellenkonfiguration mit dem Namen des Treibers für Ihre Datenbank-Engine (`Mysql`, `Sqlserver` oder `Postgres`). Legen Sie die `host`-, `username`-, `password`- und `database`-Variablen fest, damit sie die entsprechenden Werte aus Elastic Beanstalk lesen:

**Example \$1/Eb-.php cake/config/app**  

```
...
     /**
     * Connection information used by the ORM to connect
     * to your application's datastores.
     * Drivers include Mysql Postgres Sqlite Sqlserver
     * See vendor\cakephp\cakephp\src\Database\Driver for complete list
     */
    'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Postgres',
            'persistent' => false,
            'host' => RDS_HOSTNAME,
            /*
             * CakePHP will use the default DB port based on the driver selected
             * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
             * the following line and set the port accordingly
             */
            //'port' => 'non_standard_port_number',
            'username' => RDS_USERNAME,
            'password' => RDS_PASSWORD,
            'database' => RDS_DB_NAME,
            /*
             * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6).
             */
            //'encoding' => 'utf8mb4',
            'timezone' => 'UTC',
            'flags' => [],
            'cacheMetadata' => true,
            'log' => false,
...
```

Wenn die DB-Instance den Start abgeschlossen hat, bündeln Sie die aktualisierte Anwendung und stellen Sie sie in Ihrer Umgebung bereit:

**So aktualisieren Sie Ihre Elastic Beanstalk-Umgebung**

1. Erstellen Sie ein neues Quell-Bundle:

   ```
   ~/eb-cake$ zip ../cake-v2-rds.zip -r * .[^.]* -x "vendor/*"
   ```

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Klicken Sie auf die Schaltfläche **Upload and Deploy (Hochladen und bereitstellen)**.

1. Wählen Sie **Browse (Durchsuchen)** und laden Sie `cake-v2-rds.zip` hoch.

1. Wählen Sie **Bereitstellen**.

Die Bereitstellung einer neuen Version Ihrer Anwendung dauert weniger als eine Minute. Wenn die Bereitstellung abgeschlossen ist, aktualisieren Sie die Webseite erneut, um zu überprüfen, ob die Datenbankverbindung erfolgreich war:

![\[Green checkmark icon indicating successful database connection for CakePHP.\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/php-cakephp-defaultwdb.png)


## Bereinigen
<a name="php-cakephp-tutorial-cleanup"></a>

Nachdem Sie die Arbeit mit dem Demo-Code abgeschlossen haben, können Sie Ihre Umgebung beenden. [Elastic Beanstalk löscht alle zugehörigen AWS Ressourcen wie [ EC2 Amazon-Instances, [Datenbank-Instances](using-features.managing.db.md)](using-features.managing.ec2.md), [Load Balancer](using-features.managing.elb.md), Sicherheitsgruppen und Alarme.](using-features.alarms.md#using-features.alarms.title) 

Durch das Entfernen von Ressourcen wird die Elastic Beanstalk Beanstalk-Anwendung nicht gelöscht, sodass Sie jederzeit neue Umgebungen für Ihre Anwendung erstellen können.

**So beenden Sie Ihre Elastic Beanstalk Beanstalk-Umgebung von der Konsole aus**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Klicken Sie auf **Actions** (Aktionen) und dann auf **Terminate Environment** (Umgebung beenden).

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um die Beendigung der Umgebung zu bestätigen.

Außerdem können Sie Datenbankressourcen beenden, die außerhalb der Elastic Beanstalk-Umgebung erstellt wurden. Beim Beenden einer Amazon RDS-DB-Instance können Sie einen Snapshot erstellen und die Daten zu einem späteren Zeitpunkt in einer anderen Instance wiederherstellen.

**So beenden Sie Ihre RDS DB-Instance**

1. Öffnen Sie die [Amazon RDS-Konsole](https://console.aws.amazon.com/rds).

1. Wählen Sie **Datenbanken** aus.

1. Wählen Sie Ihre DB-Instance aus.

1. Wählen Sie **Aktionen** und anschließend **Löschen** aus.

1. Wählen Sie, ob Sie einen Snapshot erstellen, und wählen Sie anschließend **Delete (Löschen)**.

## Nächste Schritte
<a name="php-cakephp-tutorial-nextsteps"></a>

Weitere Informationen zu CakePHP finden Sie in dem Buch unter [book.cakephp.org](http://book.cakephp.org/4.0/en/index.html).

Im weiteren Verlauf der Anwendungsentwicklung können Sie Umgebungen verwalten und Anwendungen bereitstellen, ohne manuell eine ZIP-Datei zu erstellen und diese in die Elastic Beanstalk-Konsole hochzuladen. Die [Elastic Beanstalk Command Line Interface](eb-cli3.md) (EB CLI) bietet easy-to-use Befehle zum Erstellen, Konfigurieren und Bereitstellen von Anwendungen in Elastic Beanstalk Beanstalk-Umgebungen von der Befehlszeile aus.

Das Ausführen einer Amazon RDS-DB-Instance in Ihrer Elastic Beanstalk-Umgebung eignet sich hervorragend für Entwicklung und Tests, sie bindet jedoch den Lebenszyklus Ihrer Datenbank an Ihre Umgebung. Anweisungen zum Herstellen einer Verbindung mit einer Datenbank, die außerhalb der Umgebung ausgeführt wird, finden Sie unter [Hinzufügen einer Amazon RDS-DB-Instance zu Ihrer PHP Elastic Beanstalk Beanstalk-Umgebung](create_deploy_PHP.rds.md).

Sofern Sie planen, die Anwendung in einer Produktionsumgebung einzusetzen, [konfigurieren Sie einen benutzerdefinierten Domainnamen](customdomains.md) für die Umgebung und [aktivieren dann HTTPS](configuring-https.md) für sichere Verbindungen.

# Bereitstellen einer Symfony-Anwendung in Elastic Beanstalk
<a name="php-symfony-tutorial"></a>

[Symfony](http://symfony.com/) ist ein Open-Source-Framework für die Entwicklung dynamischer PHP-Webanwendungen. Dieses Tutorial führt Sie durch den Prozess der Generierung einer Symfony-Anwendung und deren Bereitstellung in einer AWS Elastic Beanstalk Umgebung.

**Topics**
+ [Voraussetzungen](#php-symfony-tutorial-prereqs)
+ [Starten einer Elastic Beanstalk-Umgebung](#php-symfony-tutorial-launch)
+ [Installieren von Symfony und Generieren einer Website](#php-symfony-tutorial-generate)
+ [Bereitstellen der Anwendung](#php-symfony-tutorial-deploy)
+ [Konfigurieren von Composer-Einstellungen](#php-symfony-tutorial-configure)
+ [Bereinigen](#php-symfony-tutorial-cleanup)
+ [Nächste Schritte](#php-symfony-tutorial-nextsteps)

## Voraussetzungen
<a name="php-symfony-tutorial-prereqs"></a>

In diesem Tutorial wird davon ausgegangen, dass Sie die grundlegenden Elastic Beanstalk-Operationen und die Elastic Beanstalk-Konsole kennen. Sofern noch nicht geschehen, starten Sie anhand der Anleitung in [Erfahren Sie, wie Sie mit Elastic Beanstalk loslegen können](GettingStarted.md) die erste Elastic-Beanstalk-Umgebung.

Für die Verfahren in diesem Leitfaden benötigen Sie ein Befehlszeilen-Terminal oder eine Shell für die Ausführung der Befehle. Befehle werden ggf. in Auflistungen mit einem vorangestellten Eingabeaufforderungssymbol (\$1) und dem Namen des aktuellen Verzeichnisses angezeigt.

```
~/eb-project$ this is a command
this is output
```

In Linux und macOS können Sie Ihren bevorzugten Shell- und Paket-Manager verwenden. Unter Windows können Sie [das Windows-Subsystem für Linux installieren](https://docs.microsoft.com/en-us/windows/wsl/install-win10), um eine Windows-integrierte Version von Ubuntu und Bash zu erhalten.

Symfony 4.4.9 setzt PHP 7.1.3 oder höher voraus. Es benötigt auch die PHP-Erweiterungen, die unter dem Thema [Technische Anforderungen](https://symfony.com/doc/4.4/setup.html ) in der offiziellen Symfony-Installationsdokumentation aufgeführt sind. In diesem Tutorial verwenden wir PHP 7.2 und die entsprechende Elastic Beanstalk-[Plattformversion](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP). Bevor Sie fortfahren, müssen Sie sowohl PHP als auch Composer installieren.

Weitere Informationen zu Support und Wartung von Symfony finden Sie im Thema [Symfony-Versionen](https://symfony.com/releases) auf der Symfony-Website. Weitere Informationen zu Updates im Zusammenhang mit der Unterstützung der PHP-Version für Symfony 4.4.9 finden Sie im Thema [Versionshinweise zu Symfony 4.4.9](https://symfony.com/blog/symfony-4-4-9-released) auf der Symfony-Website.

## Starten einer Elastic Beanstalk-Umgebung
<a name="php-symfony-tutorial-launch"></a>

Erstellen Sie mit der Elastic Beanstalk-Konsole, eine Elastic Beanstalk-Umgebung. Wählen Sie die Plattform **PHP** und übernehmen Sie die Standardeinstellungen und den Beispielcode.

**So starten Sie eine Umgebung (Konsole)**

1. [Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole über diesen vorkonfigurierten Link: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? Anwendungsname=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

1. Wählen Sie unter **Platform (Plattform)** die Plattform und die Plattformvariante aus, die mit der Sprache Ihrer Anwendung übereinstimmen.

1. Wählen Sie unter **Application code (Anwendungscode)** die Option **Sample application (Beispielanwendung)** aus.

1. Klicken Sie auf **Review and launch (Überprüfen und starten)**.

1. Sehen Sie sich die verfügbaren Optionen an. Wählen Sie die gewünschte verfügbare Option aus und wählen Sie **Create App (App erstellen)** aus.

Das Erstellen der Umgebung benötigt etwa fünf Minuten. Dabei werden die folgenden Ressourcen erstellt:
+ **EC2 Instanz** — Eine virtuelle Maschine von Amazon Elastic Compute Cloud (Amazon EC2), die für die Ausführung von Web-Apps auf der von Ihnen ausgewählten Plattform konfiguriert ist.

  Jede Plattform führt eine spezifische Gruppe von Software, Konfigurationsdateien und Skripts zur Unterstützung einer bestimmten Sprachversion, eines Frameworks, Webcontainers oder einer Kombination daraus aus. Die meisten Plattformen verwenden entweder Apache oder NGINX als Reverseproxy, der vor der Web-App platziert ist, Anforderungen weiterleitet, statische Komponenten bedient und Zugriffs- und Fehlerprotokolle generiert.
+ **Instance-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Datenverkehr auf Port 80 zulässt. Diese Ressource ermöglicht es dem HTTP-Verkehr vom Load Balancer, die EC2 Instance zu erreichen, auf der Ihre Web-App ausgeführt wird. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Load balancer (Load Balancer)**– Ein Elastic Load Balancing Load Balancer ist für die Verteilung von Anforderungen an die Instances, auf denen Ihre Anwendung ausgeführt wird, konfiguriert. Mit einem Load Balancer müssen Ihre Instances nicht mehr direkt für das Internet zugänglich gemacht werden.
+ **Load Balancer-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Verkehr auf Port 80 zulässt. Diese Ressource ermöglicht, dass HTTP-Datenverkehr aus dem Internet den Load Balancer erreicht. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Auto Scaling group (Auto Scaling-Gruppe)** – Eine Auto Scaling-Gruppe, die so konfiguriert ist, dass sie eine Instance ersetzt, wenn diese beendet wird oder nicht verfügbar ist.
+ **Amazon S3-Bucket** – Ein Speicherort für Ihren Quellcode, Protokolle und andere Artefakte, die bei der Verwendung von Elastic Beanstalk erstellt werden.
+ ** CloudWatch CloudWatch Amazon-Alarme** — Zwei Alarme, die die Auslastung der Instances in Ihrer Umgebung überwachen und ausgelöst werden, wenn die Last zu hoch oder zu niedrig ist. Wenn ein Alarm ausgelöst wird, wird Ihre Auto Scaling-Gruppe nach oben oder nach unten skaliert.
+ **CloudFormation stack** — Elastic Beanstalk verwendet CloudFormation , um die Ressourcen in Ihrer Umgebung zu starten und Konfigurationsänderungen zu propagieren. Die Ressourcen werden in einer Vorlage definiert, die Sie in der [CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation) anzeigen können.
+ **Domainname** *— Ein Domainname, der in der Form an Ihre Web-App weitergeleitet wird. *subdomain* *region*.elasticbeanstalk.com*.
**Domain-Sicherheit**  
[Um die Sicherheit Ihrer Elastic-Beanstalk-Anwendungen zu erhöhen, ist die Domain *elasticbeanstalk.com* in der Public Suffix List (PSL) registriert.](https://publicsuffix.org/)  
Wenn Sie jemals sensible Cookies im Standard-Domainnamen für Ihre Elastic Beanstalk Beanstalk-Anwendungen einrichten müssen, empfehlen wir Ihnen, Cookies mit einem `__Host-` Präfix zu verwenden, um die Sicherheit zu erhöhen. Diese Vorgehensweise schützt Ihre Domain vor Cross-Site-Request-Forgery-Versuchen (CSRF). Weitere Informationen finden Sie auf der [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes)-Seite im Mozilla Developer Network.

All diese Ressourcen werden von Elastic Beanstalk verwaltet. Wenn Sie die Umgebung beenden, werden alle darin enthaltenen Ressourcen von Elastic Beanstalk beendet.

**Anmerkung**  
Der von Elastic Beanstalk erstellte Amazon S3-Bucket wird von den Umgebungen gemeinsam genutzt und beim Beenden einer Umgebung nicht gelöscht. Weitere Informationen finden Sie unter [Verwenden von Elastic Beanstalk mit Amazon S3](AWSHowTo.S3.md).

## Installieren von Symfony und Generieren einer Website
<a name="php-symfony-tutorial-generate"></a>

Composer kann Symfony installieren und ein Arbeitsprojekt mit einem Befehl erstellen:

```
~$ composer create-project symfony/website-skeleton eb-symfony
```

Composer installiert Symfony und seine Abhängigkeiten und generiert ein Standardprojekt.

Wenn Probleme bei der Installation von Symfony auftreten, rufen Sie das [Thema Installation](https://symfony.com/doc/4.4/setup.html) in der offiziellen Symfony-Dokumentation auf.

## Bereitstellen der Anwendung
<a name="php-symfony-tutorial-deploy"></a>

Rufen Sie das Projektverzeichnis auf.

```
~$ cd eb-symfony
```

Erstellen Sie mit den Dateien, die von Composer erstellt wurden, ein [Quell-Bundle](applications-sourcebundle.md) . Der folgende Befehl erstellt ein Quell-Bundle mit dem Namen `symfony-default.zip`. Die Dateien im Ordner `vendor` werden ausgeschlossen, weil sie viel Platz benötigen und zum Bereitstellen der Anwendung für Elastic Beanstalk nicht erforderlich sind.

```
eb-symfony$ zip ../symfony-default.zip -r * .[^.]* -x "vendor/*"
```

Laden Sie das Quell-Bundle nach Elastic Beanstalk hoch, um Symfony in der Umgebung bereitzustellen.

**So stellen Sie ein Quell-Bundle bereit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie auf der Umgebungsübersichtsseite die Option **Upload and deploy (Hochladen und bereitstellen)**.

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um das Quellpaket hochzuladen.

1. Wählen Sie **Deploy (Bereitstellen)** aus.

1. Wenn die Bereitstellung abgeschlossen ist, wählen Sie die Website-URL, um Ihre Website in einer neuen Registerkarte zu öffnen.

**Anmerkung**  
Um das Quell-Bundle weiter zu optimieren, initialisieren Sie ein Git-Repository und verwenden den [Befehl `git archive`](applications-sourcebundle.md#using-features.deployment.source.git), um das Quell-Bundle zu erstellen. Das Symfony-Standardprojekt enthält eine `.gitignore`-Datei, die Git anweist, den Ordner `vendor` sowie andere Dateien auszuschließen, die für die Bereitstellung nicht benötigt werden.

## Konfigurieren von Composer-Einstellungen
<a name="php-symfony-tutorial-configure"></a>

Klicken Sie nach Abschluss der Bereitstellung auf die URL, um die Symfony-Anwendung im Browser zu öffnen.

Was ist das? Standardmäßig bedient Elastic Beanstalk das Stammverzeichnis Ihres Projekts im Stammpfad der Website. In diesem Fall liegt die Standardseite (`app.php`) jedoch eine Ebene weiter unten im `web`-Ordner. Das können Sie überprüfen, indem Sie `/public` zur URL hinzufügen. Beispiel, `http://symfony.us-east-2.elasticbeanstalk.com/public`.

Damit die Anwendung Symfony vom Stammverzeichnis aus genutzt werden kann, konfigurieren Sie mit der Elastic Beanstalk-Konsole das *Dokumentenstammverzeichnis* für die Website.

**So konfigurieren Sie das Stammverzeichnis Ihrer Website**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Updates, monitoring and logging ** (Updates, Überwachung und Protokolle) die Option **Edit** (Bearbeiten) aus.

1. Geben Sie für **Document root (Basisverzeichnis)** **/public** ein.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

1. Wenn die Aktualisierung abgeschlossen ist, klicken Sie auf die URL, um Ihre Website erneut im Browser zu öffnen.

## Bereinigen
<a name="php-symfony-tutorial-cleanup"></a>

Nachdem Sie die Arbeit mit dem Demo-Code abgeschlossen haben, können Sie Ihre Umgebung beenden. [Elastic Beanstalk löscht alle zugehörigen AWS Ressourcen wie [ EC2 Amazon-Instances, [Datenbank-Instances](using-features.managing.db.md)](using-features.managing.ec2.md), [Load Balancer](using-features.managing.elb.md), Sicherheitsgruppen und Alarme.](using-features.alarms.md#using-features.alarms.title) 

Durch das Entfernen von Ressourcen wird die Elastic Beanstalk Beanstalk-Anwendung nicht gelöscht, sodass Sie jederzeit neue Umgebungen für Ihre Anwendung erstellen können.

**So beenden Sie Ihre Elastic Beanstalk Beanstalk-Umgebung über die Konsole**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Klicken Sie auf **Actions** (Aktionen) und dann auf **Terminate Environment** (Umgebung beenden).

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um die Beendigung der Umgebung zu bestätigen.

## Nächste Schritte
<a name="php-symfony-tutorial-nextsteps"></a>

Weitere Informationen über Symfony finden Sie in [Was ist Symfony?](https://symfony.com/what-is-symfony) unter symfony.com.

Im weiteren Verlauf der Anwendungsentwicklung können Sie Umgebungen verwalten und Anwendungen bereitstellen, ohne manuell eine ZIP-Datei zu erstellen und diese in die Elastic Beanstalk-Konsole hochzuladen. Die [Elastic Beanstalk Command Line Interface](eb-cli3.md) (EB CLI) bietet easy-to-use Befehle zum Erstellen, Konfigurieren und Bereitstellen von Anwendungen in Elastic Beanstalk Beanstalk-Umgebungen von der Befehlszeile aus.

In diesem Tutorial haben Sie die Composer-Optionen mit der Elastic Beanstalk-Konsole konfiguriert. Um diese Konfiguration zum Teil der Anwendungsquelle zu machen, können Sie eine Konfigurationsdatei wie diese verwenden.

**Example .ebextensions/composer.config**  

```
option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
```

Weitere Informationen finden Sie unter [Erweiterte Umgebungsanpassung mit Konfigurationsdateien (`.ebextensions`)](ebextensions.md).

Symfony verwendet eigener Konfigurationsdateien zum Konfigurieren von Datenbankverbindungen. Zum Abrufen bestimmter PHP-Paketversionen, die der Version auf Ihrer Elastic Beanstalk PHP-Plattformversion entsprechen, suchen Sie unter Homebrew Formulae verfügbare PHP-Versionen, wie z. B. [Verbinden mit einer Datenbank mit Symfony](create_deploy_PHP.rds.md#php-rds-symfony).

Sofern Sie planen, die Anwendung in einer Produktionsumgebung einzusetzen, [konfigurieren Sie einen benutzerdefinierten Domainnamen](customdomains.md) für die Umgebung und [aktivieren dann HTTPS](configuring-https.md) für sichere Verbindungen.

# Bereitstellen einer PHP-Anwendung mit hoher Verfügbarkeit und einer externen Amazon RDS-Datenbank für Elastic Beanstalk
<a name="php-ha-tutorial"></a>

In diesem Tutorial erfahren Sie, wie Sie eine externe [RDS-DB-Instance starten und eine](AWSHowTo.RDS.md) Hochverfügbarkeitsumgebung konfigurieren AWS Elastic Beanstalk, in der eine PHP-Anwendung ausgeführt wird, um eine Verbindung zu ihr herzustellen. Wenn Sie eine DB-Instance außerhalb von Elastic Beanstalk ausführen, wird die Datenbank vom Lebenszyklus Ihrer Umgebung abgekoppelt. Auf diese Weise können Sie mehrere Datenbank mit derselben Datenbank verbinden, eine Datenbank gegen eine andere austauschen oder eine Blau/Grün-Bereitstellung durchführen, ohne dass dies Auswirkungen auf Ihre Datenbank hat.

Das Tutorial verwendet eine [PHP-Beispielanwendung](https://github.com/awslabs/eb-demo-php-simple-app) mit einer MySQL-Datenbank zum Speichern der vom Benutzer bereitgestellten Textdaten. In der Beispielanwendung werden [Konfigurationsdateien](ebextensions.md) verwendet, um [PHP-Einstellungen](create_deploy_PHP.container.md#php-namespaces) zu konfigurieren und eine Tabelle in der Datenbank zu erstellen. Außerdem erfahren Sie, wie Sie mit einer [Composer-Datei](create_deploy_PHP.container.md#php-configuration-composer) Paketen während der Bereitstellung installieren.

**Topics**
+ [Voraussetzungen](#php-hawrds-tutorial-prereqs)
+ [Starten einer DB-Instance in Amazon RDS](#php-hawrds-tutorial-database)
+ [Erstellen einer Elastic Beanstalk-Umgebung](#php-hawrds-tutorial-create)
+ [Konfigurieren von Sicherheitsgruppen, Umgebungseigenschaften und der Skalierung](#php-hawrds-tutorial-configure)
+ [Bereitstellen der Beispielanwendung](#php-hawrds-tutorial-deploy)
+ [Bereinigen](#php-hawrds-tutorial-cleanup)
+ [Nächste Schritte](#php-hawrds-tutorial-nextsteps)

## Voraussetzungen
<a name="php-hawrds-tutorial-prereqs"></a>

[Bevor Sie beginnen, laden Sie das Quellpaket für die Beispielanwendung von GitHub: eb-demo-php-simple -app-1.3.zip herunter](https://github.com/aws-samples/eb-demo-php-simple-app/releases/download/v1.3/eb-demo-php-simple-app-v1.3.zip)

Die Verfahren in diesem Tutorial für Amazon Relational Database Service (Amazon RDS)-Aufgaben gehen davon aus, dass Sie Ressourcen in einer standardmäßigen [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) starten. Alle neuen Konten umfassen eine Standard-VPC in jeder Region. Wenn Sie nicht über eine Standard-VPC verfügen, sind die Verfahren unterschiedlich. Anweisungen [Verwenden von Elastic Beanstalk mit Amazon RDS](AWSHowTo.RDS.md) für EC2 -Classic- und benutzerdefinierte VPC-Plattformen finden Sie unter.

## Starten einer DB-Instance in Amazon RDS
<a name="php-hawrds-tutorial-database"></a>

Um eine externe Datenbank mit einer Anwendung zu verwenden, die in Elastic Beanstalk ausgeführt wird, starten Sie zuerst eine DB-Instance mit Amazon RDS. Wenn Sie eine Instance mit Amazon RDS starten, ist diese gänzlich unabhängig von Elastic Beanstalk und den Elastic Beanstalk-Umgebungen. Sie wird von Elastic Beanstalk weder beendet noch überwacht.

Verwenden Sie die Amazon RDS-Konsole, um eine DB-Instance mit **MySQL** und Multi-AZ-Bereitstellung zu starten. Eine Multi-AZ-Bereitstellung gewährleistet die Ausführung von Failovern für Ihre Datenbank, sodass sie auch bei einem Ausfall der DB-Quell-Instance verfügbar bleibt.

**So starten Sie eine RDS DB-Instance in einer Standard-VPC**

1. Öffnen Sie die [RDS-Konsole](https://console.aws.amazon.com/rds/home).

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

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

1. Wählen Sie **Standard Create (Standarderstellung)**.
**Wichtig**  
Wählen Sie nicht **Easy Create (Einfache Erstellung)** aus. Wenn Sie diese Option auswählen, können Sie die erforderlichen Einstellungen zum Starten dieser RDS-Datenbank nicht konfigurieren.

1. Geben Sie unter **Additional configuration (Zusätzliche Konfiguration)** für **Initial database name (Anfangsdatenbankname)** „**ebdb**“ ein. 

1. Überprüfen Sie die Standardeinstellungen und passen Sie diese Einstellungen an Ihre spezifischen Anforderungen an. Achten Sie auf die folgenden Optionen:
   + **DB instance class (DB-Instance-Klasse)** – Wählen Sie eine Instance-Größe, die eine geeignete Speichermenge und CPU-Leistung für den Workload bereitstellt.
   + **Multi-AZ-Bereitstellung** — Für hohe Verfügbarkeit stellen Sie diese Option auf Einen ** Replica/Reader Aurora-Knoten in einer anderen AZ erstellen ein**.
   + **Master username (Master-Benutzername)** und **Master password (Master-Passwort)** – Der Benutzername und das Passwort für die Datenbank. Notieren Sie sich diese Einstellungen, um sie später zu verwenden.

1. Überprüfen Sie die Standardeinstellungen für die übrigen Optionen und wählen Sie dann **Create database (Datenbank starten)** aus.

Bearbeiten Sie anschließend die Sicherheitsgruppe für die DB-Instance, damit eingehender Datenverkehr über den entsprechenden Port zulässig ist. Es handelt sich um die gleiche Sicherheitsgruppe, die später mit der Elastic Beanstalk-Umgebung verknüpft wird. Die von Ihnen hinzugefügte Regel gewährt damit Eingangsberechtigungen für andere Ressourcen in derselben Sicherheitsgruppe.

**So ändern Sie die Eingangsregeln für die Sicherheitsgruppe, die an Ihre RDS-Instance angehängt ist**

1. Öffnen Sie die [Amazon RDS-Konsole](https://console.aws.amazon.com/rds/home).

1. Wählen Sie **Datenbanken** aus.

1. Wählen Sie den Namen der DB-Instance, damit die Details der Instance angezeigt werden.

1. Notieren Sie im Abschnitt **Konnektivität** die auf dieser Seite angezeigten **Subnetze**, **Sicherheitsgruppen** und **Endpunkte**. Auf diese Weise können Sie diese Informationen später verwenden.

1. In **Security (Sicherheit)** wird die mit der DB-Instance verknüpfte Sicherheitsgruppe angezeigt. Öffnen Sie den Link, um die Sicherheitsgruppe in der EC2 Amazon-Konsole anzuzeigen.

1. Klicken Sie in den Details der Sicherheitsgruppe auf **Inbound (Eingehend)**.

1. Wählen Sie **Edit** aus.

1. Klicken Sie auf **Add Rule (Regel hinzufügen)**.

1. Wählen Sie unter **Type (Typ)** die von der Anwendung verwendete DB-Engine aus.

1. Geben Sie für **Source (Quelle)** **sg-** ein, um eine Liste der verfügbaren Sicherheitsgruppen anzuzeigen. Wählen Sie die Sicherheitsgruppe aus, die mit der Auto-Scaling-Gruppe verknüpft ist, die mit Ihrer Elastic-Beanstalk-Umgebung verwendet wird. Auf diese Weise können EC2 Amazon-Instances in der Umgebung auf die Datenbank zugreifen.  
![\[Bildschirmbild zum Bearbeiten der Eingangsregeln für eine Sicherheitsgruppe in der EC2 Amazon-Konsole.\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. Wählen Sie **Speichern**.

Das Erstellen einer DB-Instance dauert ca. 10 Minuten. In der Zwischenzeit erstellen Sie die Elastic Beanstalk-Umgebung.

## Erstellen einer Elastic Beanstalk-Umgebung
<a name="php-hawrds-tutorial-create"></a>

Erstellen Sie mit der Elastic Beanstalk-Konsole, eine Elastic Beanstalk-Umgebung. Wählen Sie die Plattform **PHP** und übernehmen Sie die Standardeinstellungen und den Beispielcode. Nachdem Sie die Umgebung gestartet haben, können Sie die Umgebung so konfigurieren, dass sie eine Verbindung zur Datenbank herstellt, und dann die Beispielanwendung bereitstellen, von GitHub der Sie heruntergeladen haben.

**So starten Sie eine Umgebung (Konsole)**

1. [Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole über diesen vorkonfigurierten Link: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? Anwendungsname=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

1. Wählen Sie unter **Platform (Plattform)** die Plattform und die Plattformvariante aus, die mit der Sprache Ihrer Anwendung übereinstimmen.

1. Wählen Sie unter **Application code (Anwendungscode)** die Option **Sample application (Beispielanwendung)** aus.

1. Klicken Sie auf **Review and launch (Überprüfen und starten)**.

1. Sehen Sie sich die verfügbaren Optionen an. Wählen Sie die gewünschte verfügbare Option aus und wählen Sie **Create App (App erstellen)** aus.

Das Erstellen der Umgebung benötigt etwa fünf Minuten. Dabei werden die folgenden Ressourcen erstellt:
+ **EC2 Instanz** — Eine virtuelle Maschine von Amazon Elastic Compute Cloud (Amazon EC2), die für die Ausführung von Web-Apps auf der von Ihnen ausgewählten Plattform konfiguriert ist.

  Jede Plattform führt eine spezifische Gruppe von Software, Konfigurationsdateien und Skripts zur Unterstützung einer bestimmten Sprachversion, eines Frameworks, Webcontainers oder einer Kombination daraus aus. Die meisten Plattformen verwenden entweder Apache oder NGINX als Reverseproxy, der vor der Web-App platziert ist, Anforderungen weiterleitet, statische Komponenten bedient und Zugriffs- und Fehlerprotokolle generiert.
+ **Instance-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Datenverkehr auf Port 80 zulässt. Diese Ressource ermöglicht es dem HTTP-Verkehr vom Load Balancer, die EC2 Instance zu erreichen, auf der Ihre Web-App ausgeführt wird. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Load balancer (Load Balancer)**– Ein Elastic Load Balancing Load Balancer ist für die Verteilung von Anforderungen an die Instances, auf denen Ihre Anwendung ausgeführt wird, konfiguriert. Mit einem Load Balancer müssen Ihre Instances nicht mehr direkt für das Internet zugänglich gemacht werden.
+ **Load Balancer-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Verkehr auf Port 80 zulässt. Diese Ressource ermöglicht, dass HTTP-Datenverkehr aus dem Internet den Load Balancer erreicht. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Auto Scaling group (Auto Scaling-Gruppe)** – Eine Auto Scaling-Gruppe, die so konfiguriert ist, dass sie eine Instance ersetzt, wenn diese beendet wird oder nicht verfügbar ist.
+ **Amazon S3-Bucket** – Ein Speicherort für Ihren Quellcode, Protokolle und andere Artefakte, die bei der Verwendung von Elastic Beanstalk erstellt werden.
+ ** CloudWatch CloudWatch Amazon-Alarme** — Zwei Alarme, die die Auslastung der Instances in Ihrer Umgebung überwachen und ausgelöst werden, wenn die Last zu hoch oder zu niedrig ist. Wenn ein Alarm ausgelöst wird, wird Ihre Auto Scaling-Gruppe nach oben oder nach unten skaliert.
+ **CloudFormation stack** — Elastic Beanstalk verwendet CloudFormation , um die Ressourcen in Ihrer Umgebung zu starten und Konfigurationsänderungen zu propagieren. Die Ressourcen werden in einer Vorlage definiert, die Sie in der [CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation) anzeigen können.
+ **Domainname** *— Ein Domainname, der in der Form an Ihre Web-App weitergeleitet wird. *subdomain* *region*.elasticbeanstalk.com*.
**Domain-Sicherheit**  
[Um die Sicherheit Ihrer Elastic-Beanstalk-Anwendungen zu erhöhen, ist die Domain *elasticbeanstalk.com* in der Public Suffix List (PSL) registriert.](https://publicsuffix.org/)  
Wenn Sie jemals sensible Cookies im Standard-Domainnamen für Ihre Elastic Beanstalk Beanstalk-Anwendungen einrichten müssen, empfehlen wir Ihnen, Cookies mit einem `__Host-` Präfix zu verwenden, um die Sicherheit zu erhöhen. Diese Vorgehensweise schützt Ihre Domain vor Cross-Site-Request-Forgery-Versuchen (CSRF). Weitere Informationen finden Sie auf der [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes)-Seite im Mozilla Developer Network.

All diese Ressourcen werden von Elastic Beanstalk verwaltet. Wenn Sie die Umgebung beenden, werden alle darin enthaltenen Ressourcen von Elastic Beanstalk beendet. Die RDS-DB-Instance wurde von Ihnen außerhalb der Umgebung gestartet, daher müssen Sie die Verwaltung ihres Lebenszyklus übernehmen.

**Anmerkung**  
Der von Elastic Beanstalk erstellte Amazon S3-Bucket wird von den Umgebungen gemeinsam genutzt und beim Beenden einer Umgebung nicht gelöscht. Weitere Informationen finden Sie unter [Verwenden von Elastic Beanstalk mit Amazon S3](AWSHowTo.S3.md).

## Konfigurieren von Sicherheitsgruppen, Umgebungseigenschaften und der Skalierung
<a name="php-hawrds-tutorial-configure"></a>

Fügen Sie die Sicherheitsgruppe der DB-Instance zur ausgeführten Umgebung hinzu. Dadurch stellt Elastic Beanstalk alle Instances in der Umgebung mit der zusätzlich zugeordneten Sicherheitsgruppe erneut bereit.

**So fügen Sie eine Sicherheitsgruppe zur Umgebung hinzu**
+ Gehen Sie folgendermaßen vor:
  + So fügen Sie eine Sicherheitsgruppe mit der Elastic Beanstalk-Konsole hinzu

    1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

    1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

    1. Wählen Sie in der Konfigurationskategorie **Instances** die Option **Edit (Bearbeiten)**.

    1. Wählen Sie unter **EC2 Sicherheitsgruppen** die Sicherheitsgruppe aus, die an die Instances angehängt werden soll, zusätzlich zu der Instance-Sicherheitsgruppe, die Elastic Beanstalk erstellt.

    1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

    1. Lesen Sie die Warnmeldung und klicken Sie dann auf **Bestätigen**.
  + Fügen Sie eine Sicherheitsgruppe mit einer [Konfigurationsdatei](ebextensions.md) hinzufügen. Verwenden Sie die [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config)-Beispieldatei.

Anschließend werden die Verbindungsinformationen mithilfe von Umgebungseigenschaften an die Umgebung übergeben. Die Beispielanwendung hat Standardeigenschaften, die den Eigenschaften entsprechen, die von Elastic Beanstalk im Rahmen der Datenbankbereitstellung in der Umgebung konfiguriert werden.

**So konfigurieren Sie Umgebungseigenschaften für eine DB-Instance von Amazon RDS**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Updates, monitoring and logging ** (Updates, Überwachung und Protokolle) die Option **Edit** (Bearbeiten) aus.

1. Definieren Sie im Abschnitt **Environment properties (Umgebungseigenschaften)** die Variablen, die Ihre Anwendung liest, um eine Verbindungszeichenfolge zu bilden. Zur Sicherstellung der Kompatibilität mit Umgebungen, die eine integrierte RDS-DB-Instance haben, verwenden Sie die folgenden Namen und Werte. Sie finden alle Werte außer dem Passwort in der [RDS-Konsole](https://console.aws.amazon.com/rds/home).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/php-ha-tutorial.html)  
![\[Konfigurationsabschnitt für Umgebungseigenschaften mit hinzugefügten RDS-Eigenschaften\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

Konfigurieren Sie abschließend für die Auto-Scaling-Gruppe der Umgebung eine höhere Instance-Mindestanzahl. Führen Sie immer mindestens zwei Instances aus, damit einzelne Webserver in der Umgebung keine Fehlerquelle darstellen und damit Sie Änderungen ohne Ausfallzeit der Website bereitstellen können.

**So konfigurieren Sie die Auto-Scaling-Gruppe in der Umgebung für hohe Verfügbarkeit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Capacity (Kapazität)** die Option **Edit (Bearbeiten)**.

1. Legen Sie im Abschnitt **Auto Scaling Group (Gruppe der automatischen Skalierung)** für die Option **Min instances (Min. Instances)** **2** fest.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

## Bereitstellen der Beispielanwendung
<a name="php-hawrds-tutorial-deploy"></a>

Ihre Umgebung ist jetzt bereit für die Ausführung der Beispielanwendung und die Herstellung einer Verbindung mit Amazon RDS. Stellen Sie die Beispielanwendung in Ihrer Umgebung bereit.

**Anmerkung**  
[Laden Sie das Quellpaket von herunter GitHub, falls Sie es noch nicht getan haben: -app-1.3.zip eb-demo-php-simple](https://github.com/aws-samples/eb-demo-php-simple-app/releases/download/v1.3/eb-demo-php-simple-app-v1.3.zip)

**So stellen Sie ein Quell-Bundle bereit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie auf der Umgebungsübersichtsseite die Option **Upload and deploy (Hochladen und bereitstellen)**.

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um das Quellpaket hochzuladen.

1. Wählen Sie **Deploy (Bereitstellen)** aus.

1. Wenn die Bereitstellung abgeschlossen ist, wählen Sie die Website-URL, um Ihre Website in einer neuen Registerkarte zu öffnen.

Die Website sammelt Benutzerkommentare und speichert die Daten in einer MySQL-Datenbank. Zum Hinzufügen eines Kommentars wählen Sie **Share Your Thought (Kommentar eingeben)**, geben Sie einen Kommentar ein und wählen Sie dann **Submit Your Thought (Kommentar senden)**. Die Web-App schreibt den Kommentar in die Datenbank, sodass alle Instances in der Umgebung ihn lesen können und er nicht verloren geht, wenn Instances außer Betrieb sind.

![\[User interface for sharing thoughts, with a posted comment about Elastic Beanstalk on AWS.\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/php-ha-tutorial-app.png)


## Bereinigen
<a name="php-hawrds-tutorial-cleanup"></a>

Nachdem Sie die Arbeit mit dem Demo-Code abgeschlossen haben, können Sie Ihre Umgebung beenden. [Elastic Beanstalk löscht alle zugehörigen AWS Ressourcen wie [ EC2 Amazon-Instances, [Datenbank-Instances](using-features.managing.db.md)](using-features.managing.ec2.md), [Load Balancer](using-features.managing.elb.md), Sicherheitsgruppen und Alarme.](using-features.alarms.md#using-features.alarms.title) 

Durch das Entfernen von Ressourcen wird die Elastic Beanstalk Beanstalk-Anwendung nicht gelöscht, sodass Sie jederzeit neue Umgebungen für Ihre Anwendung erstellen können.

**So beenden Sie Ihre Elastic Beanstalk Beanstalk-Umgebung über die Konsole**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Klicken Sie auf **Actions** (Aktionen) und dann auf **Terminate Environment** (Umgebung beenden).

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um die Beendigung der Umgebung zu bestätigen.

Außerdem können Sie Datenbankressourcen beenden, die außerhalb der Elastic Beanstalk-Umgebung erstellt wurden. Beim Beenden einer Amazon RDS-DB-Instance können Sie einen Snapshot erstellen und die Daten zu einem späteren Zeitpunkt in einer anderen Instance wiederherstellen.

**So beenden Sie Ihre RDS DB-Instance**

1. Öffnen Sie die [Amazon RDS-Konsole](https://console.aws.amazon.com/rds).

1. Wählen Sie **Datenbanken** aus.

1. Wählen Sie Ihre DB-Instance aus.

1. Wählen Sie **Aktionen** und anschließend **Löschen** aus.

1. Wählen Sie, ob Sie einen Snapshot erstellen, und wählen Sie anschließend **Delete (Löschen)**.

## Nächste Schritte
<a name="php-hawrds-tutorial-nextsteps"></a>

Im weiteren Verlauf der Anwendungsentwicklung können Sie Umgebungen verwalten und Anwendungen bereitstellen, ohne manuell eine ZIP-Datei zu erstellen und diese in die Elastic Beanstalk-Konsole hochzuladen. Die [Elastic Beanstalk Command Line Interface](eb-cli3.md) (EB CLI) bietet easy-to-use Befehle zum Erstellen, Konfigurieren und Bereitstellen von Anwendungen in Elastic Beanstalk Beanstalk-Umgebungen von der Befehlszeile aus.

In der Beispielanwendung werden Konfigurationsdateien verwendet, um PHP-Einstellungen zu konfigurieren und eine Tabelle in der Datenbank zu erstellen (sofern nicht bereits vorhanden). Mit einer Konfigurationsdatei können Sie zudem während des Erstellens der Umgebung die Sicherheitsgruppeneinstellungen der Instance konfigurieren und so zeitaufwendige Aktualisierungen der Konfiguration verhindern. Weitere Informationen finden Sie unter [Erweiterte Umgebungsanpassung mit Konfigurationsdateien (`.ebextensions`)](ebextensions.md).

Für die Entwicklung sowie für Tests können Sie die Elastic Beanstalk-Funktionalität nutzen und eine verwaltete DB-Instance direkt in der Umgebung hinzufügen. Detaillierte Anweisungen zum Einrichten einer Datenbank in der Umgebung finden Sie unter [Hinzufügen einer Datenbank zu Ihrer Elastic Beanstalk-Umgebung](using-features.managing.db.md).

Wenn Sie eine Datenbank mit hoher Verfügbarkeit benötigen, können Sie [Amazon Aurora](https://aws.amazon.com/rds/aurora/) verwenden. Amazon Aurora ist eine mit MySQL kompatible Datenbank-Engine, die kommerzielle Datenbank-Features bei geringen Kosten bietet. Um die Verbindung der Anwendung mit einer anderen Datenbank herzustellen, wiederholen Sie die Schritte der [Sicherheitsgruppenkonfiguration](#php-hawrds-tutorial-database) und [aktualisieren Sie die RDS-bezogenen Umgebungseigenschaften](#php-hawrds-tutorial-configure). 

Sofern Sie planen, die Anwendung in einer Produktionsumgebung einzusetzen, [konfigurieren Sie einen benutzerdefinierten Domainnamen](customdomains.md) für die Umgebung und [aktivieren dann HTTPS](configuring-https.md) für sichere Verbindungen.

# Bereitstellung einer WordPress Website mit hoher Verfügbarkeit mit einer externen Amazon RDS-Datenbank auf Elastic Beanstalk
<a name="php-hawordpress-tutorial"></a>

In diesem Tutorial wird beschrieben, wie [Sie eine externe Amazon RDS-DB-Instance starten](AWSHowTo.RDS.md) und anschließend eine Hochverfügbarkeitsumgebung konfigurieren AWS Elastic Beanstalk, auf der eine WordPress Website ausgeführt wird, um eine Verbindung zu ihr herzustellen. Die Website verwendet Amazon Elastic File System (Amazon EFS) als gemeinsamen Speicher für hochgeladene Dateien.

Wenn Sie eine DB-Instance außerhalb von Elastic Beanstalk ausführen, wird die Datenbank vom Lebenszyklus Ihrer Umgebung abgekoppelt. Auf diese Weise können Sie mehrere Umgebungen mit derselben Datenbank verbinden, eine Datenbank gegen eine andere austauschen oder eine [Blau/Grün-Bereitstellung](using-features.CNAMESwap.md) durchführen, ohne dass dies Auswirkungen auf Ihre Datenbank hat.

**Anmerkung**  
Aktuelle Informationen zur Kompatibilität von WordPress PHP-Versionen mit Versionen finden Sie unter [PHP-Kompatibilität und WordPress Versionen](https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/) auf der WordPress Website. Sie sollten sich diese Informationen ansehen, bevor Sie für Ihre WordPress Implementierungen auf eine neue Version von PHP aktualisieren.

**Topics**
+ [Voraussetzungen](#php-wordpress-tutorial-prereqs)
+ [Starten einer DB-Instance in Amazon RDS](#php-hawordpress-tutorial-database)
+ [Laden Sie herunter WordPress](#php-hawordpress-tutorial-download)
+ [Starten einer Elastic Beanstalk-Umgebung](#php-hawordpress-tutorial-launch)
+ [Konfigurieren der Sicherheitsgruppen und Umgebungseigenschaften](#php-wordpress-tutorial-configure)
+ [Konfigurieren und Bereitstellen Ihrer Anwendung](#php-wordpress-tutorial-deploy)
+ [Installieren Sie WordPress](#php-hawordpress-tutorial-install)
+ [Aktualisieren von Schlüsseln und Salts](#php-hawordpress-tutorial-updatesalts)
+ [Entfernen von Zugriffsbeschränkungen](#php-hawordpress-tutorial-updateenv)
+ [Konfigurieren der Auto-Scaling-Gruppe](#php-hawordpress-tutorial-autoscaling)
+ [Upgraden WordPress](#php-hawordpress-tutorial-upgrade)
+ [Bereinigen](#php-hawordpress-tutorial-cleanup)
+ [Nächste Schritte](#php-hawordpress-tutorial-nextsteps)

## Voraussetzungen
<a name="php-wordpress-tutorial-prereqs"></a>

In diesem Tutorial wird davon ausgegangen, dass Sie die grundlegenden Elastic Beanstalk-Operationen und die Elastic Beanstalk-Konsole kennen. Sofern noch nicht geschehen, starten Sie anhand der Anleitung in [Erfahren Sie, wie Sie mit Elastic Beanstalk loslegen können](GettingStarted.md) die erste Elastic-Beanstalk-Umgebung.

Für die Verfahren in diesem Leitfaden benötigen Sie ein Befehlszeilen-Terminal oder eine Shell für die Ausführung der Befehle. Befehle werden ggf. in Auflistungen mit einem vorangestellten Eingabeaufforderungssymbol (\$1) und dem Namen des aktuellen Verzeichnisses angezeigt.

```
~/eb-project$ this is a command
this is output
```

In Linux und macOS können Sie Ihren bevorzugten Shell- und Paket-Manager verwenden. Unter Windows können Sie [das Windows-Subsystem für Linux installieren](https://docs.microsoft.com/en-us/windows/wsl/install-win10), um eine Windows-integrierte Version von Ubuntu und Bash zu erhalten.

**Standard-VPC**  
Bei den Verfahren in diesem Tutorial für Amazon Relational Database Service (Amazon RDS) wird davon ausgegangen, dass Sie Ressourcen in einer standardmäßigen [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) starten. Alle neuen Konten enthalten eine Standard-VPC in jeder AWS Region. Wenn Sie nicht über eine Standard-VPC verfügen, sind die Verfahren unterschiedlich. Anweisungen [Verwenden von Elastic Beanstalk mit Amazon RDS](AWSHowTo.RDS.md) für EC2 -Classic- und benutzerdefinierte VPC-Plattformen finden Sie unter.

**AWS Regionen**  
Die Beispielanwendung verwendet Amazon EFS, das nur in AWS Regionen funktioniert, die Amazon EFS unterstützen. Weitere Informationen zu den unterstützten AWS Regionen finden Sie unter [Amazon Elastic File System Endpoints and Quotas](https://docs.aws.amazon.com/general/latest/gr/elasticfilesystem.html) in der *Allgemeine AWS-Referenz*.

## Starten einer DB-Instance in Amazon RDS
<a name="php-hawordpress-tutorial-database"></a>

Wenn Sie eine Instance mit Amazon RDS starten, ist diese gänzlich unabhängig von Elastic Beanstalk und den Elastic Beanstalk-Umgebungen. Sie wird von Elastic Beanstalk weder beendet noch überwacht.

In den folgenden Schritten verwenden Sie die Amazon RDS-Konsole für Folgendes:
+ Starten Sie eine Datenbank mit der **MySQL**-Engine.
+ Aktivieren Sie eine **Multi-AZ-Bereitstellung**. Dadurch wird ein Standby-Modus in einer anderen Availability Zone (AZ) eingerichtet, um Datenredundanz zu gewährleisten, Blockierungen zu vermeiden I/O und Latenzspitzen bei System-Backups zu minimieren.

**So starten Sie eine RDS DB-Instance in einer Standard-VPC**

1. Öffnen Sie die [RDS-Konsole](https://console.aws.amazon.com/rds/home).

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

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

1. Wählen Sie **Standard Create (Standarderstellung)**.
**Wichtig**  
Wählen Sie nicht **Easy Create (Einfache Erstellung)** aus. Wenn Sie diese Option auswählen, können Sie die erforderlichen Einstellungen zum Starten dieser RDS-Datenbank nicht konfigurieren.

1. Geben Sie unter **Additional configuration (Zusätzliche Konfiguration)** für **Initial database name (Anfangsdatenbankname)** „**ebdb**“ ein. 

1. Überprüfen Sie die Standardeinstellungen und passen Sie diese Einstellungen an Ihre spezifischen Anforderungen an. Achten Sie auf die folgenden Optionen:
   + **DB instance class (DB-Instance-Klasse)** – Wählen Sie eine Instance-Größe, die eine geeignete Speichermenge und CPU-Leistung für den Workload bereitstellt.
   + **Multi-AZ-Bereitstellung** — Für hohe Verfügbarkeit stellen Sie diese Option auf Einen ** Replica/Reader Aurora-Knoten in einer anderen AZ erstellen ein**.
   + **Master username (Master-Benutzername)** und **Master password (Master-Passwort)** – Der Benutzername und das Passwort für die Datenbank. Notieren Sie sich diese Einstellungen, um sie später zu verwenden.

1. Überprüfen Sie die Standardeinstellungen für die übrigen Optionen und wählen Sie dann **Create database (Datenbank starten)** aus.

Nachdem Ihre DB-Instance erstellt wurde, ändern Sie die ihr zugewiesene Sicherheitsgruppe, um eingehenden Datenverkehr auf dem entsprechenden Port zuzulassen.

**Anmerkung**  
Es handelt sich um die gleiche Sicherheitsgruppe, die später der Elastic Beanstalk-Umgebung zugewiesen wird. Die von Ihnen jetzt hinzugefügte Regel gewährt damit Eingangsberechtigungen für andere Ressourcen in derselben Sicherheitsgruppe.

**So ändern Sie die Eingangsregeln für die Sicherheitsgruppe, die an Ihre RDS-Instance angehängt ist**

1. Öffnen Sie die [Amazon RDS-Konsole](https://console.aws.amazon.com/rds/home).

1. Wählen Sie **Datenbanken** aus.

1. Wählen Sie den Namen der DB-Instance, damit die Details der Instance angezeigt werden.

1. Notieren Sie im Abschnitt **Konnektivität** die auf dieser Seite angezeigten **Subnetze**, **Sicherheitsgruppen** und **Endpunkte**. Auf diese Weise können Sie diese Informationen später verwenden.

1. In **Security (Sicherheit)** wird die mit der DB-Instance verknüpfte Sicherheitsgruppe angezeigt. Öffnen Sie den Link, um die Sicherheitsgruppe in der EC2 Amazon-Konsole anzuzeigen.

1. Klicken Sie in den Details der Sicherheitsgruppe auf **Inbound (Eingehend)**.

1. Wählen Sie **Edit** aus.

1. Klicken Sie auf **Add Rule (Regel hinzufügen)**.

1. Wählen Sie unter **Type (Typ)** die von der Anwendung verwendete DB-Engine aus.

1. Geben Sie für **Source (Quelle)** **sg-** ein, um eine Liste der verfügbaren Sicherheitsgruppen anzuzeigen. Wählen Sie die Sicherheitsgruppe aus, die mit der Auto-Scaling-Gruppe verknüpft ist, die mit Ihrer Elastic-Beanstalk-Umgebung verwendet wird. Auf diese Weise können EC2 Amazon-Instances in der Umgebung auf die Datenbank zugreifen.  
![\[Bildschirmbild zum Bearbeiten der Eingangsregeln für eine Sicherheitsgruppe in der EC2 Amazon-Konsole.\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. Wählen Sie **Speichern**.

Das Erstellen einer DB-Instance dauert ca. 10 Minuten. Laden Sie in der Zwischenzeit Ihre Elastic Beanstalk Beanstalk-Umgebung herunter WordPress und erstellen Sie sie.

## Laden Sie herunter WordPress
<a name="php-hawordpress-tutorial-download"></a>

Um die Bereitstellung WordPress vorzubereiten AWS Elastic Beanstalk, müssen Sie die WordPress Dateien auf Ihren Computer kopieren und die richtigen Konfigurationsinformationen angeben.

**Um ein WordPress Projekt zu erstellen**

1.  WordPress Von [wordpress.org](https://wordpress.org/download/) herunterladen.

   ```
   ~$curl https://wordpress.org/wordpress-6.2.tar.gz -o wordpress.tar.gz
   ```

1. Laden Sie die Konfigurationsdateien aus dem Beispielrepository herunter.

   ```
   ~$ wget https://github.com/aws-samples/eb-php-wordpress/releases/download/v1.1/eb-php-wordpress-v1.zip
   ```

1. Extrahieren WordPress und ändern Sie den Namen des Ordners.

   ```
    ~$ tar -xvf wordpress.tar.gz
    ~$ mv wordpress wordpress-beanstalk
    ~$ cd wordpress-beanstalk
   ```

1. Extrahieren Sie die Konfigurationsdateien über die WordPress Installation.

   ```
    ~/wordpress-beanstalk$ unzip ../eb-php-wordpress-v1.zip
     creating: .ebextensions/
    inflating: .ebextensions/dev.config
    inflating: .ebextensions/efs-create.config
    inflating: .ebextensions/efs-mount.config
    inflating: .ebextensions/loadbalancer-sg.config
    inflating: .ebextensions/wordpress.config
    inflating: LICENSE
    inflating: README.md
    inflating: wp-config.php
   ```

## Starten einer Elastic Beanstalk-Umgebung
<a name="php-hawordpress-tutorial-launch"></a>

Erstellen Sie mit der Elastic Beanstalk-Konsole, eine Elastic Beanstalk-Umgebung. Nachdem Sie die Umgebung gestartet haben, können Sie sie so konfigurieren, dass sie eine Verbindung zur Datenbank herstellt, und dann den WordPress Code in der Umgebung bereitstellen.

In den folgenden Schritten verwenden Sie die Elastic Beanstalk-Konsole für Folgendes:
+ Erstellen Sie eine Elastic Beanstalk-Anwendung mit der verwalteten **PHP**-Plattform.
+ Übernehmen Sie die Standardeinstellungen und den Beispielcode.

**So starten Sie eine Umgebung (Konsole)**

1. [Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole über diesen vorkonfigurierten Link: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? Anwendungsname=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

1. Wählen Sie unter **Platform (Plattform)** die Plattform und die Plattformvariante aus, die mit der Sprache Ihrer Anwendung übereinstimmen.

1. Wählen Sie unter **Application code (Anwendungscode)** die Option **Sample application (Beispielanwendung)** aus.

1. Klicken Sie auf **Review and launch (Überprüfen und starten)**.

1. Sehen Sie sich die verfügbaren Optionen an. Wählen Sie die gewünschte verfügbare Option aus und wählen Sie **Create App (App erstellen)** aus.

Das Erstellen der Umgebung dauert etwa fünf Minuten. Dabei werden die folgenden Ressourcen erstellt. 

### Elastic Beanstalk hat Ressourcen erstellt
<a name="php-hawordpress-tutorial-launch.EB-resources"></a>
+ **EC2 Instanz** — Eine virtuelle Maschine von Amazon Elastic Compute Cloud (Amazon EC2), die für die Ausführung von Web-Apps auf der von Ihnen ausgewählten Plattform konfiguriert ist.

  Jede Plattform führt eine spezifische Gruppe von Software, Konfigurationsdateien und Skripts zur Unterstützung einer bestimmten Sprachversion, eines Frameworks, Webcontainers oder einer Kombination daraus aus. Die meisten Plattformen verwenden entweder Apache oder NGINX als Reverseproxy, der vor der Web-App platziert ist, Anforderungen weiterleitet, statische Komponenten bedient und Zugriffs- und Fehlerprotokolle generiert.
+ **Instance-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Datenverkehr auf Port 80 zulässt. Diese Ressource ermöglicht es dem HTTP-Verkehr vom Load Balancer, die EC2 Instance zu erreichen, auf der Ihre Web-App ausgeführt wird. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Load balancer (Load Balancer)**– Ein Elastic Load Balancing Load Balancer ist für die Verteilung von Anforderungen an die Instances, auf denen Ihre Anwendung ausgeführt wird, konfiguriert. Mit einem Load Balancer müssen Ihre Instances nicht mehr direkt für das Internet zugänglich gemacht werden.
+ **Load Balancer-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Verkehr auf Port 80 zulässt. Diese Ressource ermöglicht, dass HTTP-Datenverkehr aus dem Internet den Load Balancer erreicht. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Auto Scaling group (Auto Scaling-Gruppe)** – Eine Auto Scaling-Gruppe, die so konfiguriert ist, dass sie eine Instance ersetzt, wenn diese beendet wird oder nicht verfügbar ist.
+ **Amazon S3-Bucket** – Ein Speicherort für Ihren Quellcode, Protokolle und andere Artefakte, die bei der Verwendung von Elastic Beanstalk erstellt werden.
+ ** CloudWatch CloudWatch Amazon-Alarme** — Zwei Alarme, die die Auslastung der Instances in Ihrer Umgebung überwachen und ausgelöst werden, wenn die Last zu hoch oder zu niedrig ist. Wenn ein Alarm ausgelöst wird, wird Ihre Auto Scaling-Gruppe nach oben oder nach unten skaliert.
+ **CloudFormation stack** — Elastic Beanstalk verwendet CloudFormation , um die Ressourcen in Ihrer Umgebung zu starten und Konfigurationsänderungen zu propagieren. Die Ressourcen werden in einer Vorlage definiert, die Sie in der [CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation) anzeigen können.
+ **Domainname** *— Ein Domainname, der in der Form an Ihre Web-App weitergeleitet wird. *subdomain* *region*.elasticbeanstalk.com*.
**Domain-Sicherheit**  
[Um die Sicherheit Ihrer Elastic-Beanstalk-Anwendungen zu erhöhen, ist die Domain *elasticbeanstalk.com* in der Public Suffix List (PSL) registriert.](https://publicsuffix.org/)  
Wenn Sie jemals sensible Cookies im Standard-Domainnamen für Ihre Elastic Beanstalk Beanstalk-Anwendungen einrichten müssen, empfehlen wir Ihnen, Cookies mit einem `__Host-` Präfix zu verwenden, um die Sicherheit zu erhöhen. Diese Vorgehensweise schützt Ihre Domain vor Cross-Site-Request-Forgery-Versuchen (CSRF). Weitere Informationen finden Sie auf der [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes)-Seite im Mozilla Developer Network.

All diese Ressourcen werden von Elastic Beanstalk verwaltet. Wenn Sie die Umgebung beenden, werden alle darin enthaltenen Ressourcen von Elastic Beanstalk beendet.

Da die Amazon RDS-Instance von Ihnen außerhalb der Umgebung gestartet wurde, müssen Sie die Verwaltung ihres Lebenszyklus übernehmen.

**Anmerkung**  
Der von Elastic Beanstalk erstellte Amazon S3-Bucket wird von den Umgebungen gemeinsam genutzt und beim Beenden einer Umgebung nicht gelöscht. Weitere Informationen finden Sie unter [Verwenden von Elastic Beanstalk mit Amazon S3](AWSHowTo.S3.md).

## Konfigurieren der Sicherheitsgruppen und Umgebungseigenschaften
<a name="php-wordpress-tutorial-configure"></a>

Fügen Sie die Sicherheitsgruppe der DB-Instance zur ausgeführten Umgebung hinzu. Dadurch stellt Elastic Beanstalk alle Instances in der Umgebung mit der zusätzlich zugeordneten Sicherheitsgruppe erneut bereit.

**So fügen Sie eine Sicherheitsgruppe zur Umgebung hinzu**
+ Gehen Sie folgendermaßen vor:
  + So fügen Sie eine Sicherheitsgruppe mit der Elastic Beanstalk-Konsole hinzu

    1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

    1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

    1. Wählen Sie in der Konfigurationskategorie **Instances** die Option **Edit (Bearbeiten)**.

    1. Wählen Sie unter **EC2 Sicherheitsgruppen** die Sicherheitsgruppe aus, die an die Instances angehängt werden soll, zusätzlich zu der Instance-Sicherheitsgruppe, die Elastic Beanstalk erstellt.

    1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

    1. Lesen Sie die Warnmeldung und klicken Sie dann auf **Bestätigen**.
  + Fügen Sie eine Sicherheitsgruppe mit einer [Konfigurationsdatei](ebextensions.md) hinzufügen. Verwenden Sie die [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config)-Beispieldatei.

Anschließend werden die Verbindungsinformationen mithilfe von Umgebungseigenschaften an die Umgebung übergeben.

Die WordPress Anwendung verwendet einen Standardsatz von Eigenschaften, die denen entsprechen, die Elastic Beanstalk konfiguriert, wenn Sie eine Datenbank in Ihrer Umgebung bereitstellen.

**So konfigurieren Sie Umgebungseigenschaften für eine DB-Instance von Amazon RDS**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Updates, monitoring and logging ** (Updates, Überwachung und Protokolle) die Option **Edit** (Bearbeiten) aus.

1. Definieren Sie im Abschnitt **Environment properties (Umgebungseigenschaften)** die Variablen, die Ihre Anwendung liest, um eine Verbindungszeichenfolge zu bilden. Zur Sicherstellung der Kompatibilität mit Umgebungen, die eine integrierte RDS-DB-Instance haben, verwenden Sie die folgenden Namen und Werte. Sie finden alle Werte außer dem Passwort in der [RDS-Konsole](https://console.aws.amazon.com/rds/home).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/php-hawordpress-tutorial.html)  
![\[Konfigurationsabschnitt für Umgebungseigenschaften mit hinzugefügten RDS-Eigenschaften\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

## Konfigurieren und Bereitstellen Ihrer Anwendung
<a name="php-wordpress-tutorial-deploy"></a>

Überprüfen Sie wie gezeigt, ob die Struktur des Ordners `wordpress-beanstalk` korrekt ist.

```
wordpress-beanstalk$ tree -aL 1
.
├── .ebextensions
├── index.php
├── LICENSE
├── license.txt
├── readme.html
├── README.md
├── wp-activate.php
├── wp-admin
├── wp-blog-header.php
├── wp-comments-post.php
├── wp-config.php
├── wp-config-sample.php
├── wp-content
├── wp-cron.php
├── wp-includes
├── wp-links-opml.php
├── wp-load.php
├── wp-login.php
├── wp-mail.php
├── wp-settings.php
├── wp-signup.php
├── wp-trackback.php
└── xmlrpc.php
```

Die angepasste Datei `wp-config.php` aus dem Projektrepository verwendet die Umgebungsvariablen, die Sie im vorherigen Schritt zum Konfigurieren der Datenbankverbindung definiert haben. Der Ordner `.ebextensions` enthält Konfigurationsdateien, die weitere Ressourcen in Ihrer Elastic Beanstalk-Umgebung erstellen.

Die Konfigurationsdateien müssen für die Arbeit mit dem Konto geändert werden. Ersetzen Sie die Platzhalterwerte in den Dateien durch die entsprechenden Werte IDs und erstellen Sie ein Quellpaket.

**So aktualisieren Sie die Konfigurationsdateien und erstellen ein Quell-Bundle**

1. Ändern Sie die Konfigurationsdateien wie folgt.
   + `.ebextensions/dev.config`— Schränkt den Zugriff auf Ihre Umgebung ein, um sie während des WordPress Installationsvorgangs zu schützen. Ersetzen Sie die Platzhalter-IP-Adresse oben in der Datei durch die öffentliche IP-Adresse des Computers, mit dem Sie auf die Website Ihrer Umgebung zugreifen und Ihre WordPress Installation abschließen möchten. 
**Anmerkung**  
Abhängig von Ihrem Netzwerk benötigen Sie möglicherweise einen IP-Adressblock.
   + `.ebextensions/efs-create.config`— Erstellt ein EFS-Dateisystem und Bereitstellungspunkte in jeder Availability Zone/subnet in Ihrer VPC. Identifizieren Sie Ihre Standard-VPC und Ihr Subnetz IDs in der [Amazon VPC-Konsole](https://console.aws.amazon.com/vpc/home#subnets:filter=default).

1. Erstellen Sie ein [Quell-Bundle](applications-sourcebundle.md) mit den Dateien im Projektordner. Der folgende Befehl erstellt ein Quell-Bundle mit dem Namen `wordpress-beanstalk.zip`.

   ```
   ~/eb-wordpress$ zip ../wordpress-beanstalk.zip -r * .[^.]*
   ```

Laden Sie das Quellpaket auf Elastic Beanstalk hoch, um es in Ihrer WordPress Umgebung bereitzustellen.

**So stellen Sie ein Quell-Bundle bereit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie auf der Umgebungsübersichtsseite die Option **Upload and deploy (Hochladen und bereitstellen)**.

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um das Quellpaket hochzuladen.

1. Wählen Sie **Deploy (Bereitstellen)** aus.

1. Wenn die Bereitstellung abgeschlossen ist, wählen Sie die Website-URL, um Ihre Website in einer neuen Registerkarte zu öffnen.

## Installieren Sie WordPress
<a name="php-hawordpress-tutorial-install"></a>

**Um Ihre WordPress Installation abzuschließen**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie die Umgebungs-URL aus, um die Website in einem Browser zu öffnen. Sie werden zu einem WordPress Installationsassistenten weitergeleitet, da Sie die Site noch nicht konfiguriert haben.

1. Führen Sie eine Standardinstallation aus. Die Datei `wp-config.php` ist bereits im Quellcode vorhanden und so konfiguriert, dass sie die Informationen für die Datenbankverbindung aus der Umgebung ausliest. Sie sollten nicht zur Verbindungskonfiguration aufgefordert werden.

Die Installation dauert etwa eine Minute.

## Aktualisieren von Schlüsseln und Salts
<a name="php-hawordpress-tutorial-updatesalts"></a>

Die WordPress Konfigurationsdatei liest `wp-config.php` auch Werte für Schlüssel und Salze aus den Umgebungseigenschaften. Zurzeit werden diese Eigenschaften alle von der Datei `test` im Ordner `wordpress.config` auf den Wert `.ebextensions` festgelegt.

Der Hash-Salt kann jeder Wert sein, der die [Anforderungen an Umgebungseigenschaften](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) erfüllt, Sie sollten ihn jedoch nicht in der Versionskontrolle speichern. Legen Sie diese Eigenschaften mithilfe der Elastic Beanstalk-Konsole direkt in der Umgebung fest.

**So aktualisieren Sie die Umgebungseigenschaften**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie unter **Software** die Option **Edit (Bearbeiten)**.

1. Ändern Sie für `Environment properties` die folgenden Eigenschaften:
   + `AUTH_KEY` – Der gewählte Wert für `AUTH_KEY`.
   + `SECURE_AUTH_KEY` – Der gewählte Wert für `SECURE_AUTH_KEY`.
   + `LOGGED_IN_KEY` – Der gewählte Wert für `LOGGED_IN_KEY`.
   + `NONCE_KEY` – Der gewählte Wert für `NONCE_KEY`.
   + `AUTH_SALT` – Der gewählte Wert für `AUTH_SALT`.
   + `SECURE_AUTH_SALT` – Der gewählte Wert für `SECURE_AUTH_SALT`.
   + `LOGGED_IN_SALT` – Der gewählte Wert für `LOGGED_IN_SALT`.
   + `NONCE_SALT` – Der gewählte Wert für `NONCE_SALT`.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

**Anmerkung**  
Wenn Sie die Eigenschaften direkt in der Umgebung festlegen, werden die Werte in `wordpress.config`überschrieben.

## Entfernen von Zugriffsbeschränkungen
<a name="php-hawordpress-tutorial-updateenv"></a>

Das Beispielprojekt enthält die Konfigurationsdatei `loadbalancer-sg.config`. Es erstellt eine Sicherheitsgruppe und weist sie dem Load Balancer der Umgebung unter Verwendung der IP-Adresse zu, die Sie in `dev.config` konfiguriert haben. Sie schränkt den HTTP-Zugriff auf Port 80 auf die Verbindungen in Ihrem Netzwerk ein. Andernfalls könnte eine externe Partei möglicherweise eine Verbindung zu Ihrer Site herstellen, bevor Sie Ihr Administratorkonto installiert WordPress und konfiguriert haben.

Nachdem Sie die Installation abgeschlossen haben WordPress, entfernen Sie die Konfigurationsdatei, um die Site der ganzen Welt zugänglich zu machen.

**So entfernen Sie die Beschränkung und aktualisieren die Umgebung**

1. Löschen Sie die Datei `.ebextensions/loadbalancer-sg.config` aus dem Projektverzeichnis.

   ```
   ~/wordpress-beanstalk$ rm .ebextensions/loadbalancer-sg.config
   ```

1. Erstellen Sie ein Quell-Bundle.

   ```
   ~/eb-wordpress$ zip ../wordpress-beanstalk-v2.zip -r * .[^.]*
   ```

Laden Sie das Quellpaket auf Elastic Beanstalk hoch, um es in Ihrer WordPress Umgebung bereitzustellen.

**So stellen Sie ein Quell-Bundle bereit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie auf der Umgebungsübersichtsseite die Option **Upload and deploy (Hochladen und bereitstellen)**.

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um das Quellpaket hochzuladen.

1. Wählen Sie **Deploy (Bereitstellen)** aus.

1. Wenn die Bereitstellung abgeschlossen ist, wählen Sie die Website-URL, um Ihre Website in einer neuen Registerkarte zu öffnen.

## Konfigurieren der Auto-Scaling-Gruppe
<a name="php-hawordpress-tutorial-autoscaling"></a>

Konfigurieren Sie abschließend für die Auto-Scaling-Gruppe der Umgebung eine höhere Instance-Mindestanzahl. Führen Sie stets mindestens zwei Instances aus, um zu verhindern, dass die Webserver in Ihrer Umgebung eine einzelne Fehlerquelle darstellen. Dadurch können Sie Änderungen bereitstellen, ohne Ihre Website außer Betrieb zu nehmen.

**So konfigurieren Sie die Auto-Scaling-Gruppe in der Umgebung für hohe Verfügbarkeit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Capacity (Kapazität)** die Option **Edit (Bearbeiten)**.

1. Legen Sie im Abschnitt **Auto Scaling Group (Gruppe der automatischen Skalierung)** für die Option **Min instances (Min. Instances)** **2** fest.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

Das Beispielprojekt erstellt mit Amazon EFS ein freigegebenes Dateisystem und ermöglicht das Hochladen von Inhalten über mehrere Instances hinweg. Erstellen Sie einen Beitrag auf der Website und laden Sie Inhalte hoch, die im freigegebenen Dateisystem gespeichert werden sollen. Zeigen Sie den Beitrag an und aktualisieren Sie die Seite mehrfach, damit Instances genutzt werden und zugleich verifiziert wird, dass das freigegebene Dateisystem funktioniert.

## Upgraden WordPress
<a name="php-hawordpress-tutorial-upgrade"></a>

Um auf eine neue Version von zu aktualisieren WordPress, sichern Sie Ihre Site und stellen Sie sie in einer neuen Umgebung bereit.

**Wichtig**  
Verwenden Sie nicht die darin enthaltene Aktualisierungsfunktion und aktualisieren Sie Ihre Quelldateien nicht, um eine neue Version zu verwenden. WordPress Beide Aktionen können dazu führen, dass Ihr Beitrag 404-Fehler URLs zurückgibt, obwohl sie sich noch in der Datenbank und im Dateisystem befinden.

**Um ein Upgrade durchzuführen WordPress**

1. Verwenden Sie in der WordPress Admin-Konsole das Export-Tool, um Ihre Beiträge in eine XML-Datei zu exportieren.

1. Stellen Sie die neue Version von WordPress to Elastic Beanstalk bereit und installieren Sie sie. Gehen Sie dabei genauso vor wie bei der Installation der vorherigen Version. Wenn Sie eine Umgebung mit der neuen Version erstellen, können Sie Ausfallzeiten vermeiden.

1. Installieren Sie in der neuen Version das WordPress Importer-Tool in der Admin-Konsole und importieren Sie damit die XML-Datei mit Ihren Posts. Wenn die Beiträge vom Benutzer "admin" mit der alten Version erstellt wurden, weisen Sie sie dem Benutzer "admin" der neuen Website zu, anstatt den Benutzer "admin" zu importieren.

1. Wenn Sie die neue Version in einer separaten Umgebung bereitgestellt haben, führen Sie einen [CNAME-Austausch](using-features.CNAMESwap.md) durch, um Benutzer von der alten zur neuen Site umzuleiten.

## Bereinigen
<a name="php-hawordpress-tutorial-cleanup"></a>

Nachdem Sie die Arbeit mit dem Demo-Code abgeschlossen haben, können Sie Ihre Umgebung beenden. [Elastic Beanstalk löscht alle zugehörigen AWS Ressourcen wie [ EC2 Amazon-Instances, [Datenbank-Instances](using-features.managing.db.md)](using-features.managing.ec2.md), [Load Balancer](using-features.managing.elb.md), Sicherheitsgruppen und Alarme.](using-features.alarms.md#using-features.alarms.title) 

Durch das Entfernen von Ressourcen wird die Elastic Beanstalk Beanstalk-Anwendung nicht gelöscht, sodass Sie jederzeit neue Umgebungen für Ihre Anwendung erstellen können.

**So beenden Sie Ihre Elastic Beanstalk Beanstalk-Umgebung von der Konsole aus**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Klicken Sie auf **Actions** (Aktionen) und dann auf **Terminate Environment** (Umgebung beenden).

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um die Beendigung der Umgebung zu bestätigen.

Außerdem können Sie Datenbankressourcen beenden, die außerhalb der Elastic Beanstalk-Umgebung erstellt wurden. Beim Beenden einer Amazon RDS-DB-Instance können Sie einen Snapshot erstellen und die Daten zu einem späteren Zeitpunkt in einer anderen Instance wiederherstellen.

**So beenden Sie Ihre RDS DB-Instance**

1. Öffnen Sie die [Amazon RDS-Konsole](https://console.aws.amazon.com/rds).

1. Wählen Sie **Datenbanken** aus.

1. Wählen Sie Ihre DB-Instance aus.

1. Wählen Sie **Aktionen** und anschließend **Löschen** aus.

1. Wählen Sie, ob Sie einen Snapshot erstellen, und wählen Sie anschließend **Delete (Löschen)**.

## Nächste Schritte
<a name="php-hawordpress-tutorial-nextsteps"></a>

Im weiteren Verlauf der Anwendungsentwicklung können Sie Umgebungen verwalten und Anwendungen bereitstellen, ohne manuell eine ZIP-Datei zu erstellen und diese in die Elastic Beanstalk-Konsole hochzuladen. Die [Elastic Beanstalk Command Line Interface](eb-cli3.md) (EB CLI) bietet easy-to-use Befehle zum Erstellen, Konfigurieren und Bereitstellen von Anwendungen in Elastic Beanstalk Beanstalk-Umgebungen von der Befehlszeile aus.

In der Beispielanwendung werden Konfigurationsdateien verwendet, um PHP-Einstellungen zu konfigurieren und eine Tabelle in der Datenbank zu erstellen (sofern nicht bereits vorhanden). Mit einer Konfigurationsdatei können Sie zudem während des Erstellens der Umgebung die Sicherheitsgruppeneinstellungen der Instance konfigurieren und so zeitaufwendige Aktualisierungen der Konfiguration verhindern. Weitere Informationen finden Sie unter [Erweiterte Umgebungsanpassung mit Konfigurationsdateien (`.ebextensions`)](ebextensions.md).

Für die Entwicklung sowie für Tests können Sie die Elastic Beanstalk-Funktionalität nutzen und eine verwaltete DB-Instance direkt in der Umgebung hinzufügen. Detaillierte Anweisungen zum Einrichten einer Datenbank in der Umgebung finden Sie unter [Hinzufügen einer Datenbank zu Ihrer Elastic Beanstalk-Umgebung](using-features.managing.db.md).

Wenn Sie eine Datenbank mit hoher Verfügbarkeit benötigen, können Sie [Amazon Aurora](https://aws.amazon.com/rds/aurora/) verwenden. Amazon Aurora ist eine mit MySQL kompatible Datenbank-Engine, die kommerzielle Datenbank-Features bei geringen Kosten bietet. Um die Verbindung der Anwendung mit einer anderen Datenbank herzustellen, wiederholen Sie die Schritte der [Sicherheitsgruppenkonfiguration](php-ha-tutorial.md#php-hawrds-tutorial-database) und [aktualisieren Sie die RDS-bezogenen Umgebungseigenschaften](php-ha-tutorial.md#php-hawrds-tutorial-configure). 

Sofern Sie planen, die Anwendung in einer Produktionsumgebung einzusetzen, [konfigurieren Sie einen benutzerdefinierten Domainnamen](customdomains.md) für die Umgebung und [aktivieren dann HTTPS](configuring-https.md) für sichere Verbindungen.

# Bereitstellen einer Drupal-Website mit hoher Verfügbarkeit und einer externen Amazon RDS-Datenbank für Elastic Beanstalk
<a name="php-hadrupal-tutorial"></a>

Dieses Tutorial führt Sie durch den Prozess des [Startens einer externen RDS-DB-Instance](AWSHowTo.RDS.md) AWS Elastic Beanstalk. Anschließend wird beschrieben, wie Sie eine hochverfügbare Umgebung konfigurieren, in der eine Drupal-Website ausgeführt wird, um eine Verbindung zu ihr herzustellen. Die Website verwendet Amazon Elastic File System (Amazon EFS) als gemeinsamen Speicher für hochgeladene Dateien. Wenn Sie eine DB-Instance außerhalb von Elastic Beanstalk ausführen, wird die Datenbank vom Lebenszyklus Ihrer Umgebung entkoppelt, sodass Sie von mehreren Umgebungen aus eine Verbindung zu derselben Datenbank herstellen, eine Datenbank gegen eine andere austauschen oder ein blue/green Deployment durchführen können, ohne dass Ihre Datenbank beeinträchtigt wird.

**Topics**
+ [Voraussetzungen](#php-hadrupal-tutorial-prereqs)
+ [Starten einer DB-Instance in Amazon RDS](#php-hadrupal-tutorial-database)
+ [Starten einer Elastic Beanstalk-Umgebung](#php-hadrupal-tutorial-launch)
+ [Konfigurieren von Sicherheitseinstellungen und Umgebungseigenschaften](#php-hadrupal-tutorial-configure)
+ [Konfigurieren und Bereitstellen Ihrer Anwendung](#php-hadrupal-tutorial-deploy)
+ [Installation von Drupal](#php-hadrupal-tutorial-install)
+ [Aktualisieren der Drupal-Konfiguration und Entfernen von Zugriffsbeschränkungen](#php-hadrupal-tutorial-updateenv)
+ [Konfigurieren der Auto-Scaling-Gruppe](#php-hadrupal-tutorial-autoscaling)
+ [Bereinigen](#php-hadrupal-tutorial-cleanup)
+ [Nächste Schritte](#php-hadrupal-tutorial-nextsteps)

## Voraussetzungen
<a name="php-hadrupal-tutorial-prereqs"></a>

In diesem Tutorial wird davon ausgegangen, dass Sie die grundlegenden Elastic Beanstalk-Operationen und die Elastic Beanstalk-Konsole kennen. Sofern noch nicht geschehen, starten Sie anhand der Anleitung in [Erfahren Sie, wie Sie mit Elastic Beanstalk loslegen können](GettingStarted.md) die erste Elastic-Beanstalk-Umgebung.

Für die Verfahren in diesem Leitfaden benötigen Sie ein Befehlszeilen-Terminal oder eine Shell für die Ausführung der Befehle. Befehle werden ggf. in Auflistungen mit einem vorangestellten Eingabeaufforderungssymbol (\$1) und dem Namen des aktuellen Verzeichnisses angezeigt.

```
~/eb-project$ this is a command
this is output
```

In Linux und macOS können Sie Ihren bevorzugten Shell- und Paket-Manager verwenden. Unter Windows können Sie [das Windows-Subsystem für Linux installieren, um eine Windows-integrierte](https://docs.microsoft.com/en-us/windows/wsl/install-win10) Version von Ubuntu und Bash zu erhalten.

Die Verfahren in diesem Tutorial für Amazon Relational Database Service (Amazon RDS)-Aufgaben gehen davon aus, dass Sie Ressourcen in einer standardmäßigen [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) starten. Alle neuen Konten umfassen eine Standard-VPC in jeder Region. Wenn Sie nicht über eine Standard-VPC verfügen, sind die Verfahren unterschiedlich. Anweisungen [Verwenden von Elastic Beanstalk mit Amazon RDS](AWSHowTo.RDS.md) für EC2 -Classic- und benutzerdefinierte VPC-Plattformen finden Sie unter.

Die Beispielanwendung verwendet Amazon EFS. Es funktioniert nur in AWS Regionen, die Amazon EFS unterstützen. Weitere Informationen zur Unterstützung von AWS Regionen finden Sie unter [Amazon Elastic File System Endpoints and Quotas](https://docs.aws.amazon.com/general/latest/gr/elasticfilesystem.html) in der *Allgemeine AWS-Referenz*.

Wenn die Plattform Ihrer Elastic Beanstalk-Umgebung PHP 7.4 oder älter verwendet, empfehlen wir Ihnen, die Drupal-Version 8.9.13 für dieses Tutorial zu verwenden. Für Plattformen, die mit PHP 8.0 oder höher installiert werden, empfehlen wir die Verwendung von Drupal 9.1.5.

Weitere Informationen zu Drupal-Versionen und den unterstützten PHP-Versionen finden Sie unter [PHP-Anforderungen](https://www.drupal.org/docs/system-requirements/php-requirements#php_required) auf der Drupal-Website. [Die von Drupal empfohlenen Kernversionen sind auf der Website https://www.drupal aufgeführt. org/project/drupal](https://www.drupal.org/project/drupal). 

## Starten einer DB-Instance in Amazon RDS
<a name="php-hadrupal-tutorial-database"></a>

Um eine externe Datenbank mit einer Anwendung zu verwenden, die in Elastic Beanstalk ausgeführt wird, starten Sie zuerst eine DB-Instance mit Amazon RDS. Wenn Sie eine Instance mit Amazon RDS starten, ist diese gänzlich unabhängig von Elastic Beanstalk und den Elastic Beanstalk-Umgebungen. Sie wird von Elastic Beanstalk weder beendet noch überwacht.

Verwenden Sie die Amazon RDS-Konsole, um eine DB-Instance mit **MySQL** und Multi-AZ-Bereitstellung zu starten. Eine Multi-AZ-Bereitstellung gewährleistet die Ausführung von Failovern für Ihre Datenbank, damit sie auch bei einem Ausfall der DB-Quell-Instance verfügbar ist.

**So starten Sie eine RDS DB-Instance in einer Standard-VPC**

1. Öffnen Sie die [RDS-Konsole](https://console.aws.amazon.com/rds/home).

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

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

1. Wählen Sie **Standard Create (Standarderstellung)**.
**Wichtig**  
Wählen Sie nicht **Easy Create (Einfache Erstellung)** aus. Wenn Sie diese Option auswählen, können Sie die erforderlichen Einstellungen zum Starten dieser RDS-Datenbank nicht konfigurieren.

1. Geben Sie unter **Additional configuration (Zusätzliche Konfiguration)** für **Initial database name (Anfangsdatenbankname)** „**ebdb**“ ein. 

1. Überprüfen Sie die Standardeinstellungen und passen Sie diese Einstellungen an Ihre spezifischen Anforderungen an. Achten Sie auf die folgenden Optionen:
   + **DB instance class (DB-Instance-Klasse)** – Wählen Sie eine Instance-Größe, die eine geeignete Speichermenge und CPU-Leistung für den Workload bereitstellt.
   + **Multi-AZ-Bereitstellung** — Für hohe Verfügbarkeit stellen Sie diese Option auf Einen ** Replica/Reader Aurora-Knoten in einer anderen AZ erstellen ein**.
   + **Master username (Master-Benutzername)** und **Master password (Master-Passwort)** – Der Benutzername und das Passwort für die Datenbank. Notieren Sie sich diese Einstellungen, um sie später zu verwenden.

1. Überprüfen Sie die Standardeinstellungen für die übrigen Optionen und wählen Sie dann **Create database (Datenbank starten)** aus.

Bearbeiten Sie anschließend die Sicherheitsgruppe für die DB-Instance, damit eingehender Datenverkehr über den entsprechenden Port zulässig ist. Es handelt sich um die gleiche Sicherheitsgruppe, die später mit der Elastic Beanstalk-Umgebung verknüpft wird. Die von Ihnen hinzugefügte Regel gewährt damit Eingangsberechtigungen für andere Ressourcen in derselben Sicherheitsgruppe.

**So ändern Sie die Eingangsregeln für die Sicherheitsgruppe, die an Ihre RDS-Instance angehängt ist**

1. Öffnen Sie die [Amazon RDS-Konsole](https://console.aws.amazon.com/rds/home).

1. Wählen Sie **Datenbanken** aus.

1. Wählen Sie den Namen der DB-Instance, damit die Details der Instance angezeigt werden.

1. Notieren Sie im Abschnitt **Konnektivität** die auf dieser Seite angezeigten **Subnetze**, **Sicherheitsgruppen** und **Endpunkte**. Auf diese Weise können Sie diese Informationen später verwenden.

1. In **Security (Sicherheit)** wird die mit der DB-Instance verknüpfte Sicherheitsgruppe angezeigt. Öffnen Sie den Link, um die Sicherheitsgruppe in der EC2 Amazon-Konsole anzuzeigen.

1. Klicken Sie in den Details der Sicherheitsgruppe auf **Inbound (Eingehend)**.

1. Wählen Sie **Edit** aus.

1. Klicken Sie auf **Add Rule (Regel hinzufügen)**.

1. Wählen Sie unter **Type (Typ)** die von der Anwendung verwendete DB-Engine aus.

1. Geben Sie für **Source (Quelle)** **sg-** ein, um eine Liste der verfügbaren Sicherheitsgruppen anzuzeigen. Wählen Sie die Sicherheitsgruppe aus, die mit der Auto-Scaling-Gruppe verknüpft ist, die mit Ihrer Elastic-Beanstalk-Umgebung verwendet wird. Auf diese Weise können EC2 Amazon-Instances in der Umgebung auf die Datenbank zugreifen.  
![\[Bildschirmbild zum Bearbeiten der Eingangsregeln für eine Sicherheitsgruppe in der EC2 Amazon-Konsole.\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. Wählen Sie **Speichern**.

Das Erstellen einer DB-Instance dauert ca. 10 Minuten. Starten Sie unterdessen die Elastic Beanstalk-Umgebung.

## Starten einer Elastic Beanstalk-Umgebung
<a name="php-hadrupal-tutorial-launch"></a>

Erstellen Sie mit der Elastic Beanstalk-Konsole, eine Elastic Beanstalk-Umgebung. Wählen Sie die Plattform **PHP** und übernehmen Sie die Standardeinstellungen und den Beispielcode. Nachdem Sie die Umgebung gestartet haben, können Sie die Umgebung für die Verbindung zur Datenbank konfigurieren und danach den Drupal-Code in der Umgebung bereitstellen.

**So starten Sie eine Umgebung (Konsole)**

1. [Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole über diesen vorkonfigurierten Link: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? Anwendungsname=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

1. Wählen Sie unter **Platform (Plattform)** die Plattform und die Plattformvariante aus, die mit der Sprache Ihrer Anwendung übereinstimmen.

1. Wählen Sie unter **Application code (Anwendungscode)** die Option **Sample application (Beispielanwendung)** aus.

1. Klicken Sie auf **Review and launch (Überprüfen und starten)**.

1. Sehen Sie sich die verfügbaren Optionen an. Wählen Sie die gewünschte verfügbare Option aus und wählen Sie **Create App (App erstellen)** aus.

Das Erstellen der Umgebung benötigt etwa fünf Minuten. Dabei werden die folgenden Ressourcen erstellt:
+ **EC2 Instanz** — Eine virtuelle Maschine von Amazon Elastic Compute Cloud (Amazon EC2), die für die Ausführung von Web-Apps auf der von Ihnen ausgewählten Plattform konfiguriert ist.

  Jede Plattform führt eine spezifische Gruppe von Software, Konfigurationsdateien und Skripts zur Unterstützung einer bestimmten Sprachversion, eines Frameworks, Webcontainers oder einer Kombination daraus aus. Die meisten Plattformen verwenden entweder Apache oder NGINX als Reverseproxy, der vor der Web-App platziert ist, Anforderungen weiterleitet, statische Komponenten bedient und Zugriffs- und Fehlerprotokolle generiert.
+ **Instance-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Datenverkehr auf Port 80 zulässt. Diese Ressource ermöglicht es dem HTTP-Verkehr vom Load Balancer, die EC2 Instance zu erreichen, auf der Ihre Web-App ausgeführt wird. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Load balancer (Load Balancer)**– Ein Elastic Load Balancing Load Balancer ist für die Verteilung von Anforderungen an die Instances, auf denen Ihre Anwendung ausgeführt wird, konfiguriert. Mit einem Load Balancer müssen Ihre Instances nicht mehr direkt für das Internet zugänglich gemacht werden.
+ **Load Balancer-Sicherheitsgruppe** — Eine EC2 Amazon-Sicherheitsgruppe, die so konfiguriert ist, dass sie eingehenden Verkehr auf Port 80 zulässt. Diese Ressource ermöglicht, dass HTTP-Datenverkehr aus dem Internet den Load Balancer erreicht. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.
+ **Auto Scaling group (Auto Scaling-Gruppe)** – Eine Auto Scaling-Gruppe, die so konfiguriert ist, dass sie eine Instance ersetzt, wenn diese beendet wird oder nicht verfügbar ist.
+ **Amazon S3-Bucket** – Ein Speicherort für Ihren Quellcode, Protokolle und andere Artefakte, die bei der Verwendung von Elastic Beanstalk erstellt werden.
+ ** CloudWatch CloudWatch Amazon-Alarme** — Zwei Alarme, die die Auslastung der Instances in Ihrer Umgebung überwachen und ausgelöst werden, wenn die Last zu hoch oder zu niedrig ist. Wenn ein Alarm ausgelöst wird, wird Ihre Auto Scaling-Gruppe nach oben oder nach unten skaliert.
+ **CloudFormation Stack** — Elastic Beanstalk verwendet CloudFormation , um die Ressourcen in Ihrer Umgebung zu starten und Konfigurationsänderungen zu propagieren. Die Ressourcen werden in einer Vorlage definiert, die Sie in der [CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation) anzeigen können.
+ **Domainname** *— Ein Domainname, der in der Form an Ihre Web-App weitergeleitet wird. *subdomain* *region*.elasticbeanstalk.com*.
**Domain-Sicherheit**  
[Um die Sicherheit Ihrer Elastic-Beanstalk-Anwendungen zu erhöhen, ist die Domain *elasticbeanstalk.com* in der Public Suffix List (PSL) registriert.](https://publicsuffix.org/)  
Wenn Sie jemals sensible Cookies im Standard-Domainnamen für Ihre Elastic Beanstalk Beanstalk-Anwendungen einrichten müssen, empfehlen wir Ihnen, Cookies mit einem `__Host-` Präfix zu verwenden, um die Sicherheit zu erhöhen. Diese Vorgehensweise schützt Ihre Domain vor Cross-Site-Request-Forgery-Versuchen (CSRF). Weitere Informationen finden Sie auf der [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes)-Seite im Mozilla Developer Network.

All diese Ressourcen werden von Elastic Beanstalk verwaltet. Wenn Sie die Umgebung beenden, werden alle darin enthaltenen Ressourcen von Elastic Beanstalk beendet. Die RDS-DB-Instance wurde von Ihnen außerhalb der Umgebung gestartet, daher müssen Sie die Verwaltung ihres Lebenszyklus übernehmen.

**Anmerkung**  
Der von Elastic Beanstalk erstellte Amazon S3-Bucket wird von den Umgebungen gemeinsam genutzt und beim Beenden einer Umgebung nicht gelöscht. Weitere Informationen finden Sie unter [Verwenden von Elastic Beanstalk mit Amazon S3](AWSHowTo.S3.md).

## Konfigurieren von Sicherheitseinstellungen und Umgebungseigenschaften
<a name="php-hadrupal-tutorial-configure"></a>

Fügen Sie die Sicherheitsgruppe der DB-Instance zur ausgeführten Umgebung hinzu. Dadurch stellt Elastic Beanstalk alle Instances in der Umgebung mit der zusätzlich zugeordneten Sicherheitsgruppe erneut bereit.

**So fügen Sie eine Sicherheitsgruppe zur Umgebung hinzu**
+ Gehen Sie folgendermaßen vor:
  + So fügen Sie eine Sicherheitsgruppe mit der Elastic Beanstalk-Konsole hinzu

    1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

    1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

    1. Wählen Sie in der Konfigurationskategorie **Instances** die Option **Edit (Bearbeiten)**.

    1. Wählen Sie unter **EC2 Sicherheitsgruppen** die Sicherheitsgruppe aus, die an die Instances angehängt werden soll, zusätzlich zu der Instance-Sicherheitsgruppe, die Elastic Beanstalk erstellt.

    1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

    1. Lesen Sie die Warnmeldung und klicken Sie dann auf **Bestätigen**.
  + Fügen Sie eine Sicherheitsgruppe mit einer [Konfigurationsdatei](ebextensions.md) hinzufügen. Verwenden Sie die [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config)-Beispieldatei.

Anschließend werden die Verbindungsinformationen mithilfe von Umgebungseigenschaften an die Umgebung übergeben. Die Beispielanwendung hat Standardeigenschaften, die den Eigenschaften entsprechen, die von Elastic Beanstalk im Rahmen der Datenbankbereitstellung in der Umgebung konfiguriert werden.

**So konfigurieren Sie Umgebungseigenschaften für eine DB-Instance von Amazon RDS**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Updates, monitoring and logging ** (Updates, Überwachung und Protokolle) die Option **Edit** (Bearbeiten) aus.

1. Definieren Sie im Abschnitt **Environment properties (Umgebungseigenschaften)** die Variablen, die Ihre Anwendung liest, um eine Verbindungszeichenfolge zu bilden. Zur Sicherstellung der Kompatibilität mit Umgebungen, die eine integrierte RDS-DB-Instance haben, verwenden Sie die folgenden Namen und Werte. Sie finden alle Werte außer dem Passwort in der [RDS-Konsole](https://console.aws.amazon.com/rds/home).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/php-hadrupal-tutorial.html)  
![\[Konfigurationsabschnitt für Umgebungseigenschaften mit hinzugefügten RDS-Eigenschaften\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

Nach dem Installieren von Drupal müssen Sie über SSH eine Verbindung zur Instance herstellen, um einige Konfigurationsdaten abzurufen. Weisen Sie den Instances der Umgebung einen SSH-Schlüssel zu.

**So konfigurieren Sie SSH**

1. Wenn Sie noch kein key pair erstellt haben, öffnen Sie die [Schlüsselpaarseite](https://console.aws.amazon.com/ec2/v2/home#KeyPairs) der EC2 Amazon-Konsole und folgen Sie den Anweisungen, um eines zu erstellen.

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie unter **Security (Sicherheit)** die Option **Edit (Bearbeiten)** aus.

1. Wählen Sie für **EC2 key pair** Ihr key pair aus.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

## Konfigurieren und Bereitstellen Ihrer Anwendung
<a name="php-hadrupal-tutorial-deploy"></a>

[Um ein Drupal-Projekt für Elastic Beanstalk zu erstellen, laden Sie den Drupal-Quellcode herunter und kombinieren Sie ihn mit den Dateien im aws-samples/ Repository auf. eb-php-drupal](https://github.com/aws-samples/eb-php-drupal) GitHub

**So erstellen Sie ein Drupal-Projekt**

1. Laden Sie Drupal mit dem folgenden Befehl unter *www.drupal.org/download* herunter. Weitere Informationen zu Downloads finden Sie auf der [Drupal-Website](https://www.drupal.org/download).

   Wenn die Plattform Ihrer Elastic Beanstalk-Umgebung PHP 7.4 oder älter verwendet, empfehlen wir Ihnen, die Drupal-Version 8.9.13 für dieses Tutorial herunterzuladen. Führen Sie zum Herunterladen den folgenden Befehl aus.

   ```
   ~$ curl https://ftp.drupal.org/files/projects/drupal-8.9.13.tar.gz -o drupal.tar.gz
   ```

   Wenn Ihre Plattform PHP 8.0 oder höher verwendet, empfehlen wir Ihnen, Drupal 9.1.5 herunterzuladen. Zum Herunterladen können Sie den folgenden Befehl verwenden.

   ```
   ~$ curl https://ftp.drupal.org/files/projects/drupal-9.1.5.tar.gz -o drupal.tar.gz
   ```

   Weitere Informationen zu Drupal-Versionen und den unterstützten PHP-Versionen finden Sie unter [PHP-Anforderungen](https://www.drupal.org/docs/system-requirements/php-requirements#php_required) in der offiziellen Drupal-Dokumentation. Die von Drupal empfohlenen Core-Versionen sind auf der [Drupal-Website](https://www.drupal.org/project/drupal) aufgeführt.

1. Laden Sie die Konfigurationsdateien mit folgendem Befehl aus dem Beispiel-Repository herunter:

   ```
   ~$ wget https://github.com/aws-samples/eb-php-drupal/releases/download/v1.1/eb-php-drupal-v1.zip
   ```

1. Extrahieren Sie Drupal und ändern Sie den Namen des Ordners.

   Wenn Sie Drupal 8.9.13 heruntergeladen haben:

   ```
    ~$ tar -xvf drupal.tar.gz
    ~$ mv drupal-8.9.13 drupal-beanstalk
    ~$ cd drupal-beanstalk
   ```

   Wenn Sie Drupal 9.1.5 heruntergeladen haben:

   ```
    ~$ tar -xvf drupal.tar.gz
    ~$ mv drupal-9.1.5 drupal-beanstalk
    ~$ cd drupal-beanstalk
   ```

1. Extrahieren während der Drupal-Installation die Konfigurationsdateien.

   ```
    ~/drupal-beanstalk$ unzip ../eb-php-drupal-v1.zip
     creating: .ebextensions/
     inflating: .ebextensions/dev.config
     inflating: .ebextensions/drupal.config
     inflating: .ebextensions/efs-create.config
     inflating: .ebextensions/efs-filesystem.template
     inflating: .ebextensions/efs-mount.config
     inflating: .ebextensions/loadbalancer-sg.config
     inflating: LICENSE
     inflating: README.md
     inflating: beanstalk-settings.php
   ```

Überprüfen Sie wie gezeigt, ob die Struktur des Ordners `drupal-beanstalk` korrekt ist.

```
drupal-beanstalk$ tree -aL 1
.
├── autoload.php
├── beanstalk-settings.php
├── composer.json
├── composer.lock
├── core
├── .csslintrc
├── .ebextensions
├── .ebextensions
├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── example.gitignore
├── .gitattributes
├── .htaccess
├── .ht.router.php
├── index.php
├── LICENSE
├── LICENSE.txt
├── modules
├── profiles
├── README.md
├── README.txt
├── robots.txt
├── sites
├── themes
├── update.php
├── vendor
└── web.config
```

Die Datei `beanstalk-settings.php` aus dem Projektrepository verwendet die Umgebungsvariablen, die Sie im vorherigen Schritt zum Konfigurieren der Datenbankverbindung definiert haben. Der Ordner `.ebextensions` enthält Konfigurationsdateien, die weitere Ressourcen in Ihrer Elastic Beanstalk-Umgebung erstellen.

Die Konfigurationsdateien müssen für die Arbeit mit dem Konto geändert werden. Ersetzen Sie die Platzhalterwerte in den Dateien durch die entsprechenden Werte und erstellen Sie ein Quellpaket. IDs 

**Zum Aktualisieren der Konfigurationsdateien und Erstellen eines Quell-Bundles.**

1. Ändern Sie die Konfigurationsdateien wie folgt.
   + `.ebextensions/dev.config` – Beschränkt den Zugriff auf die Umgebung auf Ihre IP-Adresse, um die Umgebung während der Drupal-Installation zu schützen. Geben Sie anstelle des Platzhalters für die IP-Adresse oben in der Datei Ihre öffentliche IP-Adresse ein.
   + `.ebextensions/efs-create.config` – Erstellt ein EFS-Dateisystem und Mountingpunkte in allen Availability Zones/Subnetzen der VPC. Identifizieren Sie Ihre Standard-VPC und Ihr Standard-Subnetz IDs in der [Amazon VPC-Konsole](https://console.aws.amazon.com/vpc/home#subnets:filter=default).

1. Erstellen Sie ein [Quell-Bundle](applications-sourcebundle.md) mit den Dateien im Projektordner. Der folgende Befehl erstellt ein Quell-Bundle mit dem Namen `drupal-beanstalk.zip`. Die Dateien im Ordner `vendor` werden ausgeschlossen, weil sie viel Platz benötigen und zum Bereitstellen der Anwendung für Elastic Beanstalk nicht erforderlich sind.

   ```
   ~/eb-drupal$ zip ../drupal-beanstalk.zip -r * .[^.]* -x "vendor/*"
   ```

Laden Sie das Quell-Bundle zu Elastic Beanstalk hoch, um Drupal in der Umgebung bereitzustellen.

**So stellen Sie ein Quell-Bundle bereit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie auf der Umgebungsübersichtsseite die Option **Upload and deploy (Hochladen und bereitstellen)**.

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um das Quellpaket hochzuladen.

1. Wählen Sie **Deploy (Bereitstellen)** aus.

1. Wenn die Bereitstellung abgeschlossen ist, wählen Sie die Website-URL, um Ihre Website in einer neuen Registerkarte zu öffnen.

## Installation von Drupal
<a name="php-hadrupal-tutorial-install"></a>

**So installieren Sie Drupal**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie die Umgebungs-URL aus, um die Website in einem Browser zu öffnen. Sie werden zu einem Drupal-Installationsassistenten umgeleitet, da die Website noch nicht konfiguriert ist.

1. Führen Sie eine Standardinstallation mit den folgenden Datenbank-Einstellungen durch:
   + **Datenbankname** – Der **DB Name (DB-Name)**, der in der Amazon RDS-Konsole angezeigt wird.
   + **Benutzername und Passwort der Datenbank** – Die Werte für **Master Username (Master-Benutzername)** und **Master Password (Master-Passwort)**, die Sie beim Erstellen Ihrer Datenbank eingegeben haben.
   + **Erweiterte Optionen > Host** – Der **Endpoint (Endpunkt)** der DB-Instance, die in der Amazon RDS-Konsole angezeigt wird.

Die Installation dauert etwa eine Minute.

## Aktualisieren der Drupal-Konfiguration und Entfernen von Zugriffsbeschränkungen
<a name="php-hadrupal-tutorial-updateenv"></a>

Im Rahmen der Drupal-Installation wurde eine Datei namens `settings.php` im `sites/default`-Ordner in der Instance erstellt. Sie benötigen diese Datei im Quellcode, damit Ihre Website bei späteren Bereitstellungen nicht zurückgesetzt wird. Derzeit enthält die Datei jedoch vertrauliche Informationen und sollte deshalb nicht in die Quelle geschrieben werden. Stellen Sie eine Verbindung zur Anwendungs-Instance her, damit die Daten aus der Einstellungsdatei abgerufen werden.

**So verbinden Sie die Anwendungs-Instance mit SSH**

1. Öffnen Sie die [Instance-Seite](https://console.aws.amazon.com/ec2/v2/home#Instances:sort=tag:Name) der EC2 Amazon-Konsole.

1. Wählen Sie die Anwendungs-Instance. Es handelt sich um die Instance mit dem Namen der Elastic Beanstalk-Umgebung.

1. Wählen Sie **Connect** aus.

1. Befolgen Sie die Anleitung, um die Instance mit SSH zu verbinden. Der Befehl sieht so ähnlich aus wie dieser.

   ```
   $ ssh -i ~/.ssh/mykey ec2-user@ec2-00-55-33-222.us-west-2.compute.amazonaws.com
   ```

Entnehmen Sie der letzten Zeile der Einstellungsdatei die ID des Synchronisierungsverzeichnisses.

```
[ec2-user ~]$ tail -n 1 /var/app/current/sites/default/settings.php
$config_directories['sync'] = 'sites/default/files/config_4ccfX2sPQm79p1mk5IbUq9S_FokcENO4mxyC-L18-4g_xKj_7j9ydn31kDOYOgnzMu071Tvc4Q/sync';
```

Die Datei enthält außerdem den aktuellen Hash-Schlüssel der Website. Sie können den aktuellen Wert aber ignorieren und einen eigenen Wert verwenden.

Weisen Sie den Umgebungseigenschaften ein Sync-Verzeichnispfad und den Hash-Schlüssel zu. Die benutzerdefinierte Einstellungsdatei aus dem Projektrepository liest diese Eigenschaften, um die Website im Rahmen der Bereitstellung sowie die zuvor eingerichteten Eigenschaften der Datenbankverbindung zu konfigurieren.

**Eigenschaften der Drupal-Konfiguration**
+ `SYNC_DIR` – Der Pfad zum Sync-Verzeichnis.
+ `HASH_SALT` – Jeder Zeichenfolgenwert, der die [Anforderungen an Umgebungseigenschaften](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) erfüllt.

**So konfigurieren Sie Umgebungsvariablen in der Elastic Beanstalk Beanstalk-Konsole**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Updates, monitoring and logging ** (Updates, Überwachung und Protokolle) die Option **Edit** (Bearbeiten) aus.

1. Scrollen Sie nach unten zu **Runtime-Umgebungsvariablen.**

1. Wählen Sie **Umgebungsvariable hinzufügen** aus.

1. Wählen Sie als **Quelle** die Option **Klartext** aus.
**Anmerkung**  
Die Werte **Secrets Manager** und **SSM Parameter Store** in der Drop-down-Liste dienen der Konfiguration von Umgebungsvariablen als Secrets zum Speichern sensibler Daten wie Anmeldeinformationen und API-Schlüsseln. Weitere Informationen finden Sie unter [Elastic Beanstalk mit AWS Secrets Manager und AWS Systems Manager Parameter Store verwenden](AWSHowTo.secrets.md). 

1. Geben Sie den **Namen der Umgebungsvariablen** und die **Wertepaare der Umgebungsvariablen** ein.

1. Wenn Sie weitere Variablen hinzufügen müssen, wiederholen Sie **Schritt 6** bis **Schritt 8.**

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

Schließlich enthält das Beispielprojekt eine Konfigurationsdatei (`loadbalancer-sg.config`), mit der eine Sicherheitsgruppe erstellt und dem Load Balancer der Umgebung zugeordnet wird. Dabei wird die IP-Adresse verwendet, die Sie in der Datei `dev.config` konfiguriert haben, um den HTTP-Zugriff über Port 80 auf Verbindungen in Ihrem Netzwerk zu beschränken. Andernfalls könnte eine externe Partei potenziell eine Verbindung zur Website herstellen, bevor Sie Drupal installiert und das Administratorkonto konfiguriert haben.

**So aktualisieren Sie die Drupal-Konfiguration und entfernen Zugriffsbeschränkungen**

1. Löschen Sie die Datei `.ebextensions/loadbalancer-sg.config` aus dem Projektverzeichnis.

   ```
   ~/drupal-beanstalk$ rm .ebextensions/loadbalancer-sg.config
   ```

1. Kopieren Sie die benutzerdefinierte Datei `settings.php` in den Ordner der Website.

   ```
   ~/drupal-beanstalk$ cp beanstalk-settings.php sites/default/settings.php
   ```

1. Erstellen Sie ein Quell-Bundle.

   ```
   ~/eb-drupal$ zip ../drupal-beanstalk-v2.zip -r * .[^.]* -x "vendor/*"
   ```

Laden Sie das Quell-Bundle zu Elastic Beanstalk hoch, um Drupal in der Umgebung bereitzustellen.

**So stellen Sie ein Quell-Bundle bereit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie auf der Umgebungsübersichtsseite die Option **Upload and deploy (Hochladen und bereitstellen)**.

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um das Quellpaket hochzuladen.

1. Wählen Sie **Deploy (Bereitstellen)** aus.

1. Wenn die Bereitstellung abgeschlossen ist, wählen Sie die Website-URL, um Ihre Website in einer neuen Registerkarte zu öffnen.

## Konfigurieren der Auto-Scaling-Gruppe
<a name="php-hadrupal-tutorial-autoscaling"></a>

Konfigurieren Sie abschließend für die Auto-Scaling-Gruppe der Umgebung eine höhere Instance-Mindestanzahl. Führen Sie immer mindestens zwei Instances aus, damit einzelne Webserver in der Umgebung keine Fehlerquelle darstellen und damit Sie Änderungen ohne Ausfallzeit der Website bereitstellen können.

**So konfigurieren Sie die Auto-Scaling-Gruppe in der Umgebung für hohe Verfügbarkeit**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Wählen Sie im Navigationsbereich **Configuration (Konfiguration)** aus.

1. Wählen Sie in der Konfigurationskategorie **Capacity (Kapazität)** die Option **Edit (Bearbeiten)**.

1. Legen Sie im Abschnitt **Auto Scaling Group (Gruppe der automatischen Skalierung)** für die Option **Min instances (Min. Instances)** **2** fest.

1. Wählen Sie unten auf der Seite die Option **Apply** (Anwenden) aus, um die Änderungen zu speichern.

Das Beispielprojekt erstellt mit Amazon Elastic File System ein freigegebenes Dateisystem für das Hochladen von Inhalten über mehrere Instances hinweg. Erstellen Sie einen Beitrag auf der Website und laden Sie Inhalte hoch, die im freigegebenen Dateisystem gespeichert werden sollen. Zeigen Sie den Beitrag an und aktualisieren Sie die Seite mehrfach, damit Instances genutzt werden und zugleich verifiziert wird, dass das freigegebene Dateisystem funktioniert.

## Bereinigen
<a name="php-hadrupal-tutorial-cleanup"></a>

Nachdem Sie die Arbeit mit dem Demo-Code abgeschlossen haben, können Sie Ihre Umgebung beenden. [Elastic Beanstalk löscht alle zugehörigen AWS Ressourcen wie [ EC2 Amazon-Instances, [Datenbank-Instances](using-features.managing.db.md)](using-features.managing.ec2.md), [Load Balancer](using-features.managing.elb.md), Sicherheitsgruppen und Alarme.](using-features.alarms.md#using-features.alarms.title) 

Durch das Entfernen von Ressourcen wird die Elastic Beanstalk Beanstalk-Anwendung nicht gelöscht, sodass Sie jederzeit neue Umgebungen für Ihre Anwendung erstellen können.

**So beenden Sie Ihre Elastic Beanstalk Beanstalk-Umgebung über die Konsole**

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

1. Wählen Sie im Navigationsbereich **Environments (Umgebungen)** aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

1. Klicken Sie auf **Actions** (Aktionen) und dann auf **Terminate Environment** (Umgebung beenden).

1. Verwenden Sie das Dialogfeld auf dem Bildschirm, um die Beendigung der Umgebung zu bestätigen.

Außerdem können Sie Datenbankressourcen beenden, die außerhalb der Elastic Beanstalk-Umgebung erstellt wurden. Beim Beenden einer Amazon RDS-DB-Instance können Sie einen Snapshot erstellen und die Daten zu einem späteren Zeitpunkt in einer anderen Instance wiederherstellen.

**So beenden Sie Ihre RDS DB-Instance**

1. Öffnen Sie die [Amazon RDS-Konsole](https://console.aws.amazon.com/rds).

1. Wählen Sie **Datenbanken** aus.

1. Wählen Sie Ihre DB-Instance aus.

1. Wählen Sie **Aktionen** und anschließend **Löschen** aus.

1. Wählen Sie, ob Sie einen Snapshot erstellen, und wählen Sie anschließend **Delete (Löschen)**.

## Nächste Schritte
<a name="php-hadrupal-tutorial-nextsteps"></a>

Im weiteren Verlauf der Anwendungsentwicklung können Sie Umgebungen verwalten und Anwendungen bereitstellen, ohne manuell eine ZIP-Datei zu erstellen und diese in die Elastic Beanstalk-Konsole hochzuladen. Die [Elastic Beanstalk Command Line Interface](eb-cli3.md) (EB CLI) bietet easy-to-use Befehle zum Erstellen, Konfigurieren und Bereitstellen von Anwendungen in Elastic Beanstalk Beanstalk-Umgebungen von der Befehlszeile aus.

In der Beispielanwendung werden Konfigurationsdateien verwendet, um PHP-Einstellungen zu konfigurieren und eine Tabelle in der Datenbank zu erstellen (sofern nicht bereits vorhanden). Mit einer Konfigurationsdatei können Sie zudem während des Erstellens der Umgebung die Sicherheitsgruppeneinstellungen der Instance konfigurieren und so zeitaufwendige Konfigurationsaktualisierungen verhindern. Weitere Informationen finden Sie unter [Erweiterte Umgebungsanpassung mit Konfigurationsdateien (`.ebextensions`)](ebextensions.md).

Für die Entwicklung sowie für Tests können Sie die Elastic Beanstalk-Funktionalität nutzen und eine verwaltete DB-Instance direkt in der Umgebung hinzufügen. Detaillierte Anweisungen zum Einrichten einer Datenbank in der Umgebung finden Sie unter [Hinzufügen einer Datenbank zu Ihrer Elastic Beanstalk-Umgebung](using-features.managing.db.md).

Wenn Sie eine Datenbank mit hoher Verfügbarkeit benötigen, können Sie [Amazon Aurora](https://aws.amazon.com/rds/aurora/) verwenden. Amazon Aurora ist eine mit MySQL kompatible Datenbank-Engine, die kommerzielle Datenbank-Features bei geringen Kosten bietet. Um die Verbindung der Anwendung mit einer anderen Datenbank herzustellen, wiederholen Sie die Schritte der [Sicherheitsgruppenkonfiguration](php-ha-tutorial.md#php-hawrds-tutorial-database) und [aktualisieren Sie die RDS-bezogenen Umgebungseigenschaften](php-ha-tutorial.md#php-hawrds-tutorial-configure). 

Sofern Sie planen, die Anwendung in einer Produktionsumgebung einzusetzen, [konfigurieren Sie einen benutzerdefinierten Domainnamen](customdomains.md) für die Umgebung und [aktivieren dann HTTPS](configuring-https.md) für sichere Verbindungen.