2단계: Amazon Linux 또는 Red Hat Enterprise Linux Amazon EC2 인스턴스에 배포할 원본 콘텐츠 구성 - AWS CodeDeploy

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

2단계: Amazon Linux 또는 Red Hat Enterprise Linux Amazon EC2 인스턴스에 배포할 원본 콘텐츠 구성

이제 인스턴스에 배포할 항목이 있도록 애플리케이션의 원본 콘텐츠를 구성해야 합니다.

소스 코드 가져오기

이 튜토리얼에서는 개발 시스템에서 대상 Amazon EC2 인스턴스로 WordPress 콘텐츠 게시 플랫폼을 배포합니다. WordPress 소스 코드를 얻으려면 기본 제공 명령줄 호출을 사용할 수 있습니다. 또는 Git이 개발 컴퓨터에 설치되어있는 경우 대신 사용할 수 있습니다.

이 단계를 위해, WordPress 소스 코드의 복사본을 개발 머신의 /tmp 디렉터리로 다운로드할 수 있다고 가정합니다. (원하는 디렉터리를 선택할 수 있지만 이 단계에서 지정되는 모든 곳에서 위치를 /tmp로 바꿔야 합니다.)

WordPress 소스 파일을 개발 컴퓨터에 복사하려면 다음 두 가지 옵션 중 하나를 선택합니다. 첫 번째 옵션은 기본 제공 명령줄 호출을 사용합니다. 두 번째 옵션은 Git를 사용합니다.

WordPress 소스 코드의 복사본을 얻으려면(기본 제공 명령줄 호출)

  1. wget 명령을 호출하여 WordPress 소스 코드의 복사본을.zip 파일로 현재 디렉터리에 다운로드합니다.

    wget https://github.com/WordPress/WordPress/archive/master.zip
  2. unzip, mkdir, cp, 및 rm 명령으르 호출하여 다음을 수행합니다.

    • master .zip 파일을 /tmp/WordPress_Temp 디렉터리(폴더)에서 압축을 풉니다.

    • 압축이 풀린 내용을 /tmp/WordPress 대상 폴더에 복사합니다.

    • 임시 /tmp/WordPress_Temp 폴더 및 master 파일을 삭제합니다.

    명령을 한 번에 하나씩 실행합니다.

    unzip master -d /tmp/WordPress_Temp
    mkdir -p /tmp/WordPress
    cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress
    rm -rf /tmp/WordPress_Temp
    rm -f master

    이렇게 하면 /tmp/WordPress 폴더에 깨끗한 WordPress 소스 코드 파일 세트가 남게 됩니다.

WordPress 소스 코드의 복사본을 얻으려면(Git)

  1. 개발 머신에 Git를 다운로드하고 설치합니다.

  2. /tmp/WordPress 폴더에서 git init 명령을 호출합니다.

  3. git clone 명령을 호출하여 공용 WordPress 리포지토리를 복제하고 /tmp/WordPress 대상 폴더에 자신만의 복사본을 만듭니다.

    git clone https://github.com/WordPress/WordPress.git /tmp/WordPress

    이렇게 하면 /tmp/WordPress 폴더에 깨끗한 WordPress 소스 코드 파일 세트가 남게 됩니다.

애플리케이션을 실행하기 위한 스크립트 만들기

그런 다음 디렉터리에 폴더와 스크립트를 만듭니다. CodeDeploy는 이러한 스크립트를 사용하여 대상 Amazon EC2 인스턴스에 애플리케이션 수정 버전을 설정하고 배포합니다. 어떤 텍스트 편집기든 사용하여 스크립트를 생성할 수 있습니다.

  1. WordPress 소스 코드의 복사본에 스크립트 디렉터리를 만듭니다.

    mkdir -p /tmp/WordPress/scripts
  2. /tmp/WordPress/scriptsinstall_dependencies.sh 파일을 생성합니다. 파일에 다음 줄을 추가합니다. 이 install_dependencies.sh 스크립트는 Apache, MySQL, PHP를 설치합니다. 또한 PHP에 MySQL 지원을 추가합니다.

    #!/bin/bash sudo amazon-linux-extras install php7.4 sudo yum install -y httpd mariadb-server php
  3. /tmp/WordPress/scriptsstart_server.sh 파일을 생성합니다. 파일에 다음 줄을 추가합니다. 이 start_server.sh 스크립트는 Apache와 MySQL을 시작합니다.

    #!/bin/bash systemctl start mariadb.service systemctl start httpd.service systemctl start php-fpm.service
  4. /tmp/WordPress/scriptsstop_server.sh 파일을 생성합니다. 파일에 다음 줄을 추가합니다. 이 stop_server.sh 스크립트는 Apache와 MySQL을 중지합니다.

    #!/bin/bash isExistApp=pgrep httpd if [[ -n $isExistApp ]]; then systemctl stop httpd.service fi isExistApp=pgrep mysqld if [[ -n $isExistApp ]]; then systemctl stop mariadb.service fi isExistApp=pgrep php-fpm if [[ -n $isExistApp ]]; then systemctl stop php-fpm.service fi
  5. /tmp/WordPress/scriptscreate_test_db.sh 파일을 생성합니다. 파일에 다음 줄을 추가합니다. 이 create_test_db.sh스크립트는 MySQL을 사용하여 WordPress가 사용할 test 데이터베이스를 만듭니다.

    #!/bin/bash mysql -uroot <<CREATE_TEST_DB CREATE DATABASE IF NOT EXISTS test; CREATE_TEST_DB
  6. 마지막으로, /tmp/WordPress/scripts에서 change_permissions.sh 스크립트를 만듭니다. 이것은 Apache에서 폴더 권한을 변경하는 데 사용됩니다.

    중요

    이 스크립트는 /tmp/WordPress 폴더에서 사용 권한을 업데이트하여 누구나 쓸 수 있습니다. 이것은 5단계: WordPress 애플리케이션 업데이트 및 재배포 중에 WordPress가 데이터베이스에 쓸 수 있도록 하는 데 필요합니다 WordPress 애플리케이션을 설정한 후 다음 명령을 실행하여 사용 권한을 보다 안전한 설정으로 업데이트합니다.

    chmod -R 755 /var/www/html/WordPress
    #!/bin/bash chmod -R 777 /var/www/html/WordPress
  7. 모든 스크립트에 실행 권한을 부여합니다. 명령줄에 다음을 입력합니다.

    chmod +x /tmp/WordPress/scripts/*

애플리케이션 사양 파일 추가

다음으로, CodeDeploy 에서 사용하는 YAML 형식 파일인 애플리케이션 사양 파일(AppSpec 파일)을 추가하여 다음을 수행합니다.

  • 애플리케이션 수정 버전의 소스 파일을 Amazon EC2 인스턴스의 대상으로 매핑합니다.

  • 배포된 파일에 대한 사용자 정의 권한을 지정합니다.

  • 배포 중에 대상 Amazon EC2 인스턴스에서 실행할 스크립트를 지정합니다.

AppSpec 파일의 이름은 appspec.yml이어야 합니다. 애플리케이션 소스 코드의 루트 폴더에 있어야 합니다. 이 튜토리얼에서 루트 디렉토리는 /tmp/WordPress입니다.

텍스트 편집기에서 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/change_permissions.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh - location: scripts/create_test_db.sh timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root

CodeDeploy는 이 AppSpec 파일을 사용하여 개발 시스템에 있는 /tmp/WordPress 폴더의 모든 파일을 대상 Amazon EC2 인스턴스의 /var/www/html/WordPress 폴더 복사합니다. 배포하는 동안 CodeDeploy는 지정된 스크립트를 배포 수명 주기 동안 지정된 이벤트(예:BeforeInstallAfterInstall)에서 대상 Amazon EC2 인스턴스에 있는 /var/www/html/WordPress/scripts 폴더에서 root(으)로 실행합니다. 스크립트를 실행하는 데 300초(5분) 이상 걸리면 CodeDeploy는 배포를 중지하고 배포를 실패로 표시합니다.

이러한 설정에 대한 자세한 정보는 CodeDeploy AppSpec 파일 참조 단원을 참조하세요.

중요

이 파일에 있는 각 항목 사이의 공백 위치와 개수는 중요합니다. 공백이 올바르지 않으면 CodeDeploy는 디버깅하기 어려운 오류를 발생시킵니다. 자세한 내용은 섹션을 참조하세요AppSpec 파일 간격