AWS CodeDeploy를 사용하여 PHP 어플리케이션 디버깅

14679 단어 CodeDeployPHPAWS
AWS Code Deploy를 사용하여 수작업으로 만든 depurel과 Jenkins 아저씨를 졸업하세요!이렇게 되면
이번에는 S3를 통해 PHP 앱을 디자인해 보려고 합니다.

AWS CodeDeploy is 소개


Q: AWS CodeDeploy란 무엇입니까?
AWS CodeDeploy는 Amazon EC2 인스턴스와 시작 보너스 실행 인스턴스를 포함한 다양한 인스턴스에 대한 자동 코드 디버깅 서비스입니다.AWS CodeDeploy를 사용하면 디버깅 중에 다운타임이 발생하지 않도록 애플리케이션을 더욱 쉽게 업데이트하고 새로운 기능을 빠르게 발표할 수 있습니다.AWS CodeDeploy를 사용하면 오류가 발생하기 쉬운 수동 작업과 인프라 시설의 서비스 규모의 필요성을 제거하는 동시에 디버깅 자동화를 할 수 있고, 하나의 실례에 대한 디버깅과 수천 개의 실례를 쉽게 디버깅할 수 있다.
AWS CodeDeploy에서 참조질문

장점/단점


장점

  • 전체 관리
  • AWS의 전체 관리 서비스이기 때문에 deploy 서버(Jenkins 등)를 만들 필요가 없다.
  • 싸다
  • EC2 실례에 대한 디버깅은 무료입니다(예처리를 할 때만 미량의 비용이 발생합니다. 상세한 상황이쪽
  • 도 deploy 서버(Jenkins 등)의 실례비는 필요 없다.
  • 다양한 디자인 방법
  • 여러 개의 디버깅 대상에 대해 한 대에 한 대, 한 번에 한 대, 반만 디버깅 속도 조절
  • 블루/green depro
  • 도 지원
  • 단순성
  • 임의의 라벨을 통해 자동으로 EC2로 가기
  • 로컬 디버그 대상 디렉터리를 지정해서aws-Coli를 실행하면 zip으로 S3에 고정하고push
  • 할 수 있습니다
  • 디버깅 후 처리(권한 변경, Apache의graceful 등)는yml에 기록하고 디버깅 대상 디렉터리에 저장
  • 잠깐만요.

    결점

  • 새로운 방법을 기억하는 시간 정도?
  • 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 스크립트를 추가합니다.
    이번 앱스펙에서.
  • 소스 설치 위치 지정
  • 소스 코드 아래의 권한을 appache:appache
  • 로 귀속적으로 변경
  • 소스 설치 후 hooks 스크립트를 통해 Apache의graceful
  • 실행
    를 참고하십시오.
    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로 pushaws deploy pushbuild 결과를 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 이해

    좋은 웹페이지 즐겨찾기