

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.

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