Eine PHP Cake-Anwendung auf Elastic Beanstalk bereitstellen - AWS Elastic Beanstalk

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.

Eine PHP Cake-Anwendung auf Elastic Beanstalk bereitstellen

Cake PHP ist ein MVC Open-Source-Framework für. PHP In diesem Tutorial erfahren Sie, wie Sie ein PHP Cake-Projekt generieren, es in einer Elastic Beanstalk Beanstalk-Umgebung bereitstellen und es für die Verbindung mit einer RDS Amazon-Datenbank-Instance konfigurieren.

Voraussetzungen

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 Erste Schritte mit Elastic Beanstalk 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 ($) 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 Version von Ubuntu und Bash zu erhalten.

Cake PHP 4 benötigt 7.2 oder höherPHP. Es erfordert auch die PHP Erweiterungen, die in der offiziellen PHPCake-Installationsdokumentation aufgeführt sind. Folgen Sie den Anweisungen im Einrichtung Ihrer PHP Entwicklungsumgebung für Elastic Beanstalk Thema, um Composer PHP zu installieren.

Starten einer Elastic Beanstalk-Umgebung

Erstellen Sie mit der Elastic Beanstalk-Konsole, eine Elastic Beanstalk-Umgebung. Wählen Sie die PHPPlattform aus und akzeptieren 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#/newApplication? applicationNameenvironmentType=Tutorialen& = LoadBalanced

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

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

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

  5. 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:

  • EC2Instanz — Eine virtuelle Maschine von Amazon Elastic Compute Cloud (AmazonEC2), 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 Reverse-Proxy, der sich vor Ihrer Web-App befindet, Anfragen an diese weiterleitet, statische Ressourcen bereitstellt 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 Datenverkehr 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 es dem HTTP Datenverkehr aus dem Internet, den Load Balancer zu erreichen. 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.

  • AWS CloudFormation stack — Elastic Beanstalk verwendet AWS 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 AWS CloudFormation -Konsole anzeigen können.

  • Domainname — Ein Domainname, der in der folgenden Form an Ihre Web-App weitergeleitet wird subdomain.region.elasticbeanstalk.com.

    Domain-Sicherheit

    Um die Sicherheit Ihrer Elastic Beanstalk Beanstalk-Anwendungen zu erhöhen, ist die Domain elasticbeanstalk.com in der Public Suffix List () registriert. PSL

    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. Durch diese Vorgehensweise wird Ihre Domain gegen Versuche zur Fälschung von Cross-Site-Requests geschützt (). CSRF Weitere Informationen finden Sie auf der Set-Cookie-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.

Installieren Sie Cake PHP und generieren Sie eine Website

Composer kann Cake mit einem Befehl installieren PHP und ein funktionierendes Projekt erstellen:

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

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

Wenn bei der Installation von Cake Probleme auftretenPHP, besuchen Sie das Installationsthema in der offiziellen Dokumentation: http://book.cakephp.org/4.0/en/installation.html

Bereitstellen der Anwendung

Erstellen Sie mit den Dateien, die von Composer erstellt wurden, ein Quell-Bundle . 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 Quellpaket auf Elastic Beanstalk hoch, PHP um Cake in Ihrer Umgebung bereitzustellen.

So stellen Sie ein Quell-Bundle bereit
  1. Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole und wählen Sie in der Liste Regionen Ihre aus. AWS-Region

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

    Anmerkung

    Wenn Sie viele Umgebungen haben, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

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

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

  5. Wählen Sie Deploy (Bereitstellen) aus.

  6. Wenn die Bereitstellung abgeschlossen ist, können Sie die Site auswählen, URL um Ihre Website in einem neuen Tab zu öffnen.

Anmerkung

Um das Quell-Bundle weiter zu optimieren, initialisieren Sie ein Git-Repository und verwenden den Befehl git archive, 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, URL um Ihre PHP Cake-Anwendung im Browser zu öffnen.

So weit, so gut. Als Nächstes fügen Sie Ihrer Umgebung eine Datenbank hinzu und konfigurieren CakePHP, um eine Verbindung zu ihr herzustellen.

Hinzufügen einer Datenbank zu Ihrer Umgebung

Starten Sie eine RDS Amazon-Datenbank-Instance in Ihrer Elastic Beanstalk Beanstalk-Umgebung. Sie können My- SQLSQLServer, oder SQL Postgre-Datenbanken mit Cake PHP auf Elastic Beanstalk verwenden. In diesem Beispiel verwenden wir Postgre. SQL

So fügen Sie Ihrer Elastic Beanstalk Beanstalk-Umgebung eine Amazon RDS DB-Instance hinzu
  1. Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole und wählen Sie in der Liste Regionen Ihre aus. AWS-Region

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

    Anmerkung

    Wenn Sie viele Umgebungen haben, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

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

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

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

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

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

PHPDie Datenbankkonfiguration von Cake befindet sich in einer Datei, die app.php in dem config Ordner in Ihrem Projektcode benannt ist. Ö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):

Beispiel ~/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:

Beispiel ~/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/*"
  2. Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole und wählen Sie in der Liste Regionen Ihre aus. AWS-Region

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

    Anmerkung

    Wenn Sie viele Umgebungen haben, filtern Sie Umgebungsliste mit der Suchleiste.

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

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

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

Bereinigen

Wenn Sie nicht mehr mit Elastic Beanstalk arbeiten, können Sie Ihre Umgebung beenden. Elastic Beanstalk beendet alle AWS Ressourcen, die mit Ihrer Umgebung verknüpft sind, wie EC2Amazon-Instances, Datenbank-Instances, Load Balancer, Sicherheitsgruppen und Alarme.

So beenden Sie Ihre Elastic Beanstalk Beanstalk-Umgebung über die Konsole
  1. Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole und wählen Sie in der Liste Regionen Ihre aus. AWS-Region

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

    Anmerkung

    Wenn Sie viele Umgebungen haben, filtern Sie Umgebungsliste mit der Suchleiste.

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

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

Mit Elastic Beanstalk können Sie ganz einfach und jederzeit eine neue Umgebung für Ihre Anwendung erstellen.

Außerdem können Sie Datenbankressourcen beenden, die außerhalb der Elastic Beanstalk-Umgebung erstellt wurden. Wenn Sie eine Amazon RDS DB-Instance beenden, können Sie einen Snapshot erstellen und die Daten später auf einer anderen Instance wiederherstellen.

Um Ihre RDS DB-Instance zu beenden
  1. Öffnen Sie die RDSAmazon-Konsole.

  2. Wählen Sie Datenbanken aus.

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

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

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

Nächste Schritte

Weitere Informationen zu Cake PHP finden Sie im Buch auf book.cakephp.org.

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. Das Elastic Beanstalk Command Line Interface (EBCLI) 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 Beanstalk-Umgebung eignet sich hervorragend für Entwicklung und Tests, aber es verknüpft den Lebenszyklus Ihrer Datenbank mit Ihrer 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.

Und wenn Sie planen, Ihre Anwendung in einer Produktionsumgebung zu verwenden, sollten Sie einen benutzerdefinierten Domainnamen für Ihre Umgebung konfigurieren und sichere Verbindungen aktivieren HTTPS.