

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

# 2단계: Amazon Linux 또는 Red Hat Enterprise Linux Amazon EC2 인스턴스에 배포할 원본 콘텐츠 구성
<a name="tutorials-wordpress-configure-content"></a>

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

**Topics**
+ [소스 코드 가져오기](#tutorials-wordpress-configure-content-download-code)
+ [애플리케이션을 실행하기 위한 스크립트 만들기](#tutorials-wordpress-configure-content-create-scripts)
+ [애플리케이션 사양 파일 추가](#tutorials-wordpress-configure-content-add-appspec-file)

## 소스 코드 가져오기
<a name="tutorials-wordpress-configure-content-download-code"></a>

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

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

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

**Topics**
+ [WordPress 소스 코드의 복사본을 얻으려면(기본 제공 명령줄 호출)](#tutorials-wordpress-configure-content-download-code-command-line)
+ [WordPress 소스 코드의 복사본을 얻으려면(Git)](#tutorials-wordpress-configure-content-download-code-git)

### WordPress 소스 코드의 복사본을 얻으려면(기본 제공 명령줄 호출)
<a name="tutorials-wordpress-configure-content-download-code-command-line"></a>

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

   ```
   wget https://github.com/WordPress/WordPress/archive/master.zip
   ```

1. **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)
<a name="tutorials-wordpress-configure-content-download-code-git"></a>

1. 개발 머신에 [Git](http://git-scm.com)를 다운로드하고 설치합니다.

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

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

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

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

## 애플리케이션을 실행하기 위한 스크립트 만들기
<a name="tutorials-wordpress-configure-content-create-scripts"></a>

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

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

   ```
   mkdir -p /tmp/WordPress/scripts
   ```

1. `/tmp/WordPress/scripts`에 `install_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
   ```

1. `/tmp/WordPress/scripts`에 `start_server.sh` 파일을 생성합니다. 파일에 다음 줄을 추가합니다. 이 `start_server.sh` 스크립트는 Apache와 MySQL을 시작합니다.

   ```
   #!/bin/bash
   systemctl start mariadb.service
   systemctl start httpd.service
   systemctl start php-fpm.service
   ```

1. `/tmp/WordPress/scripts`에 `stop_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
   ```

1. `/tmp/WordPress/scripts`에 `create_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
   ```

1. 마지막으로, `/tmp/WordPress/scripts`에서 `change_permissions.sh` 스크립트를 만듭니다. 이것은 Apache에서 폴더 권한을 변경하는 데 사용됩니다.
**중요**  
 이 스크립트는 `/tmp/WordPress` 폴더에서 사용 권한을 업데이트하여 누구나 쓸 수 있습니다. 이것은 [5단계: WordPress 애플리케이션 업데이트 및 재배포](tutorials-wordpress-update-and-redeploy-application.md) 중에 WordPress가 데이터베이스에 쓸 수 있도록 하는 데 필요합니다 WordPress 애플리케이션을 설정한 후 다음 명령을 실행하여 사용 권한을 보다 안전한 설정으로 업데이트합니다.  

   ```
   chmod -R 755 /var/www/html/WordPress
   ```

   ```
   #!/bin/bash
   chmod -R 777 /var/www/html/WordPress
   ```

1. 모든 스크립트에 실행 권한을 부여합니다. 명령줄에 다음을 입력합니다.

   ```
   chmod +x /tmp/WordPress/scripts/*
   ```

## 애플리케이션 사양 파일 추가
<a name="tutorials-wordpress-configure-content-add-appspec-file"></a>

다음으로, CodeDeploy 에서 사용하는 [YAML](http://www.yaml.org) 형식 파일인 애플리케이션 사양 파일(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는 지정된 스크립트를 배포 수명 주기 동안 지정된 이벤트(예:**BeforeInstall** 및 **AfterInstall**)에서 대상 Amazon EC2 인스턴스에 있는 `/var/www/html/WordPress/scripts` 폴더에서 `root`(으)로 실행합니다. 스크립트를 실행하는 데 300초(5분) 이상 걸리면 CodeDeploy는 배포를 중지하고 배포를 실패로 표시합니다.

이러한 설정에 대한 자세한 정보는 [CodeDeploy AppSpec 파일 참조](reference-appspec-file.md) 단원을 참조하세요.

**중요**  
이 파일에 있는 각 항목 사이의 공백 위치와 개수는 중요합니다. 공백이 올바르지 않으면 CodeDeploy는 디버깅하기 어려운 오류를 발생시킵니다. 자세한 내용은 [AppSpec 파일 간격](reference-appspec-file.md#reference-appspec-file-spacing) 단원을 참조하십시오.