本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Elastic Beanstalk PHP 平台
本主題說明如何在 Elastic Beanstalk 上設定、建置和執行PHP應用程式。
AWS Elastic Beanstalk 支持多個不同版本的PHP編程語言的平台分支。這些平台支援可以單獨執行或在 Composer 下執行的 PHP Web 應用程式。請參閱PHP中的 AWS Elastic Beanstalk 平台文件以取得支援平台分支的完整清單。
Elastic Beanstalk 提供設定選項,您可以使用這些選項來自訂在 Elastic Beanstalk EC2 環境中執行的執行個體上執行的軟體。您可以設定應用程式所需的環境變數、啟用日誌輪替至 Amazon S3、將包含靜態檔案的應用程式來源中的資料夾對應到 Proxy 伺服器提供的路徑,以及設定通用PHP初始化設定。
Elastic Beanstalk 主控台中提供了修改正在執行環境組態的組態選項。要避免在終止環境的組態時遺失組態,您可以使用已儲存組態來儲存您的設定,並在之後套用至另一個環境。
若要將設定儲存於原始程式碼,您可以包含組態檔案。每次您建立環境或部署應用程式,組態檔案裡的設定就會套用。您也可以使用組態檔案來安裝套件、執行指令碼,並在部署期間執行其他執行個體自訂操作。
若使用 Composer,您可將 composer.json 檔案納入您的原始碼套件,藉此於部署期間安裝套件。
對於未作為PHP組態選項提供的進階組態和PHP設定,您可以使用組態INI檔案提供可延伸和覆寫 Elastic Beanstalk 套用之預設設定的檔案,或安裝其他擴充功能。
在 Elastic Beanstalk 主控台中套用的設定會覆寫組態檔案中相同的設定 (如存在)。這可讓您在組態檔案中擁有預設設定,並以主控台的環境專屬設定覆寫之。如需優先順序以及其他變更設定方法的詳細資訊,請參閱組態選項。
如需各種擴充 Elastic Beanstalk Linux 類型平台方式的詳細資訊,請參閱 擴充 Elastic Beanstalk Linux 平台。
在 Amazon PHP 8.1 上的注意事項 2
如果您在 Amazon Linux 2 平台分支上使用 PHP 8.1,請閱讀本節。
注意
本主題中的資訊僅適用於 Amazon Linux 2 平台分支上的 PHP 8.1。它不適用於基於 AL2 023 的PHP平台分支。它也不適用於 PHP8.0 Amazon Linux 2 平台分支。
Elastic Beanstalk 在 Amazon Linux 2 平台分支上將 PHP PHP 8.1 相關RPM套件存儲在本地目錄中,而不是 Amazon Linux 存儲庫中的EC2執行個體。您可以使用 rpm -i 來安裝套件。從 PHP8.1 平台版本 3.5.0 開始,Elastic Beanstalk 將 PHP 8.1 相關的RPM軟件包存儲在以下本地目錄中。EC2
/opt/elasticbeanstalk/RPMS
下列範例會安裝 PHP 的調試 包裝。
$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-1 和 3.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,請參閱PEARPHP擴充功能和應用程式儲存庫
以下範例命令會安裝 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環境
開啟彈性魔豆控制台
,然後在「區域」列表中選擇您的 AWS 區域. -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
在導覽窗格中,選擇組態。
-
在更新、監控和日誌記錄組態類別中,選擇編輯。
PHP設定
-
代理伺服器 – 要在您的環境執行個體上使用的代理伺服器。預設使用 nginx。
-
文件根目錄 – 內含您網站預設頁面的資料夾。若您的歡迎頁面並非位於原始碼套件的根目錄,請指定相對於根路徑所在的資料夾。例如,若歡迎頁面位於名為
/public
的資料夾,則為public
。 -
記憶體限制 – 允許指令碼進行記憶體配置的容量上限。例如:
512M
。 -
Zlib 輸出壓縮 – 設定為
On
以壓縮回應資料。 -
允許 URL fopen — 設定為防
Off
止指令碼從遠端位置下載檔案。 -
顯示錯誤 – 設定為
On
以顯示用於除錯的內部錯誤訊息。 -
執行時間上限 – 指令碼於環境將其終止前可執行的時間上限 (秒)。
日誌選項
Log Options (日誌選項) 區段有兩個設定:
-
Instance profile (執行個體描述檔) – 指定執行個體描述檔,此描述檔具備存取和您應用程式相關聯 Amazon S3 儲存貯體的許可。
-
啟用 Amazon S3 的日誌檔輪替 — 指定是否將應用程式 Amazon EC2 執行個體的日誌檔複製到與應用程式關聯的 Amazon S3 儲存貯體。
靜態檔案
若要改善效能,您可以使用 [靜態檔案] 區段,將 Proxy 伺服器設定為從 Web 應用程式內的一組目錄提供靜態檔案 (例如,HTML或影像)。對於每個目錄,您可以設定目錄映射的虛擬路徑。代理伺服器收到位於指定路徑下的檔案請求時,會直接提供檔案而非將請求路由至您的應用程式。
如需使用組態檔案或 Elastic Beanstalk 主控台設定靜態檔案的詳細資訊,請參閱提供靜態檔案。
環境屬性
環境屬性區段可讓您在執行應用程式的 Amazon EC2 執行個體上指定環境組態設定。這些設定會以金鑰值對的形式傳到應用程式。
您的應用程式程式碼可以使用 $_SERVER
或 get_cfg_var
函數來存取環境屬性。
$endpoint = $_SERVER['API_ENDPOINT'];
如需更多資訊,請參閱環境屬性與其他軟體設定。
用於配置的命名空間
您可以使用組態檔案來設定組態選項,並在部署期間執行其他的執行個體設定工作。組態選項可以是平台特定的,也可以整體套用至 Elastic Beanstalk 服務中的所有平台。組態選項會組織成命名空間。
下列命名空間會同時設定 Proxy 服務和PHP特定選項:
-
aws:elasticbeanstalk:environment:proxy:staticfiles-配置環境代理以提供靜態文件。您可以定義虛擬路徑到應用程式目錄的對應項目。
-
aws:elasticbeanstalk:environment:proxy— 指定環境的代理伺服器。
-
aws:elasticbeanstalk:container:php:phpini— 配置PHP特定選項。此命名空間包括
composer_options
Elastic Beanstalk 控制台上不可用的命名空間。此選項設定透過composer.phar install
指令使用 Composer 安裝相依性時要使用的自訂選項。如需有關此命令的詳細資訊 (包括可用選項),請參閱 getcomposer .org 網站上的安裝。
下列範例組態檔案會指定靜態檔案選項, 將名為 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 可提供許多組態選項讓您自訂環境。除了組態檔案之外,您也可以使用主控台、儲存的組態CLI、EB 或 AWS CLI。 組態選項如需詳細資訊,請參閱。