使用 Elastic Beanstalk PHP 平台 - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Elastic Beanstalk PHP 平台

本主題說明如何在 Elastic Beanstalk 上設定、建置和執行 PHP 應用程式。

AWS Elastic Beanstalk 支援多個不同版本 PHP 程式設計語言的平台分支。這些平台支援可獨立執行或於 Composer 底下執行的 PHP Web 應用程式。如需支援平台分支的完整清單,請參閱 AWS Elastic Beanstalk 平台文件中的 PHP

Elastic Beanstalk 提供組態選項,您可用其於 Elastic Beanstalk 環境中自訂 EC2 執行個體上執行的軟體。您可以設定應用程式所需的環境變數,啟用 Amazon S3 的日誌輪換,將包含靜態檔案的應用程式來源中的資料夾映射到代理伺服器提供的路徑,並進行常見 PHP 初始化設定。

Elastic Beanstalk 主控台中提供了修改正在執行環境組態的組態選項。要避免在終止環境的組態時遺失組態,您可以使用已儲存組態來儲存您的設定,並在之後套用至另一個環境。

若要將設定儲存於原始程式碼,您可以包含組態檔案。每次您建立環境或部署應用程式,組態檔案裡的設定就會套用。您也可以使用組態檔案來安裝套件、執行指令碼,並在部署期間執行其他執行個體自訂操作。

若使用 Composer,您可將 composer.json 檔案納入您的原始碼套件,藉此於部署期間安裝套件。

以未做為組態選項提供的進階 PHP 組態和 PHP 設定而言,您可以使用組態檔案來提供 INI 檔案,以此擴展並覆寫 Elastic Beanstalk 套用的預設設定,或以此安裝其他延伸模組。

在 Elastic Beanstalk 主控台中套用的設定會覆寫組態檔案中相同的設定 (如存在)。這可讓您在組態檔案中擁有預設設定,並以主控台的環境專屬設定覆寫之。如需優先順序以及其他變更設定方法的詳細資訊,請參閱組態選項

如需各種擴充 Elastic Beanstalk Linux 類型平台方式的詳細資訊,請參閱 擴充 Elastic Beanstalk Linux 平台

PHP 8.1 on Amazon Linux 2 注意事項

如果使用的是 PHP 8.1 on Amazon Linux 2 平台分支,請閱讀本節。

注意

本主題中的資訊僅適用於 PHP 8.1 on Amazon Linux 2 平台分支。不適用於基於 AL2023 的 PHP 平台分支。也不適用於 PHP 8.0 Amazon Linux 2 平台分支。

Elastic Beanstalk 會將 EC2 執行個體上 PHP 8.1 on Amazon Linux 2 平台分支的 PHP 8.1 相關 RPM 套件儲存在本機目錄中,而不是 Amazon Linux 儲存庫中。您可以使用 rpm -i 來安裝套件。從 PHP 8.1 平台版本 3.5.0 開始,Elastic Beanstalk 會將與 PHP 8.1 有關的 RPM 套件儲存在以下本機 EC2 目錄中。

/opt/elasticbeanstalk/RPMS

以下範例會安裝 php-debuginfo 套件。

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

套件名稱中的版本會因 EC2 本機目錄 /opt/elasticbeanstalk/RPMS 中所列的實際版本而有所不同。使用相同的語法來安裝其他 PHP 8.1 RPM 套件。

展開以下區塊,顯示我們提供的 RPM 套件清單。

以下清單提供 Elastic Beanstalk PHP 8.1 平台在 Amazon Linux 2 上提供的 RMP 套件。這些位於本機目錄 /opt/elasticbeanstalk/RPMS 中。

列示套件名稱中的版本編號 8.1.8-13.7.0-1 僅為範例。

  • 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

您可以使用 PEAR 和 PECL 套件來安裝常見的擴充功能。如需 PEAR 的詳細資訊,請參閱 PEAR PHP 擴充功能和應用程式儲存庫網站。如需 PECL 的詳細資訊,請參閱 PECL 擴充功能網站。

以下範例命令會安裝 Memcached 擴充功能。

$pecl install memcache

或者您也可以使用以下內容:

$pear install pecl/memcache

以下範例命令會安裝 Redis 擴充功能。

$pecl install redis

或者您也可以使用以下內容:

$pear install pecl/redis

設定您的 PHP 環境

您可以使用 Elastic Beanstalk 主控台來啟用至 Amazon S3 的日誌輪換,設定您的應用程式可以從環境讀取的變數,並變更 PHP 設定。

在 Elastic Beanstalk 主控台中設定 PHP 環境
  1. 開啟 Elastic Beanstalk 主控台,然後在區域清單中選取您的 AWS 區域。

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 在導覽窗格中,選擇組態

  4. 更新、監控和日誌記錄組態類別中,選擇編輯

PHP 設定

  • 代理伺服器 – 要在您的環境執行個體上使用的代理伺服器。預設使用 nginx。

  • 文件根目錄 – 內含您網站預設頁面的資料夾。若您的歡迎頁面並非位於原始碼套件的根目錄,請指定相對於根路徑所在的資料夾。例如,若歡迎頁面位於名為 /public 的資料夾,則為 public

  • 記憶體限制 – 允許指令碼進行記憶體配置的容量上限。例如:512M

  • Zlib 輸出壓縮 – 設定為 On 以壓縮回應資料。

  • 允許 URL fopen – 設定為 Off 以避免指令碼自遠端位置下載檔案。

  • 顯示錯誤 – 設定為 On 以顯示用於除錯的內部錯誤訊息。

  • 執行時間上限 – 指令碼於環境將其終止前可執行的時間上限 (秒)。

日誌選項

Log Options (日誌選項) 區段有兩個設定:

  • Instance profile (執行個體描述檔) – 指定執行個體描述檔,此描述檔具備存取和您應用程式相關聯 Amazon S3 儲存貯體的許可。

  • Enable log file rotation to Amazon S3 (啟用 Amazon S3 的日誌檔案輪換) – 指定是否將應用程式 Amazon EC2 執行個體的日誌檔案複製到與應用程式關聯的 Amazon S3 儲存貯體。

靜態檔案

為改善效能,您可以使用 Static files (靜態檔案) 區段來設定代理伺服器,以為來自 Web 應用程式一組目錄中的靜態檔案 (例如 HTML 或影像) 提供服務。對於每個目錄,您可以設定目錄映射的虛擬路徑。代理伺服器收到位於指定路徑下的檔案請求時,會直接提供檔案而非將請求路由至您的應用程式。

如需使用組態檔案或 Elastic Beanstalk 主控台設定靜態檔案的詳細資訊,請參閱提供靜態檔案

環境屬性

Environment Properties (環境屬性) 的部分可讓您針對執行您應用程式的 Amazon EC2 執行個體,來指定其上的環境資訊設定。這些設定會以金鑰值對的形式傳到應用程式。

您的應用程式程式碼可以使用 $_SERVERget_cfg_var 函數來存取環境屬性。

$endpoint = $_SERVER['API_ENDPOINT'];

如需更多資訊,請參閱環境屬性與其他軟體設定

組態的命名空間

您可以使用組態檔案來設定組態選項,並在部署期間執行其他的執行個體設定工作。組態選項可以是平台特定的,也可以套用至 Elastic Beanstalk 服務整體中的所有平台。組態選項會組織成命名空間

下列命名空間會同時設定代理服務和 PHP 特定選項:

下列範例組態檔案會指定靜態檔案選項, 將名為 staticimages 的目錄對應至路徑 /images,並顯示 aws:elasticbeanstalk:container:php:phpini 命名空間中每個可用選項的設定:

範例 .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
注意

aws:elasticbeanstalk:environment:proxy:staticfiles 命名空間未在 Amazon Linux AMI PHP 平台分支上定義 (前述的 Amazon Linux 2)。

Elastic Beanstalk 可提供許多組態選項讓您自訂環境。除了組態檔案,您也可以使用主控台、已儲存組態、EB CLI 或 AWS CLI來設定組態選項。如需更多資訊,請參閱組態選項