

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

# 2단계: 샘플 애플리케이션 수정 버전 만들기
<a name="tutorials-on-premises-instance-2-create-sample-revision"></a>

이 단계에서는 온프레미스 인스턴스에 배포할 샘플 애플리케이션 수정을 만듭니다.

온프레미스 인스턴스에 어떤 소프트웨어 및 기능이 이미 설치되어 있는지 또는 조직의 정책에 따라 어떤 소프트웨어 및 기능을 설치할 수 있는지 파악하기 어렵기 때문에 여기서 제공되는 샘플 애플리케이션 수정 버전은 배치 스크립트(Windows Server용) 또는 셸 스크립트(Ubuntu Server 및 RHEL용)를 사용하여 온프레미스 인스턴스의 위치에 텍스트 파일을 씁니다. **Install**, **AfterInstall**, **ApplicationStart**, **ValidateService** 등 여러 CodeDeploy의 배포 수명 주기 이벤트 각각에 대해 하나의 파일이 작성됩니다. **BeforeInstall** 배포 수명 주기 이벤트 중 스크립트가 실행되어 이 샘플의 이전 배포 중 기록된 이전 파일을 제거하고 온프레미스 인스턴스에 새 파일을 기록할 위치를 만듭니다.

**참고**  
다음 중 하나에 해당하면 샘플 애플리케이션 수정을 배포하지 못할 수 있습니다.  
온프레미스 인스턴스에서 CodeDeploy 에이전트를 시작한 사용자에게 스크립트를 실행할 권한이 없는 경우
사용자에게 스크립트에 나열된 위치에 폴더를 만들거나 삭제할 권한이 없는 경우
사용자에게 스크립트에 나열된 위치에 텍스트 파일을 만들 권한이 없는 경우

**참고**  
Windows Server 인스턴스를 구성했는데 다른 샘플을 배포하고자 하는 경우 [튜토리얼: CodeDeploy를 사용하여 "hello, world\$1" 애플리케이션 배포(Windows Server)](tutorials-windows.md) 튜토리얼의 [2단계: Windows Server Amazon EC2 인스턴스에 배포하도록 원본 콘텐츠 구성](tutorials-windows-configure-content.md)에 나와 있는 샘플을 사용할 수 있습니다.  
RHEL 인스턴스를 구성했는데 다른 샘플을 배포하고자 하는 경우 [튜토리얼: Amazon EC2 인스턴스(Amazon Linux 또는 Red Hat Enterprise Linux 및 Linux, macOS 또는 Unix)에 WordPress 배포](tutorials-wordpress.md) 튜토리얼의 [2단계: Amazon Linux 또는 Red Hat Enterprise Linux Amazon EC2 인스턴스에 배포할 원본 콘텐츠 구성](tutorials-wordpress-configure-content.md)에 나와 있는 샘플을 사용할 수 있습니다.  
현재, Ubuntu Server에 사용할 수 있는 대체 샘플은 없습니다.

1. 개발 머신에 샘플 애플리케이션 수정의 파일을 저장할 `CodeDeployDemo-OnPrem`이라는 하위 디렉터리(하위 폴더)를 만든 다음 이 폴더로 이동합니다. 예를 들어 Windows Server에서는 `c:\temp` 폴더, Ubuntu Server 및 RHEL에서는 `/tmp` 폴더를 루트 폴더로 사용한다고 가정합니다. 다른 폴더를 사용하는 경우 이 자습서 전체에서 해당 폴더로 바꾸십시오.

   Windows의 경우:

   ```
   mkdir c:\temp\CodeDeployDemo-OnPrem
   cd c:\temp\CodeDeployDemo-OnPrem
   ```

   Linux, macOS, Unix의 경우:

   ```
   mkdir /tmp/CodeDeployDemo-OnPrem
   cd /tmp/CodeDeployDemo-OnPrem
   ```

1. `CodeDeployDemo-OnPrem` 하위 폴더의 루트에서 텍스트 편집기를 사용하여 `appspec.yml`이라는 파일과 `install.txt`라는 파일을 만듭니다.

   Windows Server의 경우 `appspec.yml`:

   ```
   version: 0.0
   os: windows
   files:
     - source: .\install.txt
       destination: c:\temp\CodeDeployExample
   hooks:
     BeforeInstall:
       - location: .\scripts\before-install.bat
         timeout: 900
     AfterInstall:
       - location: .\scripts\after-install.bat     
         timeout: 900
     ApplicationStart:
       - location: .\scripts\application-start.bat  
         timeout: 900
     ValidateService:
       - location: .\scripts\validate-service.bat    
         timeout: 900
   ```

   Ubuntu Server and RHEL의 경우 `appspec.yml`:

   ```
   version: 0.0
   os: linux
   files:
     - source: ./install.txt
       destination: /tmp/CodeDeployExample
   hooks:
     BeforeInstall:
       - location: ./scripts/before-install.sh
         timeout: 900
     AfterInstall:
       - location: ./scripts/after-install.sh
         timeout: 900
     ApplicationStart:
       - location: ./scripts/application-start.sh
         timeout: 900
     ValidateService:
       - location: ./scripts/validate-service.sh
         timeout: 900
   ```

   AppSpec 파일에 대한 자세한 내용은 [CodeDeploy에 대한 개정에 애플리케이션 사양 파일 추가](application-revisions-appspec-file.md) 및 [CodeDeploy AppSpec 파일 참조](reference-appspec-file.md)를 참조하세요.

   `install.txt`:

   ```
   The Install deployment lifecycle event successfully completed.
   ```

1. `CodeDeployDemo-OnPrem` 하위 폴더의 루트 아래에 `scripts` 하위 폴더를 만든 후 해당 하위 폴더로 이동합니다.

   Windows의 경우:

   ```
   mkdir c:\temp\CodeDeployDemo-OnPrem\scripts
   cd c:\temp\CodeDeployDemo-OnPrem\scripts
   ```

   Linux, macOS, Unix의 경우:

   ```
   mkdir -p /tmp/CodeDeployDemo-OnPrem/scripts
   cd /tmp/CodeDeployDemo-OnPrem/scripts
   ```

1. `scripts` 하위 폴더의 루트에서 텍스트 편집기를 사용하여 Windows Server의 경우 `before-install.bat`, `after-install.bat`, `application-start.bat`, `validate-service.bat`(이)라는 파일 4개를 작성하거나 Ubuntu Server 및 RHEL의 경우 `before-install.sh`, `after-install.sh`, `application-start.sh`, `validate-service.sh`(이)라는 파일 4개를 작성합니다.

   Windows Server의 경우: 

   `before-install.bat`:

   ```
   set FOLDER=%HOMEDRIVE%\temp\CodeDeployExample
   
   if exist %FOLDER% (
     rd /s /q "%FOLDER%"
   )
   
   mkdir %FOLDER%
   ```

   `after-install.bat`:

   ```
   cd %HOMEDRIVE%\temp\CodeDeployExample
   
   echo The AfterInstall deployment lifecycle event successfully completed. > after-install.txt
   ```

   `application-start.bat`:

   ```
   cd %HOMEDRIVE%\temp\CodeDeployExample
   
   echo The ApplicationStart deployment lifecycle event successfully completed. > application-start.txt
   ```

   `validate-service.bat`:

   ```
   cd %HOMEDRIVE%\temp\CodeDeployExample
   
   echo The ValidateService deployment lifecycle event successfully completed. > validate-service.txt
   ```

   Ubuntu Server and RHEL의 경우 :

   `before-install.sh`:

   ```
   #!/bin/bash
   export FOLDER=/tmp/CodeDeployExample
   
   if [ -d $FOLDER ]
   then
    rm -rf $FOLDER
   fi
   
   mkdir -p $FOLDER
   ```

   `after-install.sh`:

   ```
   #!/bin/bash
   cd /tmp/CodeDeployExample
   
   echo "The AfterInstall deployment lifecycle event successfully completed." > after-install.txt
   ```

   `application-start.sh`:

   ```
   #!/bin/bash
   cd /tmp/CodeDeployExample
   
   echo "The ApplicationStart deployment lifecycle event successfully completed." > application-start.txt
   ```

   `validate-service.sh`:

   ```
   #!/bin/bash
   cd /tmp/CodeDeployExample
   
   echo "The ValidateService deployment lifecycle event successfully completed." > validate-service.txt
   
   unset FOLDER
   ```

1. Ubuntu Server 및 RHEL에서만 네 개의 셸 스크립트에 실행 권한이 있는지 확인하세요.

   ```
   chmod +x ./scripts/*
   ```