本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Elastic Beanstalk PHP 平台
本主题介绍如何在 Elastic Beanstalk 上配置、构建和运行您的PHP应用程序。
AWS Elastic Beanstalk 支持适用于不同版本的PHP编程语言的多个平台分支。这些平台支持可以单独运行或在 Composer 下运行的 PHP Web 应用程序。PHP参见 AWS Elastic Beanstalk 平台文档,了解支持的平台分支的完整列表。
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 平台。
亚马逊 Linux 上使用 PHP 8.1 的注意事项 2
如果您在亚马逊 Linux 2 平台分支上使用 PHP 8.1,请阅读本节。
注意
本主题中的信息仅适用于亚马逊 Linux 2 平台上的 PHP 8.1 分支。它不适用于基于 AL2 023 的PHP平台分支。它也不适用于 PHP8.0 亚马逊 Linux 2 平台分支。
Elastic Beanstalk 将RPM亚马逊 Linux 2 平台分支上的 8.1 相关软件包PHP存储在本地目录中的实例EC2上,而不是亚马逊 Linux 存储库中。PHP您可以使用 rpm -i 来安装程序包。从 PHP8.1 平台版本 3.5.0 开始,Elastic Beanstalk 将 RPM 8.1 相关软件包PHP存储在以下本地目录中。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 8.1 平台在PHP亚马逊 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环境
打开 Elastic Beanstalk
控制台,然后在区域列表中,选择你的 AWS 区域. -
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
注意
如果您有多个环境,请使用搜索栏筛选环境列表。
在导航窗格中,选择 Configuration(配置)。
-
在 Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。
PHP设置
-
Proxy server(代理服务器)– 要在环境实例上使用的代理服务器。默认情况下,使用 nginx。
-
Document root(文档根目录)– 包含您站点的默认页面的文件夹。如果您的欢迎页面不位于源包的根目录,请指定包含该页面且与根路径相关的文件夹。例如,如果欢迎页面位于名为
/public
的文件夹中,则为public
。 -
Memory limit(内存限制)– 允许脚本分配的最大内存量。例如,
512M
。 -
Zlib output compression(Zlib 输出压缩)– 设置为
On
可压缩响应。 -
允许 URL fopen — 设置
Off
为可防止脚本从远程位置下载文件。 -
Display errors(显示错误)– 设置为
On
可显示要调试的内部错误消息。 -
Max execution time(最长执行时间)– 脚本在被环境终止前允许运行的最长时间,单位为秒。
日志选项
“日志选项”部分有两个设置:
-
Instance profile(实例配置文件)– 指定有权访问与应用程序关联的 Amazon S3 存储桶的实例配置文件。
-
启用向 Amazon S3 的日志文件轮换-指定是否将应用程序的 Amazon EC2 实例的日志文件复制到与您的应用程序关联的 Amazon S3 存储桶中。
静态文件
要提高性能,可以使用 “静态文件” 部分将代理服务器配置为从 Web 应用程序内的一组目录中提供静态文件(例如HTML或图像)。对于每个目录,您都将虚拟路径设置为目录映射。当代理服务器收到对指定路径下的某个文件的请求时,它将直接提供此文件,而不是将请求路由至您的应用程序。
有关使用配置文件或 Elastic Beanstalk 控制台配置静态文件的详细信息,请参阅 提供静态文件。
环境属性
环境属性部分允许您在运行您的应用程序的 Amazon EC2 实例上指定环境配置设置。这些设置会以密钥值对的方式传递到应用程序。
您的应用程序代码可使用 $_SERVER
或 get_cfg_var
函数来访问环境属性。
$endpoint = $_SERVER['API_ENDPOINT'];
请参阅环境属性和其他软件设置了解更多信息。
用于配置的命名空间
您可以使用配置文件设置配置选项并在部署期间执行其他实例配置。配置选项可以是特定于平台的,也可以应用于整个 Elastic Beanstalk 服务中的所有平台。配置选项按命名空间进行组织。
以下命名空间可配置您的代理服务和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
命名空间未在亚马逊 Linux AMI PHP 平台分支上定义(之前的亚马逊 Linux 2)。
Elastic Beanstalk 提供了许多用于自定义环境的配置选项。除了配置文件外,您还可以使用控制台、保存的配置CLI、EB 或 AWS CLI。 有关配置选项更多信息,请参阅。