Verwenden der Elastic Beanstalk PHP-Plattform - 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.

Verwenden der Elastic Beanstalk PHP-Plattform

AWS Elastic Beanstalk bietet und unterstützt verschiedene Plattformzweige für verschiedene Versionen von PHP. Die Plattformen unterstützen PHP-Webanwendungen, die eigenständig oder unter Composer ausgeführt werden. Eine vollständige Liste der unterstützten AWS Elastic Beanstalk Plattformzweige finden Sie unter PHP im Dokument Plattformen.

Elastic Beanstalk bietet Konfigurationsoptionen, mit denen Sie die Software anpassen können, die auf den EC2 Amazon-Instances in Ihrer Elastic Beanstalk Beanstalk-Umgebung ausgeführt wird. Sie können die von Ihrer Anwendung erforderlichen Umgebungsvariablen konfigurieren, die Protokollrotation an Amazon S3 aktivieren, Ordner in der Anwendungsquelle mit statischen Dateien zu vom Proxy-Server verwendeten Pfaden zuordnen und gemeinsame PHP-Initialisierungseinstellungen festlegen.

In der Elastic Beanstalk-Konsole sind Konfigurationsoptionen für das Ändern der Konfiguration einer ausgeführten Umgebung verfügbar. Um zu verhindern, dass die Umgebungskonfiguration beim Beenden verloren geht, können Sie gespeicherte Konfigurationen verwenden, um Ihre Einstellungen zu speichern und sie später für eine andere Umgebung zu übernehmen.

Zum Speichern der Einstellungen im Quellcode können Sie Konfigurationsdateien einschließen. Die Einstellungen in Konfigurationsdateien werden jedes Mal verwendet, wenn Sie eine Umgebung erstellen oder Ihre Anwendung bereitstellen. Mit Konfigurationsdateien können Sie auch Pakete installieren, Skripts ausführen und andere Instance-Anpassungen bei Bereitstellungen vornehmen.

Wenn Sie Composer verwenden, können Sie durch das Einbinden einer composer.json-Datei in das Quell-Bundle die Pakete während der Bereitstellung installieren.

Für eine erweiterte PHP-Konfiguration und PHP-Einstellungen, die nicht als Konfigurationsoptionen verfügbar sind, können Sie mit Konfigurationsdateien eine INI-Datei bereitstellen, mit der die Standardeinstellungen von Elastic Beanstalk erweitert und überschrieben werden, oder Sie können zusätzliche Erweiterungen installieren.

Die in der Elastic Beanstalk-Konsole angewendeten Einstellungen überschreiben die entsprechenden Einstellungen in Konfigurationsdateien, falls vorhanden. So sind Standardeinstellungen in Konfigurationsdateien möglich, die Sie mit umgebungsspezifischen Einstellungen in der Konsole überschreiben können. Für weitere Informationen zur Rangfolge und zu anderen Methoden zum Ändern der Einstellungen siehe Konfigurationsoptionen.

Details zu den verschiedenen Möglichkeiten für das Erweitern einer Linux-basierten Elastic Beanstalk-Plattform finden Sie unter Erweitern von Elastic Beanstalk-Linux-Plattformen.

Das AWS SDK for PHP installieren

Wenn Sie AWS Ressourcen von Ihrer Anwendung aus verwalten müssen, installieren Sie den AWS SDK für PHP. Sie können mit dem SDK for PHP beispielsweise Amazon DynamoDB (DynamoDB) zum Speichern von Benutzer- und Sitzungsinformationen verwenden, ohne eine relationale Datenbank zu erstellen.

Um das SDK for PHP mit Composer zu installieren

$ composer require aws/aws-sdk-php

Weitere Informationen finden Sie auf der AWS SDK for PHPHomepage. Anweisungen finden Sie unter Installieren von AWS SDK for PHP.

Überlegungen zu PHP 8.1 auf Amazon Linux 2

Lesen Sie diesen Abschnitt, wenn Sie den Plattformzweig PHP 8.1 auf Amazon Linux 2 verwenden.

Anmerkung

Die Informationen in diesem Thema beziehen sich nur auf den Plattformzweig PHP 8.1 auf Amazon Linux 2. Sie gilt nicht für die PHP-Plattformzweige, die auf AL2 023 basieren. Sie gelten auch nicht für den Plattformzweig PHP 8.0 Amazon Linux 2.

Elastic Beanstalk speichert die PHP 8.1-bezogenen RPM-Pakete für den Plattformzweig PHP 8.1 auf Amazon Linux 2 auf den EC2 Instances in einem lokalen Verzeichnis und nicht im Amazon Linux-Repository. Sie können rpm -i verwenden, um Pakete zu installieren. Ab PHP 8.1 Platform Version 3.5.0 speichert Elastic Beanstalk die RPM-Pakete für PHP 8.1 im folgenden lokalen Verzeichnis. EC2

/opt/elasticbeanstalk/RPMS

Im folgenden Beispiel wird das php-debuginfo-Paket installiert.

$rpm -i /opt/elasticbeanstalk/RPMS/php-debuginfo-8.1.8-1.amzn2.x86_64.rpm

Die Version im Paketnamen hängt von der tatsächlichen Version ab, die im lokalen Verzeichnis aufgeführt ist. EC2 /opt/elasticbeanstalk/RPMS Verwenden Sie dieselbe Syntax, um andere PHP 8.1 RPM-Pakete zu installieren.

Erweitern Sie den folgenden Abschnitt, um eine Liste der von uns bereitgestellten RPM-Pakete anzuzeigen.

Die folgende Liste enthält die RMP-Pakete, die die Elastic Beanstalk PHP 8.1-Plattform auf Amazon Linux 2 bereitstellt. Diese befinden sich im lokalen Verzeichnis /opt/elasticbeanstalk/RPMS.

Die Versionsnummern 8.1.8-1 und 3.7.0-1 in den aufgelisteten Paketnamen sind nur ein Beispiel.

  • php-8.1.8-1.amzn2.x86_64.rpm

  • php-bcmath-8.1.8-1.amzn2.x86_64.rpm

  • php-cli-8.1.8-1.amzn2.x86_64.rpm

  • php-common-8.1.8-1.amzn2.x86_64.rpm

  • php-dba-8.1.8-1.amzn2.x86_64.rpm

  • php-dbg-8.1.8-1.amzn2.x86_64.rpm

  • php-debuginfo-8.1.8-1.amzn2.x86_64.rpm

  • php-devel-8.1.8-1.amzn2.x86_64.rpm

  • php-embedded-8.1.8-1.amzn2.x86_64.rpm

  • php-enchant-8.1.8-1.amzn2.x86_64.rpm

  • php-fpm-8.1.8-1.amzn2.x86_64.rpm

  • php-gd-8.1.8-1.amzn2.x86_64.rpm

  • php-gmp-8.1.8-1.amzn2.x86_64.rpm

  • php-intl-8.1.8-1.amzn2.x86_64.rpm

  • php-ldap-8.1.8-1.amzn2.x86_64.rpm

  • php-mbstring-8.1.8-1.amzn2.x86_64.rpm

  • php-mysqlnd-8.1.8-1.amzn2.x86_64.rpm

  • php-odbc-8.1.8-1.amzn2.x86_64.rpm

  • php-opcache-8.1.8-1.amzn2.x86_64.rpm

  • php-pdo-8.1.8-1.amzn2.x86_64.rpm

  • php-pear-1.10.13-1.amzn2.noarch.rpm

  • php-pgsql-8.1.8-1.amzn2.x86_64.rpm

  • php-process-8.1.8-1.amzn2.x86_64.rpm

  • php-pspell-8.1.8-1.amzn2.x86_64.rpm

  • php-snmp-8.1.8-1.amzn2.x86_64.rpm

  • php-soap-8.1.8-1.amzn2.x86_64.rpm

  • php-sodium-8.1.8-1.amzn2.x86_64.rpm

  • php-xml-8.1.8-1.amzn2.x86_64.rpm

  • php-pecl-imagick-3.7.0-1.amzn2.x86_64.rpm

  • php-pecl-imagick-debuginfo-3.7.0-1.amzn2.x86_64.rpm

  • php-pecl-imagick-devel-3.7.0-1.amzn2.noarch.rpm

Sie können die Pakete PEAR und PECL verwenden, um allgemeine Erweiterungen zu installieren. Weitere Informationen zu PEAR finden Sie auf der Website PEAR PHP Extension and Application Repository. Weitere Informationen zu PECL finden Sie auf der Website der PECL-Erweiterung.

Mit den folgenden Beispielbefehlen werden die Memcached-Erweiterungen installiert.

$pecl install memcache

Sie können auch Folgendes verwenden:

$pear install pecl/memcache

Die folgenden Beispielbefehle installieren die Redis-Erweiterungen.

$pecl install redis

Sie können auch Folgendes verwenden:

$pear install pecl/redis

Konfigurieren Ihrer PHP-Umgebung

Mit der Elastic Beanstalk-Konsole können Sie die Protokollrotation für Amazon S3 aktivieren, Variablen konfigurieren, die die Anwendung in der Umgebung lesen kann, und die PHP-Einstellungen ändern.

So konfigurieren Sie Ihre PHP-Umgebung in der Elastic Beanstalk-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.

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

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

PHP-Einstellungen

  • Proxy server (Proxy-Server) – Der Proxyserver, der in Ihren Umgebungs-Instances verwendet werden soll. Standardmäßig wird nginx verwendet.

  • Document root (Dokumentenstamm) – In diesem Ordner ist die Standardseite Ihrer Website enthalten. Falls sich die Willkommenseite nicht im Stamm des Quell-Bundles befindet, geben Sie den entsprechenden Ordner relativ zum Stammpfad an. Beispielsweise /public, wenn die Willkommenseite im Ordner public ist.

  • Memory limit (Speicherlimit) – Der maximale Speicher, der von einem Skript zugeordnet werden kann. Beispiel, 512M.

  • Zlib output compression (Zlib-Ausgabekomprimierung) – Legen Sie den Wert auf On fest, um Antworten zu komprimieren.

  • Allow URL fopen (DÖffnen für URLs zulassen) – Legen Sie den Wert auf Off fest, damit Skripts keine Dateien von Remote-Speicherorten herunterladen können.

  • Display errors (Fehler anzeigen) – Legen Sie den Wert auf On fest, damit interne Fehlermeldungen zum Debuggen angezeigt werden.

  • Max execution time (Max. Ausführungszeit) – Gibt die maximale Dauer (in Sekunden) an, die ein Skript ausgeführt werden kann, bevor es von der Umgebung beendet wird.

Protokolloptionen

Im Abschnitt mit den Protokolloptionen hat zwei Einstellungen:

  • Instance profile (Instance-Profil) – Gibt das Instance-Profil an, das zum Zugriff auf den entsprechenden Amazon S3-Bucket der Anwendung berechtigt ist.

  • Rotation der Protokolldateien nach Amazon S3 aktivieren — Gibt an, ob Protokolldateien für die EC2 Amazon-Instances Ihrer Anwendung in den Amazon S3-Bucket kopiert werden, der Ihrer Anwendung zugeordnet ist.

Statische Dateien

Um die Leistung zu verbessern, können Sie den Abschnitt Static files (Statische Dateien) benutzen, um den Proxy-Server so zu konfigurieren, dass er statische Dateien (z. B. HTML oder Bilder) aus Verzeichnissen innerhalb Ihrer Webanwendung bereitstellt. Legen Sie für jedes Verzeichnis den virtuellen Pfad zum Verzeichnis-Mapping fest. Wenn der Proxy-Server eine Anfrage nach einer Datei unter dem angegebenen Pfad erhält, stellt er die Datei direkt bereit, anstatt die Anfrage an Ihre Anwendung weiterzuleiten.

Weitere Informationen zum Konfigurieren statischer Dateien mit der Elastic Beanstalk-Konsole finden Sie unter Bereitstellen von statischen Dateien.

Umgebungseigenschaften

Im Abschnitt Umgebungseigenschaften können Sie die Umgebungskonfigurationseinstellungen für die EC2 Amazon-Instances angeben, auf denen Ihre Anwendung ausgeführt wird. Diese Einstellungen werden als Schlüsselwert-Paare an die Anwendung weitergeleitet.

Ihr Anwendungscode kann mithilfe der Funktion $_SERVER oder get_cfg_var auf Umgebungseigenschaften zugreifen.

$endpoint = $_SERVER['API_ENDPOINT'];

Weitere Informationen finden Sie unter Umgebungsvariablen und andere Softwareeinstellungen.

Namespaces für die Konfiguration

Mithilfe einer Konfigurationsdatei können Sie im Rahmen der Bereitstellung Konfigurationsoptionen festlegen und andere Instance-Konfigurationsaufgaben durchführen. Die Konfigurationsoptionen können plattformspezifisch sein oder für alle Plattformen im Elastic Beanstalk-Service als Ganzes gelten. Die Konfigurationsoptionen sind in Namespaces organisiert.

Die folgenden Namespaces konfigurieren sowohl Ihren Proxydienst als auch PHP-spezifische Optionen:

  • aws:elasticbeanstalk:environment:proxy:staticfiles— konfiguriert den Umgebungs-Proxy so, dass er statische Dateien bereitstellt. Sie definieren Zuordnungen von virtuellen Pfaden zu Anwendungsverzeichnissen.

  • aws:elasticbeanstalk:environment:proxy— gibt den Proxyserver der Umgebung an.

  • aws:elasticbeanstalk:container:php:phpini— konfiguriert PHP-spezifische Optionen. Dieser Namespace beinhaltetcomposer_options, was auf der Elastic Beanstalk Beanstalk-Konsole nicht verfügbar ist. Diese Option legt die benutzerdefinierten Optionen fest, die bei der Installation von Abhängigkeiten mit Composer über den Befehl verwendet werden sollen. composer.phar install Weitere Informationen zu diesem Befehl, einschließlich der verfügbaren Optionen, finden Sie unter install auf der Website getcomposer.org.

Die folgende Beispielkonfigurationsdatei gibt eine Option für statische Dateien an, mit der ein Verzeichnis mit dem Namen staticimages dem Pfad /images zugeordnet wird, und zeigt die Einstellungen jeder der im Namespace aws:elasticbeanstalk:container:php:phpini verfügbaren Optionen an:

Beispiel .ebextensions/php-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache aws:elasticbeanstalk:environment:proxy:staticfiles: /images: staticimages aws:elasticbeanstalk:container:php:phpini: document_root: /public memory_limit: 128M zlib.output_compression: "Off" allow_url_fopen: "On" display_errors: "Off" max_execution_time: 60 composer_options: vendor/package
Anmerkung

Der Namespace aws:elasticbeanstalk:environment:proxy:staticfiles ist auf Amazon Linux AMI PHP-Plattformvarianten (Vorgänger von Amazon Linux 2) nicht definiert.

Elastic Beanstalk bietet zahlreiche Konfigurationsoptionen für die Anpassung Ihrer Umgebung. Neben den Konfigurationsdateien können Sie die Konfigurationsoptionen auch unter Verwendung der Konsole, gespeicherter Konfigurationen, der EB CLI oder der AWS CLI einrichten. Weitere Informationen finden Sie unter Konfigurationsoptionen.

Die Abhängigkeiten Ihrer Elastic Beanstalk PHP-Anwendung installieren

In diesem Thema wird beschrieben, wie Sie Ihre Anwendung so konfigurieren, dass sie andere PHP-Pakete installiert, die sie benötigt. Ihre Anwendung ist möglicherweise von anderen PHP-Paketen abhängig. Sie können Ihre Anwendung so konfigurieren, dass diese Abhängigkeiten auf den Amazon Elastic Compute Cloud (Amazon EC2) -Instances der Umgebung installiert werden. Alternativ können Sie die Abhängigkeiten Ihrer Anwendung in das Quell-Bundle einschließen und sie mit der Anwendung bereitstellen. Im folgenden Abschnitt werden beide Möglichkeiten vorgestellt.

Verwenden einer Composer-Datei zum Installieren von Abhängigkeiten von Instances

Verwenden Sie eine composer.json Datei im Stammverzeichnis Ihrer Projektquelle, um mithilfe von Composer Pakete zu installieren, die Ihre Anwendung auf den EC2 Amazon-Instances Ihrer Umgebung benötigt.

Beispiel composer.json
{ "require": { "monolog/monolog": "1.0.*" } }

Wenn eine composer.json-Datei vorhanden ist, führt Elastic Beanstalk composer.phar install aus, um Abhängigkeiten zu installieren. Sie können Optionen für den Befehl anfügen, indem Sie die Option composer_options im Namespace aws:elasticbeanstalk:container:php:phpini festlegen.

Einschließen von Abhängigkeiten in Quell-Bundles

Wenn Ihre Anwendung viele Abhängigkeiten hat, kann die Installation etwas länger dauern. Dies kann die Bereitstellung und Skalierung von Operationen erhöhen, da auf jeder neuen Instance Abhängigkeiten installiert sind.

Um negative Auswirkungen auf die Bereitstellungszeit zu vermeiden, können Sie mit Composer in Ihrer Entwicklungsumgebung Abhängigkeiten auflösen und sie im Ordner vendor zu installieren.

So schließen Sie Abhängigkeiten in das Quell-Bundle Ihrer Anwendung ein
  1. Führen Sie den folgenden Befehl aus:

    % composer install
  2. Fügen Sie den generierten Ordner vendor zum Stamm des Quell-Bundles der Anwendung hinzu.

Wenn Elastic Beanstalk einen Ordner vendor in der Instance findet, wird die Datei composer.json ignoriert (selbst, wenn sie vorhanden ist). Ihre Anwendung verwendet dann die Abhängigkeiten im Ordner vendor.

Composer auf Elastic Beanstalk aktualisieren

In diesem Thema wird beschrieben, wie Elastic Beanstalk konfiguriert wird, um Composer auf dem neuesten Stand zu halten. Möglicherweise müssen Sie Composer aktualisieren, wenn beim Versuch, Pakete mit einer Composer-Datei zu installieren, ein Fehler auftritt oder wenn Sie die neueste Plattformversion nicht verwenden können. Zwischen Plattformupdates können Sie Composer in Ihren Umgebungsinstanzen mithilfe der Konfigurationsdateien in Ihrem .ebextensionsOrdner aktualisieren.

Sie können Composer mit der folgenden Konfiguration selbst aktualisieren.

commands: 01updateComposer: command: /usr/bin/composer.phar self-update 2.7.0

Die folgende Optionseinstellung legt die COMPOSER_HOME Umgebungsvariable fest, die den Speicherort des Composer-Cache konfiguriert.

option_settings: - namespace: aws:elasticbeanstalk:application:environment option_name: COMPOSER_HOME value: /home/webapp/composer-home

Sie können beide in derselben Konfigurationsdatei in Ihrem .ebextensions Ordner kombinieren.

Beispiel .ebextensions/composer.config
commands: 01updateComposer: command: /usr/bin/composer.phar self-update 2.7.0 option_settings: - namespace: aws:elasticbeanstalk:application:environment option_name: COMPOSER_HOME value: /home/webapp/composer-home
Anmerkung

Aufgrund von Aktualisierungen der Composer-Installation in der Plattformversion vom 22. Februar 2024 AL2 023 und der Plattformversion vom 28. Februar 2024 schlägt das Composer-Selbstupdate möglicherweise fehl, wenn COMPOSER_HOME es bei der Ausführung des Selbstupdates festgelegt wird. AL2

Die folgenden kombinierten Befehle können nicht ausgeführt werden: export COMPOSER_HOME=/home/webapp/composer-home && /usr/bin/composer.phar self-update 2.7.0

Das vorherige Beispiel wird jedoch funktionieren. Im vorherigen Beispiel COMPOSER_HOME wird die Optionseinstellung für nicht an die 01updateComposer Ausführung weitergegeben, und sie wird auch nicht gesetzt, wenn der Self-Update-Befehl ausgeführt wird.

Wichtig

Falls Sie die Versionsnummer aus dem Befehl composer.phar self-update weglassen, wird Composer jedes Mal auf die neueste verfügbare Version aktualisiert, wenn Sie neuen Quellcode bereitstellen und neue Instances von der Auto Scaling-Funktion zur Verfügung gestellt werden. Das kann zu fehlerhaften Skalierungen und Bereitstellungen führen, falls eine Composer-Version veröffentlicht wird, die mit Ihrer Anwendung nicht kompatibel ist.

Weitere Informationen zu den Elastic-Beanstalk PHP-Plattformen, einschließlich der Composer-Version, finden Sie unter PHP-Plattformversionen im Dokument AWS Elastic Beanstalk -Plattformen.

php.ini in Ihrer Elastic Beanstalk Beanstalk-Konfiguration erweitern

Verwenden Sie eine Konfigurationsdatei mit einem files-Block, um eine .ini-Datei zu /etc/php.d/ auf den Instances der Umgebung hinzuzufügen. Von der Hauptkonfigurationsdatei php.ini werden die Einstellungen aus den Dateien in diesem Ordner in alphabetischer Reihenfolge abgerufen. Viele Erweiterungen werden standardmäßig über die Dateien in diesem Ordner aktiviert.

Beispiel .ebextensions/mongo.config
files: "/etc/php.d/99mongo.ini": mode: "000755" owner: root group: root content: | extension=mongo.so