기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Elastic Beanstalk PHP 플랫폼 사용
AWS Elastic Beanstalk 는 다양한 버전의 PHP에 대한 다양한 플랫폼 브랜치를 제공하고 지원합니다. 플랫폼은 독립형 또는 Composer에서 실행되는 PHP 웹 애플리케이션을 지원합니다. 지원되는 플랫폼 브랜치의 전체 목록은 AWS Elastic Beanstalk 플랫폼 문서의 PHP를 참조하세요.
Elastic Beanstalk는 Elastic Beanstalk 환경의 Amazon EC2 인스턴스에서 실행되는 소프트웨어를 사용자 지정하는 데 사용할 수 있는 구성 옵션을 제공합니다. 애플리케이션에 필요한 환경 변수를 구성하고, Amazon S3에 대한 로그 교체를 활성화하며, 정적 파일이 포함된 애플리케이션 소스의 폴더를 프록시 서버에서 제공하는 경로로 매핑하고, 공통 PHP 초기화 설정을 지정할 수 있습니다.
실행 환경 구성을 수정하기 위해 Elastic Beanstalk 콘솔의 구성 옵션을 사용할 수 있습니다. 저장된 구성을 사용해 설정을 저장하면 환경 종료 시 구성이 훼손되지 않도록 할 수 있으며, 추후 기타 환경에서도 적용할 수 있습니다.
소스 코드에 설정을 저장하려면 구성 파일을 포함시킬 수 있습니다. 구성 파일 설정은 환경을 생성하거나 애플리케이션을 배포할 때마다 적용됩니다. 구성 파일을 사용하여 패키지를 설치하거나, 스크립트를 실행하거나, 배포 중 기타 인스턴스 사용자 지정 작업을 수행할 수 있습니다.
Composer를 사용하는 경우 소스 번들에 composer.json 파일을 포함하여 배포 중 패키지를 설치할 수 있습니다.
구성 옵션으로 제공되지 않는 고급 PHP 구성과 PHP 설정의 경우, 구성 파일을 사용하여 INI 파일을 제공하고 이 파일로 Elastic Beanstalk의 기본 설정을 확장 및 재정의하거나 다른 확장 기능을 추가로 설치할 수 있습니다.
Elastic Beanstalk 콘솔에 적용된 설정이 구성 파일에 적용된 동일한 설정(있는 경우)을 덮어씁니다. 이렇게 함으로써 구성 파일은 기본 설정을 갖는 동시에 콘솔에서 환경 특정 설정으로 설정을 덮어 쓸 수 있습니다. 우선 적용 및 설정을 변경하는 다른 방법에 대한 자세한 내용은 구성 옵션 단원을 참조하십시오.
Elastic Beanstalk Linux 기반 플랫폼을 확장할 수 있는 다양한 방법에 대한 자세한 내용은 Elastic Beanstalk Linux 플랫폼 확장 단원을 참조하세요.
PHP 플랫폼 주제
PHP용 AWS SDK 설치
애플리케이션 내에서 AWS 리소스를 관리해야 하는 경우를 설치합니다 AWS SDK for PHP. 예를 들어 SDK for PHP에서 Amazon DynamoDB(DynamoDB)를 사용하면 관계형 데이터베이스를 생성하지 않고도 사용자와 세션 정보를 저장할 수 있습니다.
Composer를 사용하여 PHP용 SDK를 설치하려면
$ composer require aws/aws-sdk-php
자세한 내용은 AWS SDK for PHP
Amazon Linux 2의 PHP 8.1에 대한 고려 사항
Amazon Linux 2의 PHP 8.1 플랫폼 브랜치를 사용하는 경우 이 섹션을 읽어보세요.
참고
이 주제의 정보는 Amazon Linux 2의 PHP 8.1 플랫폼 브랜치에만 적용됩니다. AL2023 기반의 PHP 플랫폼 브랜치에는 적용되지 않습니다. PHP 8.0 Amazon Linux 2 플랫폼 브랜치에도 적용되지 않습니다.
Elastic Beanstalk는 EC2 인스턴스에 있는 Amazon Linux 2 플랫폼 브랜치의 PHP 8.1용 PHP 8.1 관련 RPM 패키지를 Amazon Linux 리포지토리 대신 로컬 디렉터리에 저장합니다. rpm -i 를 사용하여 패키지를 설치할 수 있습니다. PHP 8.1 플랫폼 버전 3.5.0부터 Elastic Beanstalk는 PHP 8.1 관련 RPM 패키지를 다음 로컬 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 PHP 8.1 플랫폼이 Amazon 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에 대한 자세한 내용은 PEAR PHP 확장 및 응용 프로그램 리포지토리
다음 예제 명령은 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 리전. -
탐색 창에서 환경을 선택한 다음 목록에서 환경의 이름을 선택합니다.
탐색 창에서 구성을 선택합니다.
-
업데이트, 모니터링 및 로깅 구성 범주에서 편집을 선택합니다.
PHP 설정
-
프록시 서버 – 환경 인스턴스에서 사용할 프록시 서버입니다. 기본적으로 nginx를 사용합니다.
-
문서 루트(Document root) - 사이트의 기본 페이지를 포함하는 폴더입니다. 시작 페이지가 소스 번들의 루트에 없다면, 시작 페이지가 들어 있는 폴더를 루트 경로를 기준으로 지정합니다. 예를 들어
/public
폴더에 시작 페이지가 없을 때는public
을 지정합니다. -
메모리 제한(Memory limit) - 스크립트가 할당할 수 있는 최대 메모리 양입니다. 예를 들어
512M
입니다. -
Zlib 출력 압축(Zlib output compression) - 응답을 압축하려면
On
으로 설정합니다. -
URL fopen 허용(Allow URL fopen) - 스크립트가 원격 위치에서 파일을 다운로드하지 않도록 하려면
Off
로 설정합니다. -
오류 표시(Display errors) - 디버깅에 대한 내부 오류 메시지를 표시하려면
On
으로 설정합니다. -
최대 실행 시간(Max execution time) - 환경에서 스크립트를 종료할 때까지 스크립트가 실행될 수 있는 최대 시간(초)입니다.
로그 옵션
로그 옵션 섹션에는 다음의 두 가지 설정이 있습니다:
-
인스턴스 프로파일(Instance profile) - 애플리케이션과 연결된 Amazon S3 버킷으로의 액세스할 권한이 있는 인스턴스 프로파일을 지정합니다.
-
Amazon S3로의 로그 파일 로테이션 활성화(Enable log file rotation to Amazon S3) – 애플리케이션과 연결된 Amazon S3 버킷에 애플리케이션의 Amazon EC2 인스턴스 로그 파일을 복사하는지 여부를 지정합니다.
정적 파일
성능을 증진하려면 정적 파일(Static files) 섹션에서 프록시 서버를 구성하여 웹 애플리케이션 내부 디렉터리 집합으로 정적 파일(예: 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별 옵션을 구성합니다. 이 네임스페이스에는 Elastic Beanstalk 콘솔에서 사용할 수 없는
composer_options
가 포함되어 있습니다. 이 옵션은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
네임스페이스는 Amazon Linux AMI PHP 플랫폼 브랜치(이전 Amazon Linux 2)에 정의되어 있지 않습니다.
Elastic Beanstalk는 사용자가 환경을 맞춤형으로 지정할 수 있는 다양한 구성 옵션을 제공합니다. 구성 파일 외에 콘솔, 저장된 구성, EB CLI 또는 AWS CLI를 통해 구성 옵션을 설정할 수도 있습니다. 자세한 정보는 구성 옵션을 참조하세요.
Elastic Beanstalk PHP 애플리케이션의 종속성 설치
이 주제에서는 필요한 다른 PHP 패키지를 설치하도록 애플리케이션을 구성하는 방법을 설명합니다. 애플리케이션은 다른 PHP 패키지에 종속 항목이 있을 수 있습니다. 환경의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 이러한 종속 항목을 설치하도록 애플리케이션을 구성할 수 있습니다. 또는 애플리케이션의 종속 항목을 소스 번들에 포함시키고 애플리케이션과 함께 배포할 수 있습니다. 다음 단원에서는 이 두 가지 방법을 다룹니다.
Composer 파일을 사용하여 인스턴스에 종속 항목 설치
Composer를 사용하는 프로젝트 소스 루트의 composer.json
파일을 사용하여 환경의 Amazon EC2 인스턴스에 애플리케이션에서 필요로 하는 패키지를 설치합니다.
예 composer.json
{
"require": {
"monolog/monolog": "1.0.*"
}
}
composer.json
파일이 있으면 Elastic Beanstalk는 composer.phar install
을 실행하여 종속 항목을 설치합니다. aws:elasticbeanstalk:container:php:phpini
네임스페이스에서 composer_options 옵션을 설정하여 명령에 다른 옵션을 추가할 수 있습니다.
소스 번들에 종속 항목 포함
애플리케이션에 종속 항목이 많이 있는 경우 종속 항목 설치에 시간이 많이 걸릴 수 있습니다. 종속 항목은 새로운 모든 인스턴스에 설치되기 때문에 이로 인해 배포 및 조정 작업이 증가될 수 있습니다.
배포 시간에 부정적인 영향을 주지 않으려면 개발 환경에서 Composer를 사용하여 종속성을 해결하고 종속 항목을 vendor
폴더에 설치합니다.
애플리케이션 소스 번들에 종속 항목을 포함시키려면
-
다음 명령 실행:
%
composer install -
애플리케이션 소스 번들의 루트에 생성된
vendor
폴더를 포함시킵니다.
Elastic Beanstalk는 인스턴스의 vendor
폴더를 찾는 경우 composer.json
파일을(이 파일이 있더라도) 무시합니다. 그런 다음 애플리케이션은 vendor
폴더에서 종속 항목을 사용합니다.
Elastic Beanstalk에서 Composer 업데이트
이 주제에서는 Composer를 최신 상태로 유지하도록 Elastic Beanstalk를 구성하는 방법을 설명합니다. Composer 파일로 패키지를 설치하려 할 때 오류를 확인하거나 최신 플랫폼 버전을 사용할 수 없는 경우, Composer를 업데이트해야 할 수 있습니다. 플랫폼 업데이트 사이에 .ebextensions 폴더의 구성 파일을 사용하여 환경 인스턴스에서 Composer를 업데이트할 수 있습니다.
다음 구성으로 Composer를 직접 업데이트할 수 있습니다.
commands:
01updateComposer:
command: /usr/bin/composer.phar self-update 2.7.0
다음 옵션 설정은 Composer 캐시의 위치를 구성하는 COMPOSER_HOME
환경 변수를 설정합니다.
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: COMPOSER_HOME
value: /home/webapp/composer-home
이 두 가지를 모두 .ebextensions
폴더의 동일한 구성 파일에 결합할 수 있습니다.
예 .ebextensions/composer.config
commands:
01updateComposer:
command: /usr/bin/composer.phar self-update 2.7.0
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: COMPOSER_HOME
value: /home/webapp/composer-home
참고
2024년 2월 22일 AL2023 플랫폼 릴리스 및 2024년 2월 28일 AL2 플랫폼 릴리스의 Composer 설치 업데이트로 인해 직접 업데이트를 실행할 때 COMPOSER_HOME
이 설정된 경우 Composer 직접 업데이트가 실패할 수 있습니다.
다음과 같은 결합된 명령은 export COMPOSER_HOME=/home/webapp/composer-home && /usr/bin/composer.phar
self-update 2.7.0
실행에 실패합니다.
그러나 이전 예제는 작동합니다. 이전 예제에서는 COMPOSER_HOME
에 대한 옵션 설정이 01updateComposer
실행으로 전달되지 않으며 직접 업데이트 명령이 실행될 때 설정되지 않습니다.
중요
composer.phar self-update
명령에서 버전 번호를 생략하는 경우, Auto Scaling으로 새 인스턴스를 프로비저닝할 때와 소스 코드를 배포할 때마다, Composer는 사용 가능한 최신 버전으로 업데이트합니다. 릴리스된 Composer 버전이 애플리케이션에 호환되지 않는 경우, 조정 작업과 배포가 실패할 수 있습니다.
Composer의 버전을 포함하여 Elastic Beanstalk PHP 플랫폼에 대한 자세한 내용은 설명서 AWS Elastic Beanstalk 플랫폼의 PHP 플랫폼 버전을 참조하세요.
Elastic Beanstalk 구성에서 php.ini 확장
files
블록이 있는 구성 파일을 사용하여 .ini
파일을 환경 내 인스턴스의 /etc/php.d/
에 추가합니다. 기본 구성 파일인 php.ini
는 이 폴더의 파일에서 알파벳 순으로 설정을 가져옵니다. 이 폴더의 파일에서 기본적으로 여러 확장명을 사용할 수 있습니다.
예 .ebextensions/mongo.config
files:
"/etc/php.d/99mongo.ini":
mode: "000755"
owner: root
group: root
content: |
extension=mongo.so