相关文章推荐
无聊的杨桃  ·  Spring JPA Group ...·  3 年前    · 
温文尔雅的豆芽  ·  JSON.stringify(), ...·  3 年前    · 
成熟的梨子  ·  quartz cron表达式 ...·  3 年前    · 

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 UpdateService API 操作。使用 CodeConfigurationValues 数据类型的 BuildCommand StartCommand 成员来指定命令。

使用 配置文件 -在最多三个构建阶段中指定一个或多个构建命令,并指定一个用于启动应用程序的运行命令。还有其他可选的配置设置。

提供配置文件是可选的。使用控制台或 API 创建 App Runner 服务时,您可以指定 App Runner 是在创建时直接获取配置设置还是从配置文件中获取配置设置。

您可以使用以下 Web 服务器之一在 PHP 平台上运行 App Runner 服务:

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 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 - name: MY_VAR_EXAMPLE value: "example" runtime-version: 8.1.10 command: ./startup.sh network: port: 5000 env: APP_PORT - name: MY_VAR_EXAMPLE value: "example"

以下示例是 PHP 应用程序源代码,您可以使用这些源代码部署到 PHP 运行时服务 Apache HTTP Server NGINX 。 这些示例假设您使用默认文件结构。

使用 PHP 平台运行 Apache HTTP Server 使用 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 command: supervisord network: port: 8080 env: APP_PORT
例 index.php
<html> <head> <title>First PHP App</title> </head> print("Hello World!"); print("<br>"); </body> </html>

使用 PHP 平台运行 Apache HTTP Server 使用 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 &

在将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 command: ./startup.sh network: port: 8080 env: APP_PORT
例 index.php
<html> <head> <title>First PHP App</title> </head> print("Hello World!"); print("<br>"); </body> </html>

使用 PHP 平台运行 NGINX 使用 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 command: supervisord network: port: 8080 env: APP_PORT
例 index.php
<html> <head> <title>First PHP App</title> </head> print("Hello World!"); print("<br>"); </body> </html>

使用 PHP 平台运行 NGINX 使用 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 &

在将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 command: ./startup.sh network: port: 8080 env: APP_PORT
例 index.php
<html> <head> <title>First PHP App</title> </head> print("Hello World!"); print("<br>");