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>");