

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

# Chef 11 Linux 스택 시작하기
<a name="gettingstarted"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

**참고**  
이 섹션에서는 Chef 11을 사용하여 Linux를 시작하는 방법을 설명합니다. Chef 12 Linux 스택 시작하기에 대한 자세한 정보는 [시작하기: Linux](gettingstarted-linux.md) 단원을 참조하세요. Chef 12 Windows 스택 시작하기에 대한 자세한 정보는 [시작하기: Windows](gettingstarted-windows.md) 단원을 참조하세요.

클라우드 기반 애플리케이션에는 일반적으로 애플리케이션 서버, 데이터베이스 서버 등과 같은 관련 리소스 그룹이 필요하며 이러한 리소스를 공동으로 생성하고 관리해야 합니다. 이러한 인스턴스의 모음을 *스택*이라고 합니다. 다음은 간단한 애플리케이션 스택의 예입니다.

![\[Diagram showing users connecting to app servers via internet and load balancer, with a shared database.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/php_walkthrough_arch.png)


기본 아키텍처는 다음과 같이 구성됩니다.
+ 사용자로부터 트래픽을 수신하여 애플리케이션 서버 간에 고르게 분산하는 로드 밸런서 1개
+ 트래픽을 처리하는 데 필요한 만큼의 애플리케이션 서버 인스턴스 집합
+ 애플리케이션 서버에 백엔드 데이터 스토어를 제공하기 위한 데이터베이스 서버

또한, 일반적으로 애플리케이션을 애플리케이션 서버에 배포하고 스택을 모니터링하는 등의 기능이 필요합니다.

OpsWorks Stacks는 스택과 관련 애플리케이션 및 리소스를 생성하고 관리하는 간단하고 간단한 방법을 제공합니다. 이 장에서는 다이어그램에서 애플리케이션 서버 스택을 생성하는 프로세스를 단계별로 안내하여 OpsWorks Stacks의 기본 사항과 더욱 정교한 기능을 소개합니다. OpsWorks Stacks가 따르기 쉽게 만드는 증분 개발 모델을 사용합니다. 기본 스택을 설정하고 올바르게 작동하면 전체 기능을 구현할 때까지 구성 요소를 추가합니다.
+ [1단계: 사전 조건 완료](gettingstarted-prerequisites.md)에서는 이 안내서를 시작하기 위해 필요한 사전 준비를 설명합니다.
+ [2단계: 간단한 애플리케이션 서버 스택 생성 - Chef 11](gettingstarted-simple.md)에서는 단일 애플리케이션 서버로 구성된 최소 스택을 생성하는 방법을 설명합니다.
+ [3단계; 백엔드 데이터 스토어 추가](gettingstarted-db.md)에서는 데이터베이스 서버를 추가하고 애플리케이션 서버에 연결하는 방법을 설명합니다.
+ [4단계: MyStack 확장](gettingstarted-scale.md)에서는 증가하는 로드를 처리하기 위해 더 많은 애플리케이션 서버와 수신 트래픽을 분배할 로드 밸런서를 추가하여 스택을 확장하는 방법을 설명합니다.

**Topics**
+ [1단계: 사전 조건 완료](gettingstarted-prerequisites.md)
+ [2단계: 간단한 애플리케이션 서버 스택 생성 - Chef 11](gettingstarted-simple.md)
+ [3단계; 백엔드 데이터 스토어 추가](gettingstarted-db.md)
+ [4단계: MyStack 확장](gettingstarted-scale.md)
+ [5단계: MyStack 삭제](gettingstarted-delete.md)

# 1단계: 사전 조건 완료
<a name="gettingstarted-prerequisites"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

안내서를 시작하기 전에 다음 설정 단계를 완료합니다. 이러한 설정 단계에는 AWS 계정 가입, 관리 사용자 생성, OpsWorks Stacks에 액세스 권한 할당이 포함됩니다.

이미 [OpsWorks Stacks 시작하기](gettingstarted_intro.md) 안내서 중 하나를 마쳤다면 이 안내서의 사전 조건을 충족한 것이며, [2단계: 간단한 애플리케이션 서버 스택 생성 - Chef 11](gettingstarted-simple.md)으 단원으로 건너뛸 수 있습니다.

**Topics**
+ [에 가입 AWS 계정](#sign-up-for-aws)
+ [관리자 액세스 권한이 있는 사용자 생성](#create-an-admin)
+ [사용자에게 서비스 액세스 권한 할당](#gettingstarted-prerequisites-permissions)

## 에 가입 AWS 계정
<a name="sign-up-for-aws"></a>

이 없는 경우 다음 단계를 AWS 계정완료하여 생성합니다.

**에 가입하려면 AWS 계정**

1. [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)을 엽니다.

1. 온라인 지시 사항을 따르세요.

   등록 절차 중 전화 또는 텍스트 메시지를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.

   에 가입하면 AWS 계정*AWS 계정 루트 사용자*이 생성됩니다. 루트 사용자에게는 계정의 모든 AWS 서비스 및 리소스에 액세스할 권한이 있습니다. 보안 모범 사례는 사용자에게 관리 액세스 권한을 할당하고, 루트 사용자만 사용하여 [루트 사용자 액세스 권한이 필요한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)을 수행하는 것입니다.

AWS 는 가입 프로세스가 완료된 후 확인 이메일을 보냅니다. 언제든지 [https://aws.amazon.com/](https://aws.amazon.com/)으로 이동하고 **내 계정**을 선택하여 현재 계정 활동을 확인하고 계정을 관리할 수 있습니다.

## 관리자 액세스 권한이 있는 사용자 생성
<a name="create-an-admin"></a>

에 가입한 후 일상적인 작업에 루트 사용자를 사용하지 않도록 관리 사용자를 AWS 계정보호 AWS IAM Identity Center, AWS 계정 루트 사용자활성화 및 생성합니다.

**보안 AWS 계정 루트 사용자**

1.  **루트 사용자를** 선택하고 AWS 계정 이메일 주소를 입력하여 계정 소유자[AWS Management Console](https://console.aws.amazon.com/)로에 로그인합니다. 다음 페이지에서 비밀번호를 입력합니다.

   루트 사용자를 사용하여 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*의 [루트 사용자로 로그인](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)을 참조하세요.

1. 루트 사용자의 다중 인증(MFA)을 활성화합니다.

   지침은 *IAM 사용 설명서*의 [AWS 계정 루트 사용자(콘솔)에 대한 가상 MFA 디바이스 활성화를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html).

**관리자 액세스 권한이 있는 사용자 생성**

1. IAM Identity Center를 활성화합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [AWS IAM Identity Center설정](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html)을 참조하세요.

1. IAM Identity Center에서 사용자에게 관리 액세스 권한을 부여합니다.

   를 자격 증명 소스 IAM Identity Center 디렉터리 로 사용하는 방법에 대한 자습서는 사용 *AWS IAM Identity Center 설명서*[의 기본값으로 사용자 액세스 구성을 IAM Identity Center 디렉터리](https://docs.aws.amazon.com/singlesignon/latest/userguide/quick-start-default-idc.html) 참조하세요.

**관리 액세스 권한이 있는 사용자로 로그인**
+ IAM IDentity Center 사용자로 로그인하려면 IAM Identity Center 사용자를 생성할 때 이메일 주소로 전송된 로그인 URL을 사용합니다.

  IAM Identity Center 사용자를 사용하여 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*[의 AWS 액세스 포털에 로그인](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)을 참조하세요.

**추가 사용자에게 액세스 권한 할당**

1. IAM Identity Center에서 최소 권한 적용 모범 사례를 따르는 권한 세트를 생성합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [Create a permission set](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-create-a-permission-set.html)를 참조하세요.

1. 사용자를 그룹에 할당하고, 그룹에 Single Sign-On 액세스 권한을 할당합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [그룹 추가](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html)를 참조하세요.

## 사용자에게 서비스 액세스 권한 할당
<a name="gettingstarted-prerequisites-permissions"></a>

역할 또는 사용자에게 `AWSOpsWorks_FullAccess` 및 `AmazonS3FullAccess` 권한을 추가하여 OpsWorks Stacks 서비스(및 OpsWorks Stacks가 의존하는 관련 서비스)에 대한 액세스를 활성화합니다.

권한 추가에 대한 자세한 내용은 [IAM 자격 증명 권한 추가(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)를 참조하세요.

이제 모든 설정 단계를 마쳤으므로 [이 안내서를 시작](gettingstarted-simple.md)할 수 있습니다.

# 2단계: 간단한 애플리케이션 서버 스택 생성 - Chef 11
<a name="gettingstarted-simple"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

기본 애플리케이션 서버 스택은 사용자 요청을 수신하기 위한 퍼블릭 IP 주소를 가진 단일 애플리케이션 서버 인스턴스로 구성됩니다. 애플리케이션 코드 및 관련 파일은 별도의 리포지토리에 저장되다가 서버로 배포됩니다. 다음 다이어그램은 이러한 스택을 보여줍니다.

![\[Diagram showing application server stack with users, internet, and AWS components.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/php_walkthrough_arch_2.png)


스택은 다음 구성 요소를 갖습니다.
+ *계층* - 인스턴스의 그룹을 나타내며 인스턴스 그룹을 어떻게 구성할지를 지정합니다.

  이 예제에서 계층은 PHP 앱 서버 인스턴스의 그룹을 나타냅니다.
+ Amazon EC2 *인스턴스*를 나타내는 인스턴스입니다.

  이 예제에서 인스턴스는 PHP 앱 서버를 실행하도록 구성됩니다. 계층에는 원하는 수의 인스턴스가 있을 수 있습니다. OpsWorks 스택은 다른 여러 앱 서버도 지원합니다. 자세한 내용은 [애플리케이션 서버 계층](workinglayers-servers.md) 단원을 참조하십시오.
+ *앱* - 애플리케이션 서버에 애플리케이션을 설치하는 데 필요한 정보를 포함합니다.

  코드는 원격 리포지토리(예: Git 리포지토리 또는 Amazon S3 버킷)에 저장됩니다.

다음 섹션에서는 OpsWorks Stacks 콘솔을 사용하여 스택을 생성하고 애플리케이션을 배포하는 방법을 설명합니다. CloudFormation 템플릿을 사용하여 스택을 프로비저닝할 수도 있습니다. 이 항목에서 설명하는 스택을 프로비저닝하는 템플릿 예제는 [AWS OpsWorks 조각](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-opsworks.html)을 참조하세요.

**Topics**
+ [2.1 단계: 스택 생성 - Chef 11](gettingstarted-simple-stack.md)
+ [2.2단계: PHP 앱 서버 계층 추가 - Chef 11](gettingstarted-simple-layer.md)
+ [2.3단계: PHP 앱 서버 계층에 인스턴스 추가 - Chef 11](gettingstarted-simple-instance.md)
+ [2.4단계: 앱 생성 및 배포 - Chef 11](gettingstarted-simple-app.md)

# 2.1 단계: 스택 생성 - Chef 11
<a name="gettingstarted-simple-stack"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

인스턴스 및 기타 리소스의 컨테이너 역할을 하는 스택을 생성하여 OpsWorks Stacks 프로젝트를 시작합니다. 스택 구성은 AWS 리전, 기본 운영 체제 등 스택의 모든 인스턴스가 공유하는 일부 기본 설정을 지정합니다.

**참고**  
이 페이지에서는 Chef 11 스택을 생성하는 방법을 설명합니다. Chef 12 스택을 생성하는 방법에 대한 자세한 정보는 [스택 생성](https://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted-intro-create-stack.html) 단원을 참조하세요.

이 페이지에서는 Chef 11에서 스택을 생성하는 방법을 설명합니다.

**새 스택을 생성하려면**

1. 

**stack 추가**

   [OpsWorks Stacks 콘솔](https://console.aws.amazon.com/opsworks/)에 로그인합니다. 계정에 기존 스택이 없는 경우에는 [**AWS OpsWorks 시작하기**] 페이지가 표시되는데 [**첫 번째 스택 추가**]를 클릭합니다. 그렇지 않으면 계정의 OpsWorks 스택을 나열하는 Stacks 대시보드가 표시됩니다. **스택 추가**를 클릭합니다.  
![\[스택이 없는 경우 OpsWorks Stacks 콘솔에 첫 번째 실행 페이지가 표시되고, 그렇지 않으면 계정의 모든 스택 목록이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/firstrun.png)

1. 

**스택 구성**

   [**스택 추가**] 페이지에서 [**Chef 11 스택**]을 선택하고 다음 설정을 지정합니다.  
**스택 이름**  
스택의 이름을 입력합니다. 이 이름에는 영숫자(a-z, A-Z 및 0-9) 및 하이픈(-)을 사용할 수 있습니다. 이 연습에서 사용되는 예제 스택의 이름은 **MyStack**입니다.  
**리전**  
스택 리전으로 미국 서부(오레곤)를 선택합니다.

   다른 설정에 대해서는 기본값을 수락하고 [**스택 추가**]를 클릭합니다. 다양한 스택 설정에 대한 자세한 정보는 [새 스택 생성](workingstacks-creating.md) 단원을 참조하세요.

# 2.2단계: PHP 앱 서버 계층 추가 - Chef 11
<a name="gettingstarted-simple-layer"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

스택은 기본적으로 인스턴스의 컨테이너이지만 인스턴스를 스택에 직접 추가하는 것은 아닙니다. 관련된 인스턴스의 그룹을 나타내는 계층을 추가한 후 인스턴스를 계층에 추가합니다.

계층은 기본적으로 OpsWorks Stacks가 동일한 구성으로 Amazon EC2 인스턴스 세트를 생성하는 데 사용하는 블루프린트입니다. 관련된 인스턴스의 그룹 각각에 대해 하나의 계층을 스택에 추가합니다. OpsWorks Stacks에는 MySQL 데이터베이스 서버 또는 PHP 애플리케이션 서버와 같은 표준 소프트웨어 패키지를 실행하는 인스턴스 그룹을 나타내는 기본 제공 계층 세트가 포함되어 있습니다. 또한 사용자가 특정 요구 사항에 맞춰 부분적으로 또는 완전히 사용자 지정된 계층을 생성할 수 있습니다. 자세한 내용은 [OpsWorks 스택 사용자 지정](customizing.md) 섹션을 참조하세요.

MyStack에는 PHP 애플리케이션 서버로 작동하는 인스턴스의 그룹을 나타내는 내장 PHP 앱 서버 계층 하나가 포함되어 있습니다. 내장 계층에 대한 설명을 포함하여 자세한 정보는 [계층](workinglayers.md) 단원을 참조하세요.

**MyStack에 PHP 앱 서버 계층을 추가하려면**

1. 

**계층 추가 페이지 열기**

   스택 생성을 완료하면 OpsWorks 스택에 **스택** 페이지가 표시됩니다. [**계층 추가**]를 클릭하여 첫 번째 계층을 추가합니다.  
![\[MyStack interface showing layers and instances sections with options to add components.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs2a.png)

1. 

**계층 유형 지정 및 계층 구성**

   **계층 유형** 상자에서 **PHP 앱 서버**를 선택하고 기본 **Elastic Load Balancer** 설정을 수락한 다음 **계층 추가**를 클릭합니다. 계층을 생성한 후에는 [계층을 편집](workinglayers-basics-edit.md)하여 EBS 볼륨 구성과 같은 다른 속성을 지정할 수 있습니다.  
![\[Add layer interface showing PHP App Server layer type selection and Elastic Load Balancer option.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs3.png)

# 2.3단계: PHP 앱 서버 계층에 인스턴스 추가 - Chef 11
<a name="gettingstarted-simple-instance"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

 OpsWorks Stacks 인스턴스는 특정 Amazon EC2 인스턴스를 나타냅니다.
+ 인스턴스의 구성은 Amazon EC2 운영 체제 및 크기와 같은 일부 기본 설정을 지정하며, 실행은 되지만 그다지 많은 역할을 수행하지는 않습니다.
+ 인스턴스의 계층은 설치할 패키지, 인스턴스가 탄력적 IP 주소를 갖는지 여부 등을 결정하여 인스턴스에 기능을 추가합니다.

OpsWorks Stacks는 서비스와 상호 작용하는 각 인스턴스에 에이전트를 설치합니다. 인스턴스에 계층의 기능을 추가하기 위해 OpsWorks Stacks는 에이전트에게 [Chef 레시피](http://docs.chef.io/recipes.html)라는 작은 애플리케이션을 실행하도록 지시합니다.이 레시피는 애플리케이션 및 패키지를 설치하고 구성 파일을 생성하는 등의 작업을 수행할 수 있습니다. OpsWorks Stacks는 인스턴스 [수명 주기의](workingcookbook-events.md) 주요 지점에서 레시피를 실행합니다. 예를 들어 OpsWorks는 인스턴스가 소프트웨어 설치와 같은 작업을 처리하기 위해 부팅을 완료하면 설정 레시피를 실행하고, 사용자가 코드 및 관련 파일을 설치하기 위해 앱을 배포할 때 Deploy 레시피를 실행합니다.

**참고**  
레시피의 작동 방식에 대해 궁금한 점이 있는 경우 모든 OpsWorks Stacks 기본 제공 레시피는 퍼블릭 GitHub 리포지토리인 [OpsWorks 쿡북에 있습니다](https://github.com/aws/opsworks-cookbooks). 또한 자체 사용자 지정 레시피를 생성하고, 나중에 설명하는 것처럼 OpsWorks Stacks가 이러한 레시피를 실행하게 할 수 있습니다.

MyStack에 PHP 애플리케이션 서버를 추가하려면 이전 단계에서 생성한 PHP 앱 서버 계층에 인스턴스를 추가합니다.

**PHP 앱 서버 계층에 인스턴스를 추가하려면**

1. 

**인스턴스 추가 열기**

   계층 추가를 완료하면 OpsWorks Stacks에 **계층 페이지가** 표시됩니다. 탐색 창에서 **인스턴스**를 클릭한 다음 **PHP 앱 서버**에서 **인스턴스 추가**를 클릭합니다.

1. 

**인스턴스 구성**

   각 인스턴스에는 OpsWorks Stacks에서 생성한 기본 호스트 이름이 있습니다. 이 예제에서 OpsWorks Stacks는 계층의 짧은 이름에 숫자를 추가하기만 하면 됩니다. 스택 생성 시 지정한 몇 가지 기본 설정(예: 가용 영역 또는 운영 체제) 재정의를 비롯하여 각 인스턴스를 개별적으로 구성할 수 있습니다. 이 연습의 경우 기본 설정을 수락하고 [**인스턴스 추가**]를 클릭하여 계층에 인스턴스를 추가합니다. 자세한 내용은 [인스턴스](workinginstances.md) 섹션을 참조하세요.  
![\[Form for adding a new PHP App Server instance with hostname, size, and subnet options.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs7.png)

1. 

**인스턴스 시작**

   지금까지 인스턴스의 구성을 지정했습니다. 실행 중인 Amazon EC2 인스턴스를 생성하려면 인스턴스를 시작해야 합니다. 그런 다음 OpsWorks Stacks는 구성 설정을 사용하여 지정된 가용 영역에서 Amazon EC2 인스턴스를 시작합니다. 자세한 인스턴스 시작 방법은 인스턴스의 *조정 유형*에 따라 다릅니다. 이전 단계에서는 기본 조정 유형인 *24/7*을 사용하여 인스턴스를 생성했습니다. 이 조정 유형은 수동으로 시작해야 하며 시작되면 수동으로 중지될 때까지 실행됩니다. OpsWorks Stacks가 일정 또는 현재 로드에 따라 자동으로 시작하고 중지하는 시간 기반 및 로드 기반 조정 유형을 생성할 수도 있습니다. 자세한 내용은 [시간 기반 또는 로드 기반 인스턴스를 사용하여 로드 관리](workinginstances-autoscaling.md) 단원을 참조하십시오.

   **PHP 앱 서버의** **php-app1**로 이동한 다음 행의 **작업** 열에서 **시작**을 클릭하여 인스턴스를 시작합니다.  
![\[PHP App Server instance list showing php-app1 stopped with start and delete options.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs8.png)

1. 

**시작 중 인스턴스의 상태 모니터링**

   Amazon EC2 인스턴스를 부팅하고 패키지를 설치하는 데는 일반적으로 몇 분 가량 소요됩니다. 시작 프로세스가 진행되는 동안 인스턴스의 [**상태**] 필드에 다음 값이 차례로 표시됩니다.

   1. **요청됨** - OpsWorks Stacks가 Amazon EC2 서비스를 호출하여 Amazon EC2 인스턴스를 생성했습니다.

   1. **pending** - OpsWorks Stacks가 Amazon EC2 인스턴스가 시작될 때까지 기다리고 있습니다.

   1. **booting** - Amazon EC2 인스턴스가 부팅 중입니다.

   1. **running\$1setup** - OpsWorks Stacks 에이전트가 패키지 구성 및 설치와 같은 작업을 처리하는 계층의 Setup 레시피와 인스턴스에 앱을 배포하는 Deploy 레시피를 실행하고 있습니다.

   1. **online** - 인스턴스를 사용할 준비가 되었습니다.

   php-app1이 온라인 상태가 되면 [**인스턴스**] 페이지의 모양은 다음과 같아야 합니다.  
![\[PHP App Server instance table showing php-app1 online with details like size and IP address.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs9.png)

   이 페이지는 스택의 모든 인스턴스에 대한 간단한 요약으로 시작합니다. 이제 이 페이지에 온라인 인스턴스가 하나 표시됩니다. php-app1 [**작업**] 열에서 인스턴스를 중지하는 [**중지**]가 [**시작**] 및 [**삭제**]로 바뀝니다.

# 2.4단계: 앱 생성 및 배포 - Chef 11
<a name="gettingstarted-simple-app"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

MyStack을 보다 유용하게 만들려면 PHP 앱 서버 인스턴스에 앱을 배포해야 합니다. 앱의 코드 및 관련 파일은 리포지토리(예: Git)에 저장합니다. 이러한 파일을 애플리케이션 서버로 보내기 위해서는 두 단계가 필요합니다.

**참고**  
이 섹션에서 설명하는 절차는 Chef 11 스택에 적용됩니다. Chef 12 스택에서 계층에 앱을 추가하는 방법에 대한 자세한 정보는 [앱 추가](workingapps-creating.md) 단원을 참조하세요.

1. 앱을 생성합니다.

   앱에는 OpsWorks 리포지토리에서 코드 및 관련 파일을 다운로드하는 데 필요한 정보가 포함되어 있습니다. 앱의 도메인과 같은 추가 정보를 지정할 수도 있습니다.

1. 애플리케이션 서버에 앱을 배포합니다.

   앱을 배포하면 OpsWorks Stacks가 배포 수명 주기 이벤트를 트리거합니다. 그러면 에이전트가 파일을 적절한 디렉터리로 다운로드하고 서버 구성, 서비스 재시작 등의 관련 작업을 수행하는 인스턴스의 Deploy 레시피를 실행합니다.

**참고**  
새 인스턴스를 생성하면 OpsWorks Stacks가 인스턴스에 기존 앱을 자동으로 배포합니다. 하지만 새 앱을 생성하거나 기존 앱을 업데이트하는 경우에는 수동으로 모든 기존 인스턴스에 앱을 배포하거나 업데이트해야 합니다.

이 단계는 수동으로 예제 앱을 퍼블릭 Git 리포지토리에서 애플리케이션 서버로 배포하는 방법을 보여줍니다. 애플리케이션을 검사하려면 [https://github.com/amazonwebservices/opsworks-demo-php-simple-app](https://github.com/amazonwebservices/opsworks-demo-php-simple-app)으로 이동하세요. 이 예제에서 사용되는 애플리케이션은 version1 브랜치에 있습니다. OpsWorks Stacks는 다른 여러 리포지토리 유형도 지원합니다. 자세한 내용은 [애플리케이션 소스](workingapps-creating.md#workingapps-creating-source) 단원을 참조하십시오.

**앱을 생성 및 배포하려면**

1. 

**앱 페이지 열기**

   탐색 창에서 [**앱**]을 클릭한 다음 [**앱**] 페이지에서 [**앱 추가**]를 클릭합니다.  
![\[Apps page showing no apps and an "Add an app" button with a brief description.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs13.png)

1. 

**앱 구성**

   [**앱**] 페이지에서 다음 값을 지정합니다.  
**이름**  
 OpsWorks Stacks가 표시 목적으로 사용하는 앱의 이름입니다. 예제 앱의 이름은 입니다**SimplePHPApp**. OpsWorks 스택은 또한이 예제에 대해 짧은 이름인 Simplephpapp을 생성합니다.이 이름은 나중에 설명하듯이 내부적으로 그리고 Deploy 레시피에 의해 사용됩니다.  
**Type**  
앱을 배포할 위치를 결정하는 앱 유형. 이 예제에서는 PHP 앱 서버 인스턴스에 앱을 배포하는 **PHP**를 사용합니다.  
**데이터 소스 유형**  
연결된 데이터베이스 서버. 지금은 [**없음**]을 선택합니다. 데이터베이스 서버에 대해서는 [3단계; 백엔드 데이터 스토어 추가](gettingstarted-db.md) 단원에서 소개합니다.  
**리포지토리 유형**  
앱의 리포지토리 유형. 이 예제의 앱은 **Git** 리포지토리에 저장됩니다.  
**리포지토리 URL**  
앱의 리포지토리 URL. 예제 URL은 **git://github.com/awslabs/opsworks-demo-php-simple-app.git**입니다.  
**브랜치/개정**  
앱의 브랜치 또는 버전. 연습의 이 부분에서는 **version1** 브랜치를 사용합니다.

   나머지 설정에 대해서는 기본값을 유지하고 [**앱 추가**]를 클릭합니다. 자세한 내용은 [앱 추가](workingapps-creating.md) 섹션을 참조하세요.  
![\[Add App form with settings for name, type, document root, data sources, and application source.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs14.png)

1. 

**배포 페이지 열기**

   서버에 코드를 설치하려면 앱을 *배포*해야 합니다. 이렇게 하려면 단순 PHPApp **작업** 열에서 **배포**를 클릭합니다.  
![\[Apps table showing SimplePHPApp with deploy, edit, and delete options in the Actions column.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs15.png)

1. 

**앱 배포**

   앱을 배포하면 에이전트는 애플리케이션을 다운로드하여 구성하는 Deploy 레시피를 PHP 앱 서버 인스턴스에서 실행합니다.

   [**명령**]은 이미 [**배포**]로 설정되어 있어야 합니다. 다른 설정은 기본값으로 유지하고 [**배포**]를 클릭하여 앱을 배포합니다.  
![\[Deploy app interface with settings for SimplePHPApp and instance selection options.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs16.png)

   배포가 완료되면 **배포** 페이지에 **성공** **상태**가 표시되고 **php-app1** 옆에 녹색 확인 표시가 나타납니다.

1. 

**SimplePHPApp 실행**

   이제 SimplePHPApp이 설치되어 실행할 준비가 되었습니다. 이 앱을 실행하려면 탐색 창에서 [**인스턴스**]를 클릭하여 [**인스턴스**]로 이동합니다. 그런 다음 php-app1 인스턴스의 퍼블릭 IP 주소를 클릭합니다.  
![\[PHP App Server instance details showing hostname, status, size, and public IP address.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs20.png)

   브라우저에 다음과 같은 페이지가 표시되어야 합니다.  
![\[Confirmation page for a simple PHP application running on AWS 클라우드 with PHP version 5.3.20.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs21.png)

**참고**  
이 연습에서는 사용자가 다음 섹션으로 이동하여 최종적으로 단일 세션에서 전체 연습을 완료하는 것으로 가정합니다. 원하는 경우 언제든지 OpsWorks Stacks에 로그인하고 스택을 열어 중지했다가 나중에 계속할 수 있습니다. 단, 사용하는 AWS 리소스(예: 온라인 인스턴스)에 대해 요금이 부과됩니다. 불필요한 요금이 부과되지 않도록 인스턴스를 중지할 수 있습니다. 그러면 해당하는 EC2 인스턴스가 종료됩니다. 계속할 준비가 되었을 때 인스턴스를 다시 시작할 수 있습니다.

# 3단계; 백엔드 데이터 스토어 추가
<a name="gettingstarted-db"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

[2.1 단계: 스택 생성 - Chef 11](gettingstarted-simple-stack.md)에서는 PHP 애플리케이션을 서비스하는 스택을 생성하는 방법을 설명했습니다. 하지만 이 애플리케이션을 일부 정적 텍스트를 표시하는 수준의 매우 간단한 애플리케이션이었습니다. 프로덕션 애플리케이션은 흔히 백엔드 데이터 스토어를 사용하며 다음과 비슷한 스택 구성을 보입니다.

![\[AWS OpsWorks stack architecture diagram showing PHP app, MySQL, and user interactions.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/php_walkthrough_arch_3.png)


이 섹션에서는 MyStack을 확장하여 백엔드 MySQL 데이터베이스 서버를 포함시키는 방법을 보여줍니다. 하지만 단순히 MySQL 서버를 스택에 추가하는 것보다는 많은 작업이 필요합니다. 또한 데이터베이스 서버와 제대로 통신하도록 앱을 구성해야 합니다. OpsWorks Stacks는이 작업을 대신 수행하지 않으므로 해당 작업을 처리하기 위해 일부 사용자 지정 레시피를 구현해야 합니다.

**Topics**
+ [3.1단계; 백엔드 데이터베이스 추가](gettingstarted-db-db.md)
+ [3.2단계: SimplePHPApp 업데이트](gettingstarted-db-update.md)
+ [간단한 차이: OpsWorks 쿡북, 레시피 및 스택 속성](gettingstarted-db-recipes.md)
+ [3.3단계: MyStack에 사용자 지정 쿡북 추가](gettingstarted-db-cookbooks.md)
+ [3.4단계: 레시피 실행](gettingstarted-db-lifecycle.md)
+ [3.5단계: SimplePHPApp 버전 2 배포](gettingstarted-db-deploy.md)
+ [3.6단계: SimplePHPApp 실행](gettingstarted-db-run.md)

# 3.1단계; 백엔드 데이터베이스 추가
<a name="gettingstarted-db-db"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

새로운 버전의 SimplePHPApp은 데이터를 백엔드 데이터베이스에 저장합니다. OpsWorks Stacks는 두 가지 유형의 데이터베이스 서버를 지원합니다.
+ [MySQL OpsWorks Stacks 계층](workinglayers-db-mysql.md)은 MySQL 데이터베이스 마스터를 호스팅하는 Amazon EC2 인스턴스를 생성하기 위한 청사진입니다.
+ Amazon RDS 서비스 계층은 [Amazon RDS 인스턴스](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)를 스택으로 통합하는 방법을 제공합니다.

Amazon DynamoDB와 같은 다른 데이터베이스를 사용할 수도 있으며, [MongoDB](http://www.mongodb.org/)와 같은 데이터베이스를 지원하는 사용자 지정 계층을 생성할 수도 있습니다. 자세한 내용은 [백엔드 데이터 스토어 사용](customizing-rds.md) 섹션을 참조하세요.

이 예제에서는 MySQL 계층을 사용합니다.

**MyStack에 MySQL 계층을 추가하려면**

1. [**계층**] 페이지에서 [**\$1 계층**]을 클릭합니다.

1. [**계층 추가**] 페이지에서 [**계층 유형**]에 대해 [**MySQL**]을 선택하고, 기본 설정을 수락하고, [**계층 추가**]를 클릭합니다.  
![\[Add Layer interface for MySQL with options to set 루트 사용자 password and apply to all instances.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gsb3.png)

**MySQL 계층에 인스턴스를 추가하려면**

1. [**계층**] 페이지의 [**MySQL**] 행에서 [**인스턴스 추가**]를 클릭합니다.

1. [**인스턴스**] 페이지의 [**MySQL**]에서 [**인스턴스 추가**]를 클릭합니다.

1. 기본값을 수락하고 [**인스턴스 추가**]를 클릭하되 아직 시작하지는 마십시오.

**참고**  
OpsWorks Stacks는이 예제에서 앱의 짧은 이름인 simplephpapp을 사용하여 라는 데이터베이스를 자동으로 생성합니다. [Chef 레시피](http://docs.chef.io/recipes.html)를 사용하여 데이터베이스와 상호 작용하려면 이 이름이 필요합니다.

# 3.2단계: SimplePHPApp 업데이트
<a name="gettingstarted-db-update"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

시작하려면 백엔드 데이터 스토어를 사용하는 새 버전의 SimplePHPApp이 필요합니다. OpsWorks Stacks에서는 애플리케이션을 업데이트하기가 쉽습니다. Git 또는 하위 버전 리포지토리를 사용하는 경우 각 앱 버전마다 다른 리포지토리 브랜치를 지정할 수 있습니다. 예제 앱에서는 백엔드 데이터베이스를 사용하는 앱 버전을 Git 리포지토리의 version2 브랜치에 저장합니다. 앱 구성을 업데이트하여 새 브랜치를 지정하고 앱을 재배포하기만 하면 됩니다.

**SimplePHPApp을 업데이트하려면**

1. 

**이 앱의 편집 페이지를 엽니다.**

   탐색 창에서 **앱**을 클릭한 다음 **SimplePhpApp** 행의 **작업** 열에서 **편집**을 클릭합니다.

1. 

**앱의 구성을 업데이트합니다.**

   다음 설정을 변경합니다.  
**브랜치/개정**  
이 설정은 앱의 리포지토리 브랜치를 나타냅니다. SimplePHPApp의 첫 번째 버전은 데이터베이스에 연결하지 않습니다. 앱의 데이터베이스 지원 버전을 사용하려면 이 값을 **version2**로 설정합니다.  
[**문서 루트**]  
이 설정은 앱의 루트 폴더를 지정합니다. SimplePHPApp의 첫 번째 버전에서는 기본 설정을 사용했습니다. 즉, `index.php`를 서버의 표준 루트 폴더(PHP의 경우 `/srv/www`)에 설치했습니다. 여기서 이름만 지정하고 선행 '/'는 지정하지 않는 하위 폴더를 지정하면OpsWorks 스택이 표준 폴더 경로에 추가합니다. SimplePHPApp의 버전 2는 `/srv/www/web`에 저장되어야 하므로 **문서 루트**를 **web**으로 설정합니다.  
**데이터 원본 유형**  
이 설정은 데이터베이스 서버를 앱과 연결합니다. 이 예제에서는 이전 단계에서 생성한 MySQL 인스턴스를 사용하므로 **데이터 원본 유형**을 OpsWorks로, **데이터베이스 인스턴스**를 이전 단계에서 생성한 인스턴스인 **db-master1(mysql)**로 설정합니다. **데이터베이스 이름을** 비워 둡니다. OpsWorks Stacks는 앱의 짧은 이름인 simplephpapp을 사용하여 라는 이름의 서버에 데이터베이스를 생성합니다.

   [**저장**]을 클릭하여 새로운 구성을 저장합니다.  
![\[Add App form with settings for SimplePHP application and OpsWorks data source.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gsb2.png)

1. MySQL 인스턴스를 시작합니다.

앱을 업데이트하면 시작 시 OpsWorks Stacks가 새 앱 서버 인스턴스에 새 앱 버전을 자동으로 배포합니다. 그러나 OpsWorks Stacks는 기존 서버 인스턴스에 새 앱 버전을 자동으로 배포하지 않으므로에 설명된 대로 수동으로 배포해야 합니다[2.4단계: 앱 생성 및 배포 - Chef 11](gettingstarted-simple-app.md). 이제 업데이트된 SimplePHPApp을 배포할 수 있지만, 이 예제에서는 약간 기다리는 것이 좋습니다.

# 간단한 차이: OpsWorks 쿡북, 레시피 및 스택 속성
<a name="gettingstarted-db-recipes"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

이제 앱 및 데이터베이스 서버는 생성되었지만 사용할 준비가 되려면 아직 많은 작업이 필요합니다. 여전히 데이터베이스를 설정하고 앱의 연결 설정을 구성해야 합니다. OpsWorks Stacks는 이러한 작업을 자동으로 처리하지 않지만 Chef 쿡북, 레시피 및 동적 속성을 지원합니다. 한 쌍의 레시피, 즉 데이터베이스를 설정하는 레시피와 앱의 연결 설정을 구성하는 레시피를 구현하고 Stacks에서 자동으로 실행하도록 OpsWorks 할 수 있습니다.

필요한 레시피가 포함된 phpapp 쿡북이 이미 구현되어 사용 가능한 상태입니다. 원할 경우 [3.3단계: MyStack에 사용자 지정 쿡북 추가](gettingstarted-db-cookbooks.md) 섹션으 단원으로 건너뛸 수 있습니다. 자세히 알아보기를 원할 경우 이 섹션에서 쿡북 및 레시피에 대한 배경 지식을 제공하고 레시피가 작동하는 방식을 설명합니다. 쿡북 자체에 대해 알아보려면 [phpapp cookbook](https://github.com/amazonwebservices/opsworks-example-cookbooks/tree/master/phpapp) 단원을 참조하세요.

**Topics**
+ [레시피와 속성](#gettingstarted-db-recipes-attributes)
+ [데이터베이스 설정](#gettingstarted-db-recipes-dbsetup)
+ [데이터베이스에 애플리케이션 연결](#gettingstarted-db-recipes-appsetup)

## 레시피와 속성
<a name="gettingstarted-db-recipes-attributes"></a>

Chef 레시피는 기본적으로 패키지 설치, 구성 파일 생성, shell 명령 실행 등 인스턴스에 대한 작업을 수행하는 특수한 Ruby 애플리케이션입니다. 관련된 레시피의 그룹은 *쿡북*으로 구성됩니다. 여기에는 구성 파일을 생성하기 위한 템플릿과 같은 지원 파일도 포함됩니다.

OpsWorks Stacks에는 내장 계층을 지원하는 쿡북 세트가 있습니다. 인스턴스에 대한 사용자 지정 작업을 수행하기 위해 자체 레시피로 구성된 사용자 지정 쿡북을 생성할 수도 있습니다. 이 주제에서는 레시피를 간략히 소개하고 레시피를 사용하여 데이터베이스를 설정하고 앱의 연결 설정을 구성하는 방법을 살펴봅니다. 쿡북 및 레시피에 대한 자세한 정보는 [쿡북과 레시피](workingcookbook.md) 또는 [OpsWorks 스택 사용자 지정](customizing.md) 단원을 참조하세요.

레시피는 일반적으로 Chef *속성*을 입력 데이터로 사용합니다.
+ 일부 속성은 Chef에 의해 정의되며 운영 체제와 같이 인스턴스에 대한 기본 정보를 제공합니다.
+ OpsWorks Stacks는 계층 구성과 같은 스택과 앱 리포지토리와 같은 배포된 앱에 대한 정보를 포함하는 속성 세트를 정의합니다.

  [사용자 지정 JSON](workingstacks-json.md)을 스택 또는 배포에 할당하여 여기에 사용자 지정 속성을 추가할 수 있습니다.
+ 또한 쿡북에서 쿡북 고유 속성을 정의할 수 있습니다.

  phpapp 쿡북 속성은 `attributes/default.rb`에서 정의됩니다.

 OpsWorks Stacks 속성의 전체 목록은 [스택 구성 및 배포 속성: Linux](attributes-json-linux.md) 및 섹션을 참조하세요[내장 쿡북 속성](attributes-recipes.md). 자세한 내용은 [속성 재정의](workingcookbook-attributes.md) 단원을 참조하십시오.

속성은 계층 구조로 구성되며, JSON 객체로 표현될 수 있습니다.

다음과 같이 Chef 노드 구문을 사용하여 이 데이터를 애플리케이션에 통합합니다.

```
[:deploy][:simplephpapp][:database][:username]
```

`deploy` 노드에는 앱의 데이터베이스, Git 리포지토리 등에 대한 정보를 포함하는 단일 앱 노드 `simplephpapp`이 있습니다. 예제는 데이터베이스 사용자 이름의 값을 나타냅니다. 이 값은 `root`로 확인됩니다.

## 데이터베이스 설정
<a name="gettingstarted-db-recipes-dbsetup"></a>

MySQL 계층의 내장 설정 레시피는 앱의 짧은 이름으로 명명된 데이터베이스를 자동으로 생성합니다. 그러므로 이 예제를 위해 simplephpapp이라는 데이터베이스가 이미 생성되어 있습니다. 하지만 앱이 데이터를 저장할 테이블을 생성하여 설정을 마쳐야 합니다. 테이블을 수동으로 생성할 수 있지만 더 좋은 방법은 작업을 처리하기 위해 사용자 지정 레시피를 구현하고 OpsWorks Stacks에서 실행하도록 하는 것입니다. 이 섹션에서는 어떻게 레시피 `dbsetup.rb`가 구현되는지 설명합니다. Stacks가 레시피를 실행하도록 OpsWorks 하는 절차는 나중에 설명합니다.

리포지토리의 레시피를 보려면 [db설정.rb](https://github.com/amazonwebservices/opsworks-example-cookbooks/blob/master/phpapp/recipes/dbsetup.rb)를 참조하세요. 다음 예제는 `dbsetup.rb` 코드를 보여줍니다.

`execute`는 지정된 명령을 실행하는 *Chef 리소스*입니다. 여기서는 테이블을 생성하는 MySQL 명령입니다. `not_if` 명령은 지정된 테이블이 이미 존재할 경우 명령이 실행되지 않게 합니다. Chef 리소스에 대한 자세한 정보는 [About Resources and Providers](https://docs.chef.io/resource.html)를 참조하세요.

레시피는 앞서 설명한 노드 구문을 사용하여 속성 값을 명령 문자열에 삽입합니다. 예를 들어 다음 레시피는 데이터베이스의 사용자 이름을 삽입합니다.

```
#{deploy[:database][:username]}
```

약간은 퍼즐 같은 이 코드를 풀어 보겠습니다.
+ 각 반복에서, `deploy`는 현재 앱 노드로 설정됩니다. 따라서 `[:deploy][:app_name]`으로 확인됩니다. 이 예제에서는 `[:deploy][:simplephpapp]`으로 확인됩니다.
+ 앞서 제시한 배포 속성 값을 사용하여 전체 노드가 `root`로 확인됩니다.
+ 노드를 \$1\$1 \$1로 묶어 문자열에 삽입합니다.

다른 노드도 대부분 비슷한 방식으로 확인됩니다. `#{node[:phpapp][:dbtable]}`은 예외입니다. 이 노드는 사용자 지정 쿡북의 속성 파일에 의해 정의되며 테이블 이름 `urler`로 확인됩니다. 따라서 MySQL 인스턴스에 실행되는 실제 명령은 다음과 같습니다.

```
"/usr/bin/mysql 
    -uroot
    -pvjud1hw5v8
    simplephpapp
    -e'CREATE TABLE urler(
       id INT UNSIGNED NOT NULL AUTO_INCREMENT,
       author VARCHAR(63) NOT NULL,
       message TEXT,
       PRIMARY KEY (id))'
"
```

이 명령은 배포 속성의 자격 증명 및 데이터베이스 이름을 사용하여 id, author 및 message 필드를 포함하는 테이블 `urler`을 생성합니다.

## 데이터베이스에 애플리케이션 연결
<a name="gettingstarted-db-recipes-appsetup"></a>

퍼즐의 두 번째 부분은 테이블에 액세스하기 위해 데이터베이스 암호 같은 연결 정보가 필요한 애플리케이션입니다. SimplePHPApp은 작업 파일이 `app.php` 하나뿐입니다. `index.php`가 수행하는 작업은 `app.php`를 로드하는 것 뿐입니다.

`app.php`에는 데이터베이스 연결을 처리하는 `db-connect.php`가 포함됩니다. 하지만 이 파일은 리포지토리에 없습니다. `db-connect.php`를 미리 생성할 수는 없습니다. 이 파일은 특정 인스턴스를 기반으로 데이터베이스를 정의하기 때문입니다. 그 대신, `appsetup.rb` 레시피가 배포 속성의 연결 데이터를 사용하여 `db-connect.php`를 생성합니다.

리포지토리의 레시피를 보려면 [app설정.rb](https://github.com/amazonwebservices/opsworks-example-cookbooks/blob/master/phpapp/recipes/appsetup.rb)를 참조하세요. 다음 예제는 `appsetup.rb` 코드를 보여줍니다.

`dbsetup.rb`처럼, `appsetup.rb`는 `deploy` 노드에 있는 앱을 반복합니다. 다시 말하지만 단순한 phappapp일 뿐입니다. 이 레시피는 `script` 리소스 및 `template` 리소스를 포함하는 코드 블록을 실행합니다.

이 `script` 리소스는 PHP 애플리케이션용 종속성 관리자인 [Composer](http://www.getcomposer.org)를 설치합니다. 그런 다음 Composer의 `install` 명령을 실행하여 샘플 애플리케이션의 종속 파일을 앱의 루트 디렉터리에 설치합니다.

`template` 리소스는 `db-connect.php`를 생성하여 `/srv/www/simplephpapp/current`에 저장합니다. 다음 사항에 유의하세요.
+ 이 레시피는 조건문을 사용하여 인스턴스의 운영 체제에 따라 달라지는 파일 소유자를 지정합니다.
+ `only_if` 명령은 Chef에게 지정된 디렉터리가 존재하는 경우에만 템플릿을 생성하도록 지시합니다.

`template` 리소스는 연결된 파일과 기본적으로 콘텐츠 및 구조가 동일한 템플릿에서 작동하지만 다양한 데이터 값을 위한 자리 표시자를 포함합니다. `source` 파라미터는 phpapp 쿡북의 `db-connect.php.erb` 디렉터리에 위치하는 템플릿 `templates/default`를 지정하며 다음을 포함합니다.

Chef가 템플릿을 처리할 때 `<%= =>` 자리 표시자를 템플릿 리소스 해당 변수의 값으로 바꿉니다. 이들 값은 배포 속성에서 가져온 것입니다. 생성된 파일은 다음과 같습니다.

# 3.3단계: MyStack에 사용자 지정 쿡북 추가
<a name="gettingstarted-db-cookbooks"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

사용자 지정 쿡북은 리포지토리에 앱과 거의 마찬가지로 저장합니다. 각 스택은 일련의 사용자 지정 쿡북으로 구성된 리포지토리를 가질 수 있습니다. 그런 다음 Stacks에 스택의 인스턴스에 사용자 지정 OpsWorks 쿡북을 설치하도록 지시합니다.

1. 탐색 창에서 [**스택**]을 클릭하여 현재 스택에 대한 페이지를 표시합니다.

1. [**스택 설정**]을 클릭하고 [**편집**]을 클릭합니다.

1. 스택 구성을 다음과 같이 수정합니다.
   + **사용자 지정 Chef 쿡북 사용** – **예**
   + **Repository type** - **Git**
   + **리포지토리 URL** – **git://github.com/amazonwebservices/opsworks-example-cookbooks.git**

1. [**저장**]을 클릭하여 스택 구성을 업데이트합니다.  
![\[Configuration options for custom Chef cookbooks with Git repository settings.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gsb6.png)

OpsWorks 그런 다음 Stacks는 스택의 모든 인스턴스에 쿡북 리포지토리의 콘텐츠를 설치합니다. 새 인스턴스를 생성하면 OpsWorks Stacks가 쿡북 리포지토리를 자동으로 설치합니다.

**참고**  
쿡북을 업데이트하거나 리포지토리에 새 쿡북을 추가해야 하는 경우 스택 설정을 터치하지 않고도 쿡북을 추가할 수 있습니다. OpsWorks Stacks는 업데이트된 쿡북을 모든 새 인스턴스에 자동으로 설치합니다. 그러나 OpsWorks Stacks는 스택의 온라인 인스턴스에 업데이트된 쿡북을 자동으로 설치하지 않습니다. 스택 명령을 실행하여 OpsWorks 쿡북을 업데이트하도록 `Update Cookbooks` Stacks에 명시적으로 지시해야 합니다. 자세한 내용은 [스택 명령 실행](workingstacks-commands.md) 단원을 참조하십시오.

# 3.4단계: 레시피 실행
<a name="gettingstarted-db-lifecycle"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

사용자 지정 쿡북이 준비되었으면 적절한 인스턴스에서 레시피를 실행해야 합니다. 레시피를 [수동으로 실행](workingcookbook-manual.md)할 수 있습니다. 하지만 일반적으로 레시피는 인스턴스의 수명 주기에서 인스턴스 부팅 후 또는 앱 배포 시와 같은 예측 가능한 시점에 실행해야 합니다. 이 섹션에서는 훨씬 더 간단한 접근 방식을 설명합니다. OpsWorks Stacks가 적절한 시간에 자동으로 실행하도록 합니다.

OpsWorks Stacks는 실행 중인 레시피를 단순화하는 수명 [주기 이벤트](workingcookbook-events.md) 세트를 지원합니다. 예를 들어 설정 이벤트는 인스턴스 부팅이 완료된 후 발생하고, Deploy 이벤트는 앱을 배포할 때 발생합니다. 각 계층에는 각 수명 주기 이벤트에 연결된 내장 레시피 세트가 있습니다. 인스턴스에서 수명 주기 이벤트가 발생하면 에이전트가 인스턴스의 각 계층에서 연결된 레시피를 실행합니다. Stacks가 사용자 지정 레시피를 자동으로 실행하도록 OpsWorks 하려면 해당 계층의 적절한 수명 주기 이벤트에 추가하면 기본 제공 레시피가 완료된 후 에이전트가 레시피를 실행합니다.

이 예제에서는 두 개의 레시피를 실행해야 합니다. 즉 MySQL 인스턴스에서 `dbsetup.rb`, PHP 앱 서버 인스턴스에서 `appsetup.rb`를 실행합니다.

**참고**  
콘솔에서 *cookbook\$1name*::*recipe\$1name* 형식을 사용하여 레시피를 지정합니다. 여기서 *recipe\$1name*에는 .rb 확장자가 포함되지 않습니다. 예를 들어 `dbsetup.rb`를 **phpapp::dbsetup**으로 참조합니다.

**수명 주기 이벤트에 사용자 지정 레시피를 할당하려면**

1. **계층** 페이지에서 MySQL에 대해 **레시피**를 클릭하고 **편집**을 클릭합니다.

1.  **사용자 지정 Chef 레시피** 섹션에서 **배포**에 [**phpapp::dbsetup**](gettingstarted-db-recipes.md#gettingstarted-db-recipes-dbsetup)를 입력합니다.  
![\[Custom Chef recipes section with Repository URL and three configuration steps.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gsb6a.png)

1. [**\$1**] 아이콘을 클릭하여 이벤트에 레시피를 할당하고 [**저장**]을 클릭하여 새 계층 구성을 저장합니다.

1. **계층** 페이지로 돌아가 해당 절차를 반복하여 **phpapp::appsetup**을 **PHP 앱 서버** 계층의 **배포** 이벤트에 할당합니다.

# 3.5단계: SimplePHPApp 버전 2 배포
<a name="gettingstarted-db-deploy"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

마지막 단계는 새 버전의 SimplePHPApp을 배포하는 것입니다.

**SimplePHPApp을 배포하려면**

1. **앱** 페이지의 **SimplePHPApp** 앱의 **작업**에서 **배포**를 클릭합니다.  
![\[Apps page showing SimplePHPApp with deploy, edit, and delete options in the Actions column.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gsb6aa.png)

1. 기본값을 수락하고 [**배포**]를 클릭합니다.  
![\[Deploy App interface with settings for SimplePHPApp and instance selection options.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gs17a.png)

   **앱 배포** 페이지에서 **배포**를 클릭하면 배포 수명 주기 이벤트가 트리거되어 에이전트에게 배포 레시피를 실행하도록 알립니다. 기본적으로 스택의 모든 인스턴스에서 이 이벤트를 트리거합니다. 내장 Deploy 레시피는 앱 유형에 적절한 인스턴스(이 경우에는 PHP 앱 서버 인스턴스)에만 앱을 배포합니다. 그러나 일반적으로 다른 인스턴스에서 Deploy 이벤트를 트리거하여 앱 배포에 응답하도록 하는 데에도 유용합니다. 이 경우에는 MySQL 인스턴스에서도 Deploy를 트리거하여 데이터베이스를 설정하려고 할 수도 있습니다.

   다음 사항에 유의하세요.
   + PHP 앱 서버 인스턴스의 에이전트는 계층의 내장 레시피를 실행하고 뒤이어 앱의 데이터베이스 연결을 구성하는 `appsetup.rb`를 실행합니다.
   + MySQL 인스턴스의 에이전트는 어떠한 것도 설치하지 않지만 `dbsetup.rb`를 실행하여 urler 테이블을 생성합니다.

   배포가 완료되면 **배포** 페이지의 **상태**가 **성공**으로 변경됩니다.

# 3.6단계: SimplePHPApp 실행
<a name="gettingstarted-db-run"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

배포 상태가 [**성공**]으로 전환되면 다음과 같이 새 SimplePHPApp 버전을 실행할 수 있습니다.

**SimplePHPApp을 실행하려면**

1. [**인스턴스**] 페이지의 [**php-app1**] 행에서 퍼블릭 IP 주소를 클릭합니다.

   브라우저에 다음 페이지가 표시되어야 합니다.  
![\[Text input field labeled "Your Thoughts" with a "Share Your Thought" button above.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gsb7.png)

1. **생각 공유하기**를 클릭하고 **생각**에는 **Hello world\$1**을 입력하고 **이름**에는 이름을 입력하세요. 그런 다음 [**의견 제출**]을 클릭하여 데이터베이스에 메시지를 추가합니다.  
![\[Form with success message, text input fields for thought and name, and submit buttons.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gsb8.png)

1. [**뒤로 이동**]을 클릭하여 데이터베이스의 메시지를 모두 확인합니다.

# 4단계: MyStack 확장
<a name="gettingstarted-scale"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

현재 MyStack은 애플리케이션 서버가 하나뿐입니다. 프로덕션 스택에서는 수신 트래픽을 처리하기 위한 애플리케이션 서버 여러 개와 수신 트래픽을 애플리케이션 서버 간에 균일하게 분산시킬 로드 밸런서가 필요할 수 있습니다. 아키텍처는 다음과 같습니다.

![\[AWS OpsWorks stack architecture with load balancer, application servers, and RDS instance.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/php_walkthrough_arch_4.png)


OpsWorks 스택을 사용하면 스택을 쉽게 확장할 수 있습니다. 이 섹션에서는 MyStack에 두 번째 24/7 PHP 앱 서버 인스턴스를 추가하고 두 인스턴스 모두 Elastic Load Balancing 로드 밸런서 뒤에 배치하여 스택을 확장하는 기본적인 방법을 설명합니다. 절차를 쉽게 확장하여 임의의 수의 24/7 인스턴스를 추가하거나 시간 기반 또는 로드 기반 인스턴스를 사용하여 OpsWorks Stacks가 스택을 자동으로 확장하도록 할 수 있습니다. 자세한 내용은 [시간 기반 또는 로드 기반 인스턴스를 사용하여 로드 관리](workinginstances-autoscaling.md) 단원을 참조하십시오.

# 4.1단계: 로드 밸런서 추가
<a name="gettingstarted-scale-elb"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

Elastic Load Balancing은 수신 애플리케이션 트래픽을 여러 Amazon EC2 인스턴스에 자동으로 분산하는 AWS 서비스입니다. 트래픽을 분산하는 것에 더하여 Elastic Load Balancing은 다음 기능을 수행합니다.
+ 비정상 Amazon EC2 인스턴스를 탐지합니다.

  또한 비정상 인스턴스가 복원될 때까지 트래픽을 나머지 정상 인스턴스로 다시 라우팅합니다.
+ 수신 트래픽에 맞춰 요청 처리 용량을 자동으로 조정합니다.

**참고**  
로드 밸런서는 두 가지 목적을 충족할 수 있습니다. 명백한 목적은 애플리케이션 서버 간에 로드를 평활화하는 것입니다. 또한 대부분의 사이트에서는 애플리케이션 서버 및 데이터베이스를 직접 사용자 액세스로부터 격리하기를 선호합니다. OpsWorks Stacks를 사용하면 다음과 같이 퍼블릭 및 프라이빗 서브넷이 있는 Virtual Private Cloud(VPC)에서 스택을 실행하여이 작업을 수행할 수 있습니다.  
애플리케이션 서버 및 데이터베이스를 프라이빗 서브넷에 배치합니다. 그러면 VPC 내 다른 인스턴스는 이들에 액세스할 수 있지만 사용자는 액세스할 수 없습니다.
사용자 트래픽을 퍼블릭 서브넷의 로드 밸런서로 보냅니다. 그러면 로드 밸런서가 프라이빗 서브넷의 애플리케이션 서버로 트래픽을 전달하고 응답을 사용자에게 반환합니다.
자세한 내용은 [VPC에서 스택 실행](workingstacks-vpc.md) 단원을 참조하십시오. 이 연습의 예제를 VPC에서 실행하도록 확장하는 CloudFormation 템플릿의 경우 [`OpsWorksVPCtemplates.zip` 파일을](samples/OpsWorksVPCtemplates.zip) 다운로드합니다.

Elastic Load Balancing은 종종 계층으로 불리지만 다른 내장 계층과는 약간 다르게 작동합니다. 계층을 생성하고 여기에 인스턴스를 추가하는 대신 Amazon EC2 콘솔을 사용하여 Elastic Load Balancing 로드 밸런서를 생성한 다음 기존 계층 중 하나, 일반적으로 애플리케이션 서버 계층에 연결합니다. 그런 다음 OpsWorks Stacks는 계층의 기존 인스턴스를 서비스에 등록하고 새 인스턴스를 자동으로 추가합니다. 다음 절차에서는 로드 밸런서를 MyStack의 PHP 앱 서버 계층에 추가하는 방법을 설명합니다.

**참고**  
OpsWorks Stacks는 Application Load Balancer를 지원하지 않습니다. Classic Load Balancer는 OpsWorks Stacks에서만 사용할 수 있습니다.

**PHP 앱 서버 계층에 로드 밸런서를 연결하려면**

1. Amazon EC2 콘솔을 사용하여 MyStack의 새 로드 밸런서를 생성합니다. 사용자 계정에서 EC2 Classic을 지원하는지 여부에 따라 세부 정보가 달라집니다. 자세한 내용은 [Elastic Load Balancing 시작하기](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/load-balancer-getting-started.html)를 참조하세요. [**로드 밸런서 생성**] 마법사를 실행하면 다음과 같이 로드 밸런서를 구성합니다.  
**로드 밸런서 정의**  
Stacks 콘솔에서 쉽게 찾을 수 있도록 로드 OpsWorks 밸런서에 PHP-LB와 같이 쉽게 알아볼 수 있는 이름을 할당합니다. [**계속**]을 선택하여 나머지 설정에 대해서는 기본값을 수락합니다.  
[**LB 내부 생성**] 메뉴에서 서브넷이 하나 이상 있는 VPC를 선택한 경우 로드 밸런서를 통해 트래픽을 라우트하려는 각 가용 영역의 서브넷을 선택해야 합니다.  
**보안 그룹 할당**  
사용자 계정에서 기본 VPC를 지원하는 경우 마법사에 이 페이지가 표시되어 로드 밸런서의 보안 그룹을 확인합니다. EC2 Classic의 경우에는 이 페이지가 표시되지 않습니다.  
이 연습에서는 [**기본 VPC 보안 그룹**]을 선택합니다.  
**보안 설정을 구성합니다**  
**로드 밸런서 정의 페이지**에서 **로드 밸런서 프로토콜**로 **HTTPS**를 선택한 경우 이 페이지에서 인증서, 암호 및 SSL 프로토콜 설정을 구성하세요. 이 연습에서는 기본값을 수락하고 [**상태 검사 구성**]을 선택합니다.  
**상태 확인 구성**  
ping 경로를 **/**로 설정하고 나머지 설정에 대해 기본값을 수락합니다.  
**EC2 인스턴스 추가**  
**계속**을 선택합니다. OpsWorks 스택은 로드 밸런서에 인스턴스를 자동으로 등록합니다.  
**태그 추가**  
찾은 도움말에 태그를 추가합니다. 각 태그는 키-값 페어입니다. 예를 들어 이 연습에서는 **Description**을 키로 **Test LB**를 값으로 지정할 수 있습니다.  
**검토**  
선택 항목을 검토하고 [**만들기**]를 선택한 다음 [**닫기**]를 선택합니다. 그러면 로드 밸런서가 시작됩니다.

1. 계정이 기본 VPC를 지원하는 경우 로드 밸런서를 시작한 후 로드 밸런서의 보안 그룹에 적절한 수신 규칙이 있는지 확인해야 합니다. 기본 규칙은 어떠한 인바운드 트래픽도 허용하지 않습니다.

   1. Amazon EC2 탐색 창에서 **보안 그룹**을 선택합니다.

   1. [**기본 VPC 보안 그룹**]을 선택합니다.

   1. **인바운드** 탭에서 **편집**을 선택합니다.

   1. 이 연습에서는 **Source**를 **Anywhere**로 설정합니다. 그러면 로드 밸런서에 모든 IP 주소에서의 수신 트래픽을 허용하도록 지시합니다.

1.  OpsWorks Stacks 콘솔로 돌아갑니다. [**계층**] 페이지에서 계층의 [**네트워크**] 링크를 클릭한 다음 [**편집**]을 클릭합니다.

1. [**Elastic Load Balancing**]에서 1단계에서 생성한 로드 밸런서를 선택한 다음 [**저장**]을 선택합니다.  
![\[Dropdown menu for Elastic Load Balancer selection with options "Available ELBs" and "None".\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/elb_select.png)

   로드 밸런서를 계층에 연결한 후 OpsWorks Stacks는 계층의 현재 인스턴스를 자동으로 등록하고 온라인 상태가 되면 새 인스턴스를 추가합니다.

1. [**계층**] 페이지에서 로드 밸런서의 이름을 클릭하여 로드 밸런서의 세부정보 페이지를 엽니다. 등록이 완료되고 인스턴스가 상태 확인을 통과하면 OpsWorks Stacks는 로드 밸런서 페이지의 인스턴스 옆에 녹색 확인 표시를 표시합니다.  
![\[Elastic Load Balancing details page showing one EC2 instance in US-west-2a with InService status.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/elb_properties3.png)

이제 로드 밸런서로 요청을 전송하여 SimplePHPApp을 실행할 수 있습니다.

**로드 밸런서를 통해 SimplePHPApp을 실행하려면**

1. 아직 열지 않은 경우 로드 밸런서의 세부 정보 페이지를 엽니다.

1. 속성 페이지에서 인스턴스의 상태 확인 상태를 확인하고 로드 밸런서의 DNS 이름을 클릭하여 SimplePHPApp을 실행합니다. 로드 밸런서는 PHP 앱 서버 인스턴스에 요청을 전달하고 응답을 반환합니다. 이 응답은 PHP 앱 서버 인스턴스의 퍼블릭 IP 주소를 클릭했을 때 얻는 응답과 정확히 동일해야 합니다.  
![\[Elastic Load Balancing settings showing DNS name for PHP-LB in US West region.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/elb_properties2.png)

**참고**  
OpsWorks 또한 Stacks는 HAProxy 로드 밸런서를 지원하므로 일부 애플리케이션에는 이점이 있을 수 있습니다. 자세한 내용은 [HAProxy OpsWorks 스택 계층](layers-haproxy.md) 단원을 참조하십시오.

# 4.2단계: PHP 앱 서버 인스턴스 추가
<a name="gettingstarted-scale-instances"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

이재 로드 밸런서가 설치되었으므로 PHP 앱 서버 계층에 더 많은 인스턴스를 추가하여 스택을 확장할 수 있습니다. 사용자 관점에서 작업은 심리스합니다. 새 PHP 앱 서버 인스턴스가 온라인 상태가 될 때마다 OpsWorks Stacks는 자동으로 이를 로드 밸런서에 등록하고 SimplePHPApp을 배포하므로 서버가 수신 트래픽 처리를 즉시 시작할 수 있습니다. 간략한 설명을 위해 이 항목에PHP 앱 서버서는 인스턴스 하나를 추가하는 방법을 설명하지만, 동일한 접근 방식을 사용하여 원하는 만큼 인스턴스를 추가할 수 있습니다.

**PHP 앱 서버 계층에 다른 인스턴스를 추가하려면**

1. 인스턴스 페이지의 **PHP 앱 서버**에서 **\$1 인스턴스**를 클릭합니다.

1. 기본 설정을 수락하고 [**인스턴스 추가**]를 클릭합니다.

1. [**시작**]을 클릭하여 인스턴스를 시작합니다.

# 4.3단계: MyStack 모니터링
<a name="gettingstarted-scale-monitor"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

OpsWorks Stacks는 Amazon CloudWatch를 사용하여 스택에 대한 지표를 제공하고 사용자의 편의를 위해 **모니터링** 페이지에 이를 요약합니다. 전체 스택, 지정된 계층 또는 지정된 인스턴스에 대한 측정치를 볼 수 있습니다.

**MyStack을 모니터링하려면**

1. 탐색 창에서 [**모니터링**]을 클릭합니다. 그러면 각 계층에 대한 평균 측정치와 함께 일련의 그래프가 표시됩니다. [**CPU 시스템**], [**사용 메모리**] 및 [**로드**]에 대한 메뉴를 사용해 여러 가지 관련 측정치를 표시할 수 있습니다.  
![\[Monitoring dashboard showing CPU, memory, load, and process metrics over time for system layers.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/monitor_stack.png)

1. [**PHP 앱 서버**]를 클릭하면 계층의 각 인스턴스에 대한 측정치가 표시됩니다.  
![\[Dashboard showing CPU, memory, load, and processes metrics for Layer PHP App Server over time.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/monitor_layer.png)

1. [**php-app1**]를 클릭하면 해당 인스턴스에 대한 측정치가 표시됩니다. 슬라이드를 이동하면 특정 시점에 대한 측정치를 볼 수 있습니다.  
![\[Dashboard showing CPU, memory, load, and process metrics for a PHP application instance.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/monitor_instance.png)

**참고**  
OpsWorks 또한 Stacks는 Ganglia 모니터링 서버를 지원하므로 일부 애플리케이션에는 이점이 있을 수 있습니다. 자세한 내용은 [Ganglia 계층](workinglayers-ganglia.md) 단원을 참조하십시오.

# 5단계: MyStack 삭제
<a name="gettingstarted-delete"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

Amazon EC2 인스턴스와 같은 AWS 리소스를 사용하기 시작하는 순간부터 사용량에 따라 요금이 부과됩니다. 잠시 동안 사용하지 않을 경우 원치 않는 요금이 발생하지 않도록 인스턴스를 중지해야 합니다. 스택이 더 이상 필요하지 않으면 삭제할 수 있습니다.

**MyStack을 삭제하려면**

1. 

**모든 인스턴스 중지**

   [**인스턴스**] 페이지에서 [**모든 인스턴스 중지**]를 클릭하고, 작업을 확인하라는 메시지가 표시되면 [**중지**]를 클릭합니다.  
![\[Confirmation dialog asking if user wants to stop the stack, warning about data loss.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gse1.png)

   **중지**를 클릭하면 OpsWorks Stacks는 연결된 Amazon EC2 인스턴스를 종료하지만 탄력적 IP 주소 또는 Amazon EBS 볼륨과 같은 연결된 리소스는 종료하지 않습니다.

1. 

**모든 인스턴스 삭제**

   인스턴스를 종료하면 연결된 Amazon EC2 인스턴스만 종료됩니다. 인스턴스가 중지됨 상태가 된 뒤에는 각각의 인스턴스를 삭제해야 합니다. **PHP 앱 서버** 계층의 php-app1 인스턴스의 **작업** 열에서 **삭제**를 클릭합니다.  
![\[PHP App Server table showing two instances with status, size, and actions including delete option.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gse2.png)

   OpsWorks 그러면 Stacks가 삭제 확인을 요청하고 종속 리소스를 표시합니다. 이러한 리소스 중 일부 또는 전부를 유지하도록 설정할 수 있습니다. 이 예에는 종속 리소스가 없으므로 [**삭제**]를 클릭하기만 하면 됩니다.

   php-app2 및 [**MySQL**] 인스턴스인 db-master1에 대해 이 프로세스를 반복합니다. db-master1에는 연결된 Amazon Elastic Block Store 볼륨이 기본적으로 선택되어 있습니다. 선택된 상태로 두면 이 볼륨이 인스턴스와 함께 삭제됩니다.

1. 

**계층 삭제**

   [**계층**] 페이지에서 [**삭제**]를 클릭한 다음 [**삭제**]를 클릭하여 확인합니다.  
![\[PHP App Server layer with options for General Settings, Recipes, Network, EBS Volumes, and Security.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gse4.png)

   **MySQL** 계층에 대해 이 프로세스를 반복합니다.

1. 

**앱 삭제**

   **앱** 페이지에서 **SimplePHPapp** 앱의 **작업** 열에서 **삭제**를 클릭한 다음 **삭제**를 클릭하여 확인합니다.  
![\[Confirmation dialog for deleting SimplePHPApp, warning of configuration loss.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gse5.png)

1. 

**MyStack 삭제**

   [**스택**] 페이지에서 [**스택 삭제**]를 클릭한 다음 [**삭제**]를 클릭하여 확인합니다.  
![\[Confirmation dialog for deleting MyStack, warning of settings loss with Cancel and Delete options.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/gse6.png)

이 연습을 마칩니다.