PHP 플랫폼 사용 - AWS App Runner

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

PHP 플랫폼 사용

AWS App Runner PHP 플랫폼은 관리형 런타임을 제공합니다. 각 런타임을 사용하여 PHP 버전을 기반으로 하는 웹 애플리케이션으로 컨테이너를 빌드하고 실행할 수 있습니다. PHP 런타임을 사용하는 경우 App Runner는 관리형 PHP 런타임 이미지로 시작합니다. 이 이미지는 Amazon Linux Docker 이미지를 기반으로 하며 PHP 버전용 런타임 패키지와 일부 도구를 포함합니다. App Runner는 이 관리형 런타임 이미지를 기본 이미지로 사용하고 애플리케이션 코드를 추가하여 Docker 이미지를 빌드합니다. 그런 다음 이 이미지를 배포하여 컨테이너에서 웹 서비스를 실행합니다.

App Runner 콘솔 또는 API 작업을 사용하여 서비스를 만들 때 App Runner 서비스의 런타임을 지정합니다. CreateService 런타임을 소스 코드의 일부로 지정할 수도 있습니다. 코드 리포지토리에 포함하는 App 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 콘솔 사용 — 생성 프로세스 또는 구성 탭의 빌드 구성 섹션에서 명령을 지정합니다.

  • 앱 러너 API 사용 — CreateService또는 UpdateServiceAPI 작업을 호출합니다. CodeConfigurationValues데이터 유형의 BuildCommandStartCommand 멤버를 사용하여 명령을 지정합니다.

  • 구성 파일 사용 - 최대 3번의 빌드 단계에서 하나 이상의 빌드 명령과 애플리케이션을 시작하는 데 사용되는 단일 실행 명령을 지정합니다. 추가 선택적 구성 설정이 있습니다.

구성 파일 제공은 선택 사항입니다. 콘솔 또는 API를 사용하여 App Runner 서비스를 만들 때는 App Runner가 구성 설정을 만들 때 직접 가져오는지 아니면 구성 파일에서 가져오는지 지정합니다.

호환성

다음 웹 서버 중 하나를 사용하여 PHP 플랫폼에서 App Runner 서비스를 실행할 수 있습니다.

  • Apache HTTP Server

  • NGINX

Apache HTTP ServerPHP-FPM과도 NGINX 호환됩니다. 다음 중 하나를 NGINX사용하여 Apache HTTP ServerAND를 시작할 수 있습니다.

  • 수퍼바이저 - 실행에 대한 자세한 내용은 수퍼바이저 실행을 참조하십시오. supervisord

  • 시작 스크립트

Apache HTTP Server 또는 NGINX를 사용하여 PHP 플랫폼에서 App Runner 서비스를 구성하는 방법에 대한 예는 을 참조하십시오. 완전한 PHP 애플리케이션 소스

파일 구조

웹 서버 root 디렉터리 아래의 public 폴더에 index.php 설치해야 합니다.

참고

startup.sh또는 supervisord.conf 파일은 웹 서버의 루트 디렉터리에 저장하는 것이 좋습니다. 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 런타임 서비스에 배포하는 데 사용할 수 있는 PHP 응용 프로그램 소스 코드의 예입니다. Apache HTTP ServerNGINX 이 예제에서는 기본 파일 구조를 사용한다고 가정합니다.

를 사용하여 Apache HTTP Server PHP 플랫폼 실행 supervisord

예 파일 구조
참고
  • supervisord.conf파일은 저장소의 어느 곳에나 저장할 수 있습니다. start명령이 supervisord.conf 파일이 저장된 위치를 가리키는지 확인하십시오.

  • root디렉터리 아래의 public 폴더에 index.php 설치해야 합니다.

/ ├─ public/ │ ├─ index.php ├─ apprunner.yaml ├─ supervisord.conf
예 supervisord.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
예 aprunner.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 파일이 저장된 위치를 가리키는지 확인하십시오.

  • root디렉터리 아래의 public 폴더에 index.php 설치해야 합니다.

/ ├─ 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 파일의 chmod +x startup.sh build 명령으로 를 입력합니다.

예 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 파일이 저장된 위치를 가리키는지 확인하십시오.

  • root디렉터리 아래의 public 폴더에 index.php 설치해야 합니다.

/ ├─ public/ │ ├─ index.php ├─ apprunner.yaml ├─ supervisord.conf
예 supervisord.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
예 aprunner.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 파일이 저장된 위치를 가리키는지 확인하십시오.

  • root디렉터리 아래의 public 폴더에 index.php 설치해야 합니다.

/ ├─ 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 파일의 chmod +x startup.sh build 명령으로 를 입력합니다.

예 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>