기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CLI 자습서: 티어 및 타이 WordPress 웹 사이트 배포
이 섹션에서는 AMS CLI를 사용하여 AMS 환경에 고가용성(HA) WordPress 사이트를 배포하는 방법을 설명합니다. 이 지침 세트에는 필요한 WordPress CodeDeploy 호환 패키지(예: zip) 파일을 생성하는 예제가 포함되어 있습니다.
참고
이 배포 연습은 AMZN Linux 환경에서 사용하도록 설계되었습니다.
필수 변수 파라미터는 교체 가능한 것으로 표기되어 있지만 상황에 맞게 다른 파라미터를 수정하는 것이 좋습니다.
작업 및 필수 RFCs 요약:
인프라를 생성합니다.
로드 밸런서 생성
Auto Scaling 그룹을 생성하여 로드 밸런서에 연결합니다.
CodeDeploy 애플리케이션용 S3 버킷 생성
WordPress 애플리케이션 번들 생성(RFC 필요 없음)
CodeDeploy를 사용하여 WordPress 애플리케이션 번들을 배포합니다.
CodeDeploy 애플리케이션 생성
CodeDeploy 배포 그룹 생성
WordPress 애플리케이션 번들을 S3 버킷에 업로드(RFC 필요 없음)
CodeDeploy 애플리케이션 배포
배포 검증
배포를 중단합니다.
인증된 계정에서 명령줄의 모든 단계를 따릅니다.
CLI를 사용하여 RFC 생성
RFC 생성에 대한 자세한 내용은 RFCs 생성을 참조하고, 일반적인 RFC 파라미터에 대한 설명은 RFC 일반 파라미터 단원을 참조하십시오.
CodeDeploy용 WordPress 애플리케이션 번들 생성
이 섹션에서는 애플리케이션 배포 번들을 생성하는 예제를 제공합니다.
WordPress를 다운로드하고 파일을 추출한 다음 ./scripts 디렉터리를 생성합니다.
Linux 명령:
wget https://github.com/WordPress/WordPress/archive/master.zipWindows: 브라우저 창에 붙여
https://github.com/WordPress/WordPress/archive/master.zip넣고 zip 파일을 다운로드합니다.패키지를 어셈블할 임시 디렉터리를 생성합니다.
Linux:
mkdir /tmp/WordPressWindows: "WordPress" 디렉터리를 생성합니다. 나중에 디렉터리 경로를 사용합니다.
WordPress 소스를 "WordPress" 디렉터리로 추출하고 ./scripts 디렉터리를 생성합니다.
Linux:
unzip master.zip -d /tmp/WordPress_Temp cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress rm -rf /tmp/WordPress_Temp rm -f master cd /tmp/WordPress mkdir scriptsWindows: 생성한 "WordPress" 디렉터리로 이동하여 여기에 "scripts" 디렉터리를 생성합니다.
Windows 환경에 있는 경우 스크립트 파일의 브레이크 유형을 Unix(LF)로 설정해야 합니다. 메모장 ++에서 창 오른쪽 하단에 있는 옵션입니다.
WordPress 디렉터리에서 CodeDeploy appspec.yml 파일을 생성합니다(예제를 복사하는 경우 들여쓰기를 확인하고 각 공간을 계산합니다). 중요: WordPress 파일(이 경우 WordPress 디렉터리)을 예상 대상(/var/www/html/WordPress)으로 복사하기 위해 "소WordPress" 경로가 올바른지 확인합니다. 예제에서 appspec.yml 파일은 WordPress 파일이 있는 디렉터리에 있으므로 "/"만 있으면 됩니다. 또한 Auto Scaling 그룹에 RHEL AMI를 사용했더라도 "os: linux" 줄을 그대로 둡니다. appspec.yml 파일의 예:
version: 0.0 os: linux files: - source: / destination: /var/www/html/WordPress hooks: BeforeInstall: - location: scripts/install_dependencies.sh timeout: 300 runas: root AfterInstall: - location: scripts/config_wordpress.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root-
WordPress ./scripts 디렉터리에서 bash 파일 스크립트를 생성합니다.
먼저 다음 콘텐츠
config_wordpress.sh로를 생성합니다(원하는 경우 wp-config.php 파일을 직접 편집할 수 있음).참고
DBName을 HA 스택 RFC에 지정된 값으로 바꿉니다(예:wordpress).DB_MasterUsername을 HA 스택 RFC에 지정된MasterUsername값으로 바꿉니다(예:admin).DB_MasterUserPassword를 HA 스택 RFC에 지정된MasterUserPassword값으로 바꿉니다(예:p4ssw0rd).HA 스택 RFC의 실행 출력에서
DB_ENDPOINT를 엔드포인트 DNS 이름으로 바꿉니다(예:srt1cz23n45sfg.clgvd67uvydk.us-east-1.rds.amazonaws.com). GetRfc 작업(CLI: get-rfc --rfc-id RFC_ID) 또는 이전에 제출한 HA 스택 RFC의 AMS 콘솔 RFC 세부 정보 페이지에서 이를 찾을 수 있습니다.#!/bin/bash chmod -R 755 /var/www/html/WordPress cp /var/www/html/WordPress/wp-config-sample.php /var/www/html/WordPress/wp-config.php cd /var/www/html/WordPress sed -i "s/database_name_here/DBName/g" wp-config.php sed -i "s/username_here/DB_MasterUsername/g" wp-config.php sed -i "s/password_here/DB_MasterUserPassword/g" wp-config.php sed -i "s/localhost/DB_ENDPOINT/g" wp-config.php 동일한 디렉터리에서 다음 콘텐츠
install_dependencies.sh로를 생성합니다.#!/bin/bash yum install -y php yum install -y php-mysql yum install -y mysql service httpd restart참고
HTTPS는 상태 확인이 처음부터 작동하도록 시작 시 사용자 데이터의 일부로 설치됩니다.
동일한 디렉터리에서 다음 콘텐츠
start_server.sh로를 생성합니다.Amazon Linux 인스턴스의 경우 다음을 사용합니다.
#!/bin/bash service httpd startRHEL 인스턴스의 경우 다음을 사용합니다(추가 명령은 SELINUX가 WordPress를 수락하도록 허용하는 정책임).
#!/bin/bash setsebool -P httpd_can_network_connect_db 1 setsebool -P httpd_can_network_connect 1 chcon -t httpd_sys_rw_content_t /var/www/html/WordPress/wp-content -R restorecon -Rv /var/www/html service httpd start
동일한 디렉터리에서 다음 콘텐츠
stop_server.sh로를 생성합니다.#!/bin/bash service httpd stopzip 번들을 생성합니다.
Linux:
$ cd /tmp/WordPress $ zip -r wordpress.zip .Windows: "WordPress" 디렉터리로 이동하여 모든 파일을 선택하고 zip 파일을 생성합니다. 이름을 wordpress.zip으로 지정해야 합니다.
CodeDeploy를 사용하여 WordPress 애플리케이션 번들 배포
CodeDeploy는 Amazon EC2 인스턴스에 대한 애플리케이션 배포를 자동화하는 AWS 배포 서비스입니다. 프로세스의이 부분에는 CodeDeploy 애플리케이션 생성, CodeDeploy 배포 그룹 생성, CodeDeploy를 사용하여 애플리케이션 배포가 포함됩니다.
CodeDeploy 애플리케이션 생성
CodeDeploy 애플리케이션은 AWS CodeDeploy에서 배포 중에 올바른 개정, 배포 구성 및 배포 그룹을 참조하는 데 사용하는 이름 또는 컨테이너입니다. 이 경우 배포 구성은 이전에 생성한 WordPress 번들입니다.
필수 데이터:
VpcId: 사용 중인 VPC로, 이전에 사용한 VPC와 동일해야 합니다.CodeDeployApplicationName: 계정에서 고유해야 합니다. CodeDeploy 콘솔에서 기존 애플리케이션 이름을 확인합니다.ChangeTypeId및ChangeTypeVersion:이 연습의 변경 유형 ID는 입니다. 최신 버전을ct-0ah3gwb9seqk2확인하려면 다음 명령을 실행합니다.aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-0ah3gwb9seqk2
CodeDeploy 애플리케이션 CT의 실행 파라미터 JSON 스키마를 현재 폴더의 파일로 출력합니다. 예제 이름은 CreateCDAppParams.json.
aws amscm get-change-type-version --change-type-id "ct-0ah3gwb9seqk2" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateCDAppParams.json다음과 같이 JSON 파일을 수정하고 저장합니다. 콘텐츠를 삭제하고 바꿀 수 있습니다.
{ "Description": "Create WordPress CodeDeploy App", "VpcId": "VPC_ID", "StackTemplateId": "stm-sft6rv00000000000", "Name": "WordPressCDApp", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPressCDApp" } }CreateRfc용 JSON 템플릿을 현재 폴더의 파일로 출력합니다. 예제 이름은 CreateCDAppRfc.json.
aws amscm create-rfc --generate-cli-skeleton > CreateCDAppRfc.json다음과 같이 JSON 파일을 수정하고 저장합니다. 콘텐츠를 삭제하고 바꿀 수 있습니다. 이제
RequestedStartTime및RequestedEndTime는 선택 사항입니다. 이를 제외하면 RFC가 승인되는 즉시(일반적으로 자동으로 발생함) RFC가 실행됩니다. “예약된” RFC를 제출하려면 해당 값을 추가합니다.{ "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-0ah3gwb9seqk2", "Title": "CD-App-For-WP-Stack-RFC" }CreateCDAppRfc 파일과 실행 파라미터 파일을 지정하여 RFC를 생성합니다.
aws amscm create-rfc --cli-input-json file://CreateCDAppRfc.json --execution-parameters file://CreateCDAppParams.json응답에서 새 RFC의 RFC ID를 수신합니다. 후속 단계를 위해 ID를 저장합니다.
RFC 제출:
aws amscm submit-rfc --rfc-idRFC_IDRFC가 성공하면 출력이 수신되지 않습니다.
RFC 제출:
aws amscm get-rfc --rfc-idRFC_ID
CodeDeploy 배포 그룹 생성
CodeDeploy 배포 그룹을 생성합니다.
CodeDeploy 배포 그룹은 배포를 대상으로 하는 개별 인스턴스 세트를 정의합니다.
필수 데이터:
VpcId: 사용 중인 VPC로, 이전에 사용한 VPC와 동일해야 합니다.CodeDeployApplicationName: 이전에 생성한 값을 사용합니다.CodeDeployAutoScalingGroups: 이전에 생성한 Auto Scaling 그룹의 이름을 사용합니다.CodeDeployDeploymentGroupName: 배포 그룹의 이름입니다. 이 이름은 배포 그룹과 연결된 각 애플리케이션에 대해 고유해야 합니다.CodeDeployServiceRoleArn: 예제에 제공된 공식을 사용합니다.ChangeTypeId및ChangeTypeVersion:이 연습의 변경 유형 ID는 입니다. 최신 버전을ct-2gd0u847qd9d2확인하려면 다음 명령을 실행합니다.aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-2gd0u847qd9d2
실행 파라미터 JSON 스키마를 현재 폴더의 파일로 출력합니다. 예제 이름은 CreateCDDepGroupParams.json.
aws amscm get-change-type-version --change-type-id "ct-2gd0u847qd9d2" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateCDDepGroupParams.json다음과 같이 JSON 파일을 수정하고 저장합니다. 콘텐츠를 삭제하고 바꿀 수 있습니다.
{ "Description": "CreateWPCDDeploymentGroup", "VpcId": "VPC_ID", "StackTemplateId": "stm-sp9lrk00000000000", "Name": "WordPressCDAppGroup", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPressCDApp", "CodeDeployAutoScalingGroups": ["ASG_NAME"], "CodeDeployDeploymentConfigName": "CodeDeployDefault.HalfAtATime", "CodeDeployDeploymentGroupName": "UNIQUE_CDDepGroupNAME", "CodeDeployServiceRoleArn": "arn:aws:iam::ACCOUNT_ID:role/aws-codedeploy-role" } }CreateRfc용 JSON 템플릿을 현재 폴더의 파일로 출력합니다. 예제 이름은 CreateCDDepGroupRfc.json.
aws amscm create-rfc --generate-cli-skeleton > CreateCDDepGroupRfc.json다음과 같이 JSON 파일을 수정하고 저장합니다. 콘텐츠를 삭제하고 바꿀 수 있습니다. 이제
RequestedStartTime및RequestedEndTime는 선택 사항입니다. 이를 제외하면 RFC가 승인되는 즉시(일반적으로 자동으로 발생함) RFC가 실행됩니다. "예약" RFC를 제출하려면 해당 값을 추가합니다.{ "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-2gd0u847qd9d2", "Title": "CD-Dep-Group-For-WP-Stack-RFC" }CreateCDDepGroupRfc 파일과 실행 파라미터 파일을 지정하여 RFC를 생성합니다.
aws amscm create-rfc --cli-input-json file://CreateCDDepGroupRfc.json --execution-parameters file://CreateCDDepGroupParams.json응답에서 새 RFC의 RFC ID를 수신합니다. 후속 단계를 위해 ID를 저장합니다.
RFC 제출:
aws amscm submit-rfc --rfc-idRFC_IDRFC가 성공하면 출력이 수신되지 않습니다.
RFC 상태를 확인합니다.
aws amscm get-rfc --rfc-idRFC_ID
WordPress 애플리케이션 업로드
생성한 모든 S3 버킷 인스턴스에 자동으로 액세스할 수 있습니다. Bastions(인스턴스 액세스 참조) 또는 S3 콘솔을 통해 액세스하고 CodeDeploy 번들을 업로드할 수 있습니다. 스택을 계속 배포하려면 번들이 있어야 합니다. 이 예제에서는 이전에 생성한 버킷 이름을 사용합니다.
aws s3 cp wordpress/wordpress.zip s3://ACCOUNT_ID-codedeploy-bundles/
CodeDeploy를 사용하여 WordPress 애플리케이션 배포
CodeDeploy 애플리케이션을 배포합니다.
CodeDeploy 애플리케이션 번들 및 배포 그룹이 있으면이 RFC를 사용하여 애플리케이션을 배포합니다.
필수 데이터:
VPC-ID: 사용 중인 VPC로, 이전에 사용한 VPC와 동일해야 합니다.CodeDeployApplicationName: 이전에 생성한 CodeDeploy 애플리케이션의 이름을 사용합니다.CodeDeployDeploymentGroupName: 이전에 생성한 CodeDeploy 배포 그룹의 이름을 사용합니다.S3Location(애플리케이션 번들을 업로드한 위치):S3Bucket: 이전에 생성한 BucketNameS3BundleType및S3Key: S3 스토어에 배치한 번들의 유형 및 이름입니다.ChangeTypeId및ChangeTypeVersion:이 연습의 변경 유형 ID는 입니다. 최신 버전을ct-2edc3sd1sqmrb확인하려면 다음 명령을 실행합니다.aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-2edc3sd1sqmrb
CodeDeploy 애플리케이션 배포 CT의 실행 파라미터 JSON 스키마를 현재 폴더의 파일로 출력합니다. 예제 이름은 DeployCDAppParams.json.
aws amscm get-change-type-version --change-type-id "ct-2edc3sd1sqmrb" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > DeployCDAppParams.json다음과 같이 JSON 파일을 수정합니다. 콘텐츠를 삭제하고 바꿀 수 있습니다. 의 경우 이전에 생성한
BucketName를S3Bucket사용합니다.{ "Description": "Deploy WordPress CodeDeploy Application", "VpcId": "VPC_ID", "Name": "WP CodeDeploy Deployment Group", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPressCDApp", "CodeDeployDeploymentGroupName": "WordPressCDDepGroup", "CodeDeployIgnoreApplicationStopFailures":false, "CodeDeployRevision": { "RevisionType": "S3", "S3Location": { "S3Bucket": "ACCOUNT_ID.BUCKET_NAME", "S3BundleType": "zip", "S3Key": "wordpress.zip" } } } }CreateRfc용 JSON 템플릿을 현재 폴더의 파일로 출력합니다. 예제 이름은 DeployCDAppRfc.json:.
aws amscm create-rfc --generate-cli-skeleton > DeployCDAppRfc.jsonDeployCDAppRfc.json 파일을 수정하고 저장합니다. 콘텐츠를 삭제하고 바꿀 수 있습니다.
{ "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-2edc3sd1sqmrb", "Title": "CD-Deploy-For-WP-Stack-RFC", "RequestedStartTime": "2017-04-28T22:45:00Z", "RequestedEndTime": "2017-04-28T22:45:00Z" }실행 파라미터 파일과 DeployCDAppRfc 파일을 지정하여 RFC를 생성합니다.
aws amscm create-rfc --cli-input-json file://DeployCDAppRfc.json --execution-parameters file://DeployCDAppParams.json응답에서 새 RFC의 RfcId를 수신합니다. 후속 단계를 위해 ID를 저장합니다.
RFC 제출:
aws amscm submit-rfc --rfc-idRFC_IDRFC가 성공하면 출력이 수신되지 않습니다.
애플리케이션 배포 검증
WordPress 배포 경로 /WordPress를 사용하여 이전에 생성한 로드 밸런서의 엔드포인트(ELB CName)로 이동합니다. 예:
http://stack-ID-FOR-ELB.us-east-1.elb.amazonaws.com/WordPress
애플리케이션 배포 해체
배포를 해제하려면 RDS 데이터베이스 스택, 애플리케이션 로드 밸런서, Auto Scaling 그룹, S3 버킷, 모든의 코드 배포 애플리케이션 및 그룹 --6 RFCs에 대해 스택 삭제 CT를 제출합니다. 또한 삭제할 RDS 스냅샷에 대한 서비스 요청을 제출할 수 있습니다(10일 후에 자동으로 삭제되지만 그 동안 약간의 비용이 발생함). 모든에 대한 스택 IDs 수집한 다음 다음 단계를 따릅니다.
이 연습에서는 AMS 콘솔을 사용하여 S3 스택을 삭제하는 예제를 제공합니다.이 절차는 AMS 콘솔을 사용하여 스택을 삭제하는 데 적용됩니다.
참고
S3 버킷을 삭제하는 경우 먼저 객체를 비워야 합니다.
필수 데이터:
StackId: 사용할 스택입니다. 왼쪽 탐색 창의 링크를 통해 제공되는 AMS 콘솔 스택 페이지를 보면 이를 찾을 수 있습니다. AMS SKMS API/CLI를 사용하여 AMS SKMS API 참조의 경우 AWS 아티팩트 콘솔의 보고서 탭을 참조하세요(CLI의list-stack-summaries).이 연습의 변경 유형 ID는 이고
ct-0q0bic0ywqk6c, 버전은 "1.0"이며, 최신 버전을 확인하려면 다음 명령을 실행합니다.aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-0q0bic0ywqk6c
인라인 생성:
인라인으로 제공된 실행 파라미터를 사용하여 RFC 생성 명령을 실행합니다(실행 파라미터를 인라인으로 제공할 때 따옴표 이스케이프). E
aws amscm create-rfc --change-type-id "ct-0q0bic0ywqk6c" --change-type-version "1.0" --title "Delete My Stack" --execution-parameters "{\"StackId\":\"STACK_ID\"}"RFC 생성 작업에서 반환된 RFC ID를 사용하여 RFC를 제출합니다. 제출될 때까지 RFC는
Editing상태를 유지하고 조치를 취하지 않습니다.aws amscm submit-rfc --rfc-idRFC_IDRFC 상태를 모니터링하고 실행 출력을 봅니다.
aws amscm get-rfc --rfc-idRFC_ID
템플릿 생성:
RFC 템플릿을 현재 폴더의 파일로 출력합니다. 예제 이름은 DeleteStackRfc.json:입니다.
aws amscm create-rfc --generate-cli-skeleton > DeleteStackRfc.jsonDeleteStackRfc.json 파일을 수정하고 저장합니다. 스택 삭제에는 실행 파라미터가 하나뿐이므로 실행 파라미터는 DeleteStackRfc.json 파일 자체에 있을 수 있습니다(실행 파라미터가 있는 별도의 JSON 파일을 생성할 필요가 없음).
ExecutionParameters JSON 확장의 내부 따옴표는 백슬래시(\)로 이스케이프 처리해야 합니다. 시작 및 종료 시간이 없는 예:
{ "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-0q0bic0ywqk6c", "Title": "Delete-My-Stack-RFC" "ExecutionParameters": "{ \"StackId\":\"STACK_ID\"}" }RFC를 생성합니다.
aws amscm create-rfc --cli-input-json file://DeleteStackRfc.json응답에서 새 RFC의 RfcId를 수신합니다. 예:
{ "RfcId": "daaa1867-ffc5-1473-192a-842f6b326102" }후속 단계를 위해 ID를 저장합니다.
RFC 제출:
aws amscm submit-rfc --rfc-idRFC_IDRFC가 성공하면 명령줄에서 확인 메시지가 표시되지 않습니다.
요청 상태를 모니터링하고 실행 출력을 보려면:
aws amscm get-rfc --rfc-idRFC_ID--query "Rfc.{Status:Status.Name,Exec:ExecutionOutput}" --output table