AWS CodeDeploy를 사용하여 PHP 어플리케이션 디버깅
14679 단어 CodeDeployPHPAWS
이번에는 S3를 통해 PHP 앱을 디자인해 보려고 합니다.
AWS CodeDeploy is 소개
Q: AWS CodeDeploy란 무엇입니까?
AWS CodeDeploy는 Amazon EC2 인스턴스와 시작 보너스 실행 인스턴스를 포함한 다양한 인스턴스에 대한 자동 코드 디버깅 서비스입니다.AWS CodeDeploy를 사용하면 디버깅 중에 다운타임이 발생하지 않도록 애플리케이션을 더욱 쉽게 업데이트하고 새로운 기능을 빠르게 발표할 수 있습니다.AWS CodeDeploy를 사용하면 오류가 발생하기 쉬운 수동 작업과 인프라 시설의 서비스 규모의 필요성을 제거하는 동시에 디버깅 자동화를 할 수 있고, 하나의 실례에 대한 디버깅과 수천 개의 실례를 쉽게 디버깅할 수 있다.
AWS CodeDeploy에서 참조질문
장점/단점
장점
결점
Deploy의 대략적인 절차
Step1: Build
builder 서버에서build을 실행한 후aws-cli를 통해 소스 코드 zip으로 고정하고push를 s3로 이동합니다.
Step2: Deploy
AWS 콘솔에서 AWS CodeDeploy를 실행하면 S3의 deploy 객체의 소스 코드가 deploy 객체의 서버 그룹 deploy에 의해 결과를 알립니다.
이번엔 교재concrete5로서의 CMS를 설계해 보고 싶어요.
※ 사실 콘서트 5는 이렇게까지 할 필요가 없습니다.
환경 준비
AWS CodeDeploy
IAM Role 제작
AWS CodeDeploy용 IAM Role을 제작합니다.
액세스를 허용하는 관리 정책에
AWSCodeDeployRole
를 포함합니다.또 신뢰받는 실체에 추가
codedeploy.ap-northeast-1.amazonaws.com
(도쿄권역에서 사용 시)했다.신뢰 관계
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "codedeploy.ap-northeast-1.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
AWS CodeDeploy 애플리케이션 작성AWS 콘솔을 통해 AWS CodeDeploy 응용 프로그램을 만듭니다.
다음 정보를 입력하여 새 응용 프로그램을 만듭니다.
항목 설정
값 설정
응용 프로그램 이름
임의의 이름
프로그램 그룹 이름
임의의 이름
프로그램 유형
이번 선택
インプレースデプロイ
인스턴스 추가장치 인스턴스를 축소하기 위한 레이블 지정 예: Role=webserver, Env=development
프로그램 설정
이번 선택
CodeDeployDefult.OneAtAtime
고급 설정이번엔 묵인.
서비스 롤러
IAM Role이 제작한 AWS CodeDeploy에서 사용할 역할 선택
builder(EC2)
IAM Role 제작
다음 IAMRole을 작성하여 EC2 인스턴스를 작성할 때 지정합니다.
액세스를 허용하는 관리 정책에
AWSCodeDeployDeployerAccess
를 포함합니다.aws-cli 업데이트
aws-cli를 최신 버전으로 업데이트합니다.
concrete5 중간부품으로 설정
concerete5에 사용할 중간부품 설정 concerete5 사용 조건
자세한 내용은 언급하지 않겠지만 GiitHub에 Ansible playbook을 올릴 예정이니 사용하고 싶은 분은 사용하세요"github
deploy 선(EC2)
IAM Role 제작
빈 IAMRole을 작성하고 EC2 인스턴스를 작성할 때 지정합니다.
aws-cli 업데이트
aws-cli를 최신 버전으로 업데이트합니다.
concrete5 중간부품으로 설정
concerete5에 사용할 중간부품 설정 concerete5 사용 조건
자세한 내용은 언급하지 않겠지만 GiitHub에 Ansible playbook을 올릴 예정이니 사용하고 싶은 분은 사용하세요"github
AWS CodeDeploy 에이전트 설치
AWS CodeDeploy 에이전트 설치하다
### インストール
$ sudo yum install -y wget
$ sudo su - ec2-user
$ wget https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install
$ chmod +x ./install
$ sudo ./install auto
### 確認
$ yum info codedeploy-agent
Loaded plugins: priorities, update-motd, upgrade-helper
Installed Packages
Name : codedeploy-agent
Arch : noarch
Version : 1.0
Release : 1.1067
Size : 11 M
Repo : installed
From repo : /codedeploy-agent-1.0-1.1067.noarch.tmp-20170130-3372-owpn7q
Summary : Provides the required files for CodeDeploy agent to run in EC2 instances
License : Amazon.com Internal
Description : CodeDeploy instance agent is responsible for doing the actual work of deploying software
: on an EC2 instance.
$ sudo service codedeploy-agent status
The AWS CodeDeploy agent is running as PID 2394
S3
소스 코드 push에 있는 S3 통을 미리 만듭니다.
각 IAM 스크롤에 대한 액세스 권한을 부여하는 통 정책을 작성합니다.
구간 정책
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"AWS CodeDeploy用ロールARN",
"builder用IAMロールARN",
"deploy先用IAMロールARN"
]
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::deploy用S3バケット名"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"AWS CodeDeploy用ロールARN",
"builder用IAMロールARN",
"deploy先用IAMロールARN"
]
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::deploy用S3バケット名/*"
}
]
}
Deploy 처리
1단계: Deploy 준비(build)
Step1-1:build 처리
builder에서 checkkout 소스 코드,composier 실행$ git clone -b master https://github.com/concrete5/concrete5.git
$ cd concrete5
$ composer install
1-2단계: AppSpec 만들기
AppSpecis 뭐라고요?
Q: AppSpec 파일은 무엇입니까?
AppSpec 파일은 복사할 파일과 실행할 스크립트를 지정하는 설정 파일입니다.AppSpec 파일은 YAML 형식을 사용하므로 개정의 루트 디렉토리에 포함해야 합니다.
AWS CodeDeploy에서 참조질문
한마디로 Deploy 프로세스를 수행할 때 서버 측에서 처리하는 내용을 정의하는 YAML입니다.
따라서 소스 코드의 루트 디렉토리 바로 아래에 AppSpec과 hooks 스크립트를 추가합니다.
이번 앱스펙에서.
$ git clone -b master https://github.com/concrete5/concrete5.git
$ cd concrete5
$ composer install
를 참고하십시오.
AppSpec 매뉴얼 여기 있다>AWS CodeDeploy AppSpec File Reference
appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /var/www/example.com/htdocs/
permissions:
- object: /var/www/example.com/htdocs/
pattern: "**"
owner: apache
group: apache
hooks:
AfterInstall:
- location: hooks/apache_graceful.sh
timeout: 15
runas: root
hooks/apache_graceful.sh#!/bin/sh
service httpd graceful
훅스 스크립트에 미리 실행 권한을 부여합니다.chmod +x hooks/*
이후 디버그 처리 컨텐트가 변경되지 않은 경우 Step은 첫 번째 작업만 수행할 수 있습니다.1-3단계:build 결과를 S3로 push
aws deploy push
build 결과를 zip으로 고정시키고push를 S3로 고정합니다.앞으로 이전 버전을 재설계할 것을 감안하여 zip 파일 이름
タイムスタンプ
과 commit id
을 덮어쓰지 않는 것이 좋다.push의 예 (도쿄 지역)
$ aws deploy push \
--region ap-northeast-1 \
--application-name CodeDeployアプリケーション名 \
--s3-location s3://S3バケット名/zipファイル名.zip \
--source ソースディレクトリ
push가 성공하면 eTag
수여됩니다.2단계: Deploy 처리
Step2-1: Deploy 실행
AWS 콘솔의 AWS CodeDeploy 화면에서 준비 단계에서 제작된 응용 프로그램, 프로그램 그룹을 선택
新しいリビジョンのデプロイ
합니다.프로그램 생성 화면에 다음 내용을 입력하십시오
항목 설정
값 설정
응용 프로그램
실행할 프로그램
프로그램 그룹
설계된 프로그램 그룹
개정 유형
선택
アプリケーションは Amazon S3 に格納されています
개정 위치1-3단계에서push의 내용이 선택항목이면 선택하지 않음
s3://バケット名/folder/zipファイル名
데모 지침임의 입력
프로그램 설정
용도에 따라 선택하다
볼록 디자인 버튼!
진도표가 녹색이면 디버깅 성공!
디버깅에 실패하면 deploy의 실제 내용
/var/log/aws/codedeploy-agent/codedeploy-agent.log
을 확인하십시오.2단계 - 2: 확인
브라우저를 통해 액세스
콘서트 5의 설치 화면을 안전하게 보여줍니다!
총결산
AWS Code Deploy의 초기 설정은 조금 복잡하지만, 이 문제를 극복할 수 있다면 큰 이점이 기다리고 있습니다!!
그리고 PHP의 한정된 제목이 있지만 다른 언어의 대략적인 절차는 똑같기 때문에 응용이 효과적일 것이다.
다음에 blue/green deply를 시도해 보고 싶습니다.
사이트 축소판 그림
AWS 재시작 AWS CodeDeploy 편
AWS CodeDeploy AppSpec File Reference
CodeDeploy를 통해 디렉터리 권한 설정
AWS CodeDeploy의 AppSpec 이해
Reference
이 문제에 관하여(AWS CodeDeploy를 사용하여 PHP 어플리케이션 디버깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazumax55/items/38349431b8db107fd05d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)