本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 PHP 平台
P AWS App Runner HP 平台提供托管运行时。您可以使用每个运行时来构建和运行带有基于 PHP 版本的 Web 应用程序的容器。当你使用 PHP 运行时时,App Runner 从托管的 PHP 运行时镜像开始。此镜像基于 Amazon Linux Docker 镜像
在使用 App Runner 控制台或 CreateServiceAPI 操作创建服务时,可以为 App Runner 服务指定运行时。您也可以将运行时指定为源代码的一部分。在包含在代码存储库中的 A pp Runner 配置文件中使用runtime
关键字。托管运行时的命名约定是。 <language-name><major-version>
有关有效的 PHP 运行时名称和版本,请参见PHP运行时版本信息。
每次部署或服务更新时,App Runner 都会将服务的运行时更新到最新版本。如果您的应用程序需要托管运行时的特定版本,则可以使用 App Runner 配置文件中的runtime-version
关键字进行指定。您可以锁定到任何级别的版本,包括主要版本或次要版本。App Runner 仅对服务的运行时进行较低级别的更新。
PHP 运行时的版本语法:major
[.minor
[.patch
]]
例如:8.1.10
以下是版本锁定的示例:
-
8.1
— 锁定主要版本和次要版本。App Runner 仅更新补丁版本。 -
8.1.10
— 锁定到特定的补丁版本。App Runner 不会更新你的运行时版本。
重要
如果您想将 App Runner 服务的代码存储库源目录指定到默认存储库根目录以外的位置,则您的 PHP 托管运行时版本必须是 PHP 8.1.22
或更高版本。之前的 PHP 运行时版本8.1.22
只能使用默认的根源目录。
PHP 运行时配置
选择托管运行时时,还必须至少配置生成和运行命令。您可以在创建或更新 App Runner 服务时对其进行配置。您可以使用以下方法之一来执行此操作:
-
使用 App Runner 控制台-在创建过程或配置选项卡的 “配置构建” 部分中指定命令。
-
使用 App Runner API — 调用CreateService或 UpdateServiceAPI 操作。使用CodeConfigurationValues数据类型的
BuildCommand
和StartCommand
成员来指定命令。 -
使用配置文件-在最多三个构建阶段中指定一个或多个构建命令,并指定一个用于启动应用程序的运行命令。还有其他可选的配置设置。
提供配置文件是可选的。使用控制台或 API 创建 App Runner 服务时,您可以指定 App Runner 是在创建时直接获取配置设置还是从配置文件中获取配置设置。
兼容性
您可以使用以下 Web 服务器之一在 PHP 平台上运行 App Runner 服务:
-
Apache HTTP Server
-
NGINX
Apache HTTP ServerNGINX并且与 PHP-FPM 兼容。您可以使用以下任一方法NGINX来启动Apache HTTP Server和:
-
S@@ upervisord
-有关运行的更多信息 supervisord,请参阅运行 supervisord。 -
启动脚本
有关如何使用 Ap ache HTTP 服务器或 NGINX 在 PHP 平台上配置 App Runn er 服务的示例,请参阅。完整的 PHP 应用程序源码
文件结构
index.php
必须安装在 Web 服务器root
目录下的public
文件夹中。
注意
我们建议将startup.sh
或supervisord.conf
文件存储在 Web 服务器的根目录中。确保该start
命令指向存储startup.sh
或supervisord.conf
文件的位置。
如果您正在使用,以下是文件结构的示例supervisord。
/
├─ public/
│ ├─ index.php
├─ apprunner.yaml
├─ supervisord.conf
以下是使用启动脚本时的文件结构示例。
/
├─ public/
│ ├─ index.php
├─ apprunner.yaml
├─ startup.sh
我们建议您将这些文件结构存储在为 App Runner 服务指定的代码存储库源目录中。
/<sourceDirectory
>/
├─ public/
│ ├─ index.php
├─ apprunner.yaml
├─ startup.sh
重要
如果您想将 App Runner 服务的代码存储库源目录指定到默认存储库根目录以外的位置,则您的 PHP 托管运行时版本必须是 PHP 8.1.22
或更高版本。之前的 PHP 运行时版本8.1.22
只能使用默认的根源目录。
每次部署或服务更新时,App Runner 都会将服务的运行时更新到最新版本。默认情况下,您的服务将使用最新的运行时,除非您在 App Runner 配置文件中使用runtime-version
关键字指定版本锁定。
PHP 运行时示例
以下是用于构建和运行 PHP 服务的 App Runner 配置文件的示例。
以下示例是可以与 PHP 托管运行时一起使用的最小配置文件。有关最小配置文件的更多信息,请参阅配置文件示例。
例 apprunner.yaml
version: 1.0 runtime: php81 build: commands: build: - echo example build command for PHP run: command: ./startup.sh
以下示例使用了 PHP 托管运行时的所有配置密钥。
注意
这些示例中使用的运行时版本是 8.1.10
。您可以将其替换为要使用的版本。有关支持的最新的 PHP 运行时版本,请参阅PHP运行时版本信息。
例 apprunner.yaml
version: 1.0 runtime: php81 build: commands: pre-build: - scripts/prebuild.sh build: - echo example build command for PHP post-build: - scripts/postbuild.sh env: - name: MY_VAR_EXAMPLE value: "example" run: runtime-version:
8.1.10
command: ./startup.sh network: port: 5000 env: APP_PORT env: - name: MY_VAR_EXAMPLE value: "example"
以下示例是 PHP 应用程序源代码,您可以使用这些源代码通过Apache HTTP Server或将其部署到 PHP 运行时服务NGINX。这些示例假设您使用默认文件结构。
Apache HTTP Server使用运行 PHP 平台 supervisord
例 文件结构
注意
-
该
supervisord.conf
文件可以存储在存储库中的任何地方。确保该start
命令指向supervisord.conf
文件的存储位置。 -
index.php
必须安装在root
目录下的public
文件夹中。
/
├─ public/
│ ├─ index.php
├─ apprunner.yaml
├─ supervisord.conf
例 superisord.conf
[supervisord] nodaemon=true [program:httpd] command=httpd -DFOREGROUND autostart=
true
autorestart=true
stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:php-fpm] command=php-fpm -F autostart=true
autorestart=true
stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0
例 apprunner.yaml
version: 1.0 runtime: php81 build: commands: build: - PYTHON=python2 amazon-linux-extras install epel - yum -y install supervisor run: command: supervisord network: port: 8080 env: APP_PORT
例 index.php
<html> <head> <title>First PHP App</title> </head> <body> <?php print("Hello World!"); print("<br>"); ?> </body> </html>
Apache HTTP Server使用运行 PHP 平台 startup script
例 文件结构
注意
-
该
startup.sh
文件可以存储在存储库中的任何地方。确保该start
命令指向startup.sh
文件的存储位置。 -
index.php
必须安装在root
目录下的public
文件夹中。
/
├─ public/
│ ├─ index.php
├─ apprunner.yaml
├─ startup.sh
例 startup.sh
#!/bin/bash set -o monitor trap exit SIGCHLD # Start apache httpd -DFOREGROUND & # Start php-fpm php-fpm -F & wait
注意
-
在将
startup.sh
文件提交到 Git 存储库之前,请务必将其保存为可执行文件。chmod +x startup.sh
用于为您的startup.sh
文件设置执行权限。 -
如果未将
startup.sh
文件另存为可执行文件,请在apprunner.yaml
文件中以build
命令chmod +x startup.sh
形式输入。
例 apprunner.yaml
version: 1.0 runtime: php81 build: commands: build: - echo example build command for PHP run: command: ./startup.sh network: port: 8080 env: APP_PORT
例 index.php
<html> <head> <title>First PHP App</title> </head> <body> <?php print("Hello World!"); print("<br>"); ?> </body> </html>
NGINX使用运行 PHP 平台 supervisord
例 文件结构
注意
-
该
supervisord.conf
文件可以存储在存储库中的任何地方。确保该start
命令指向supervisord.conf
文件的存储位置。 -
index.php
必须安装在root
目录下的public
文件夹中。
/
├─ public/
│ ├─ index.php
├─ apprunner.yaml
├─ supervisord.conf
例 superisord.conf
[supervisord] nodaemon=true [program:nginx] command=nginx -g "daemon off;" autostart=
true
autorestart=true
stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:php-fpm] command=php-fpm -F autostart=true
autorestart=true
stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0
例 apprunner.yaml
version: 1.0 runtime: php81 build: commands: build: - PYTHON=python2 amazon-linux-extras install epel - yum -y install supervisor run: command: supervisord network: port: 8080 env: APP_PORT
例 index.php
<html> <head> <title>First PHP App</title> </head> <body> <?php print("Hello World!"); print("<br>"); ?> </body> </html>
NGINX使用运行 PHP 平台 startup script
例 文件结构
注意
-
该
startup.sh
文件可以存储在存储库中的任何地方。确保该start
命令指向startup.sh
文件的存储位置。 -
index.php
必须安装在root
目录下的public
文件夹中。
/
├─ public/
│ ├─ index.php
├─ apprunner.yaml
├─ startup.sh
例 startup.sh
#!/bin/bash set -o monitor trap exit SIGCHLD # Start nginx nginx -g 'daemon off;' & # Start php-fpm php-fpm -F & wait
注意
-
在将
startup.sh
文件提交到 Git 存储库之前,请务必将其保存为可执行文件。chmod +x startup.sh
用于为您的startup.sh
文件设置执行权限。 -
如果未将
startup.sh
文件另存为可执行文件,请在apprunner.yaml
文件中以build
命令chmod +x startup.sh
形式输入。
例 apprunner.yaml
version: 1.0 runtime: php81 build: commands: build: - echo example build command for PHP run: command: ./startup.sh network: port: 8080 env: APP_PORT
例 index.php
<html> <head> <title>First PHP App</title> </head> <body> <?php print("Hello World!"); print("<br>"); ?> </body> </html>