아마존 웹 서비스를 다루는 기술 23장 - 3. Git으로 Elastic Beanstalk Node.js 애플리케이션 배포하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

간편하게 사용하는 애플리케이션 플랫폼 서비스 Elastic Beanstalk

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

Git으로 Elastic Beanstalk Node.js 애플리케이션 배포하기

분산형 버전 관리 시스템인 Git으로 Elastic Beanstalk Node.js 애플리케이션을 Elastic Beanstalk 환경에 배포해보겠습니다.

그림 23-25 Git을 이용한 Elastic Beanstalk 작업 흐름

Git을 설치하지 않았다면 Git(http://git-scm.com)을 설치합니다. Windows와 Mac OS X에서는 아래 주소에서 설치 파일을 다운로드하여 설치하면 됩니다. 설치 방법은 특별한 것이 없으므로 따로 설명하지 않겠습니다.

Amazon Linux, CentOS
[pyrasis@centos ~]$ sudo yum install git
Ubuntu Linux
pyrasis@ubuntu:~$ sudo apt-get install git

이제 Elastic Beanstalk 명령행 도구가 필요합니다. 구글에서 AWS Elastic Beanstalk Command Line Tool을 검색하거나 http://aws.amazon.com/code/6752709412171743에 접속하여 Download 버튼을 클릭하면 AWS-ElasticBeanstalk-CLI-2.6.3.zip 다운로드할 수 있습니다(이 책에서 설명한 버전보다 높을 수 있습니다).

AWS-ElasticBeanstalk-CLI-2.6.3.zip 파일을 사용자 홈 디렉터리(예: /home/pyrasis)에 받고 압축을 해제합니다(Windows와 Mac OS X에서는 탐색기와 Finder에서 zip 파일 압축을 해제합니다).

Linux
pyrasis@ubuntu:~$ wget https://s3.amazonaws.com/elasticbeanstalk/cli/AWS-ElasticBeanstalk-CLI-2.6.3.zip
pyrasis@ubuntu:~$ unzip AWS-ElasticBeanstalk-CLI-2.6.3.zip

unzip 설치
unzip 명령이 없다면 패키지를 이용하여 설치합니다.

CentOS
[pyrasis@centos ~]$ sudo yum install unzip
Ubuntu Linux
pyrasis@ubuntu:~$ sudo apt-get install unzip

Elastic Beanstalk 명령행 도구를 실행하려면 Python이 필요합니다. Windows에는 Python이 기본적으로 설치되어 있지 않으므로 http://www.python.org/downloads에서 Python 2.7.x 버전을 받고 설치합니다. 설치 방법은 특별한 것이 없으므로 따로 설명하지 않겠습니다. Linux와 Mac OS X에는 Python이 기본적으로 설치되어 있습니다.

Linux에서 Elastic Beanstalk 명령행 도구와 Python 버전
Elastic Beanstalk 명령행 도구를 사용하려면 Python 2.7 버전 이상 필요합니다. 일부 CentOS와 Amazon Linux는 Python 2.6 버전이 설치되어 있습니다. Elastic Beanstalk 명령행 도구는 2.6 버전에서는 사용할 수 없으므로 2.7 버전을 설치합니다(이 책에서는 2.7 버전을 기준으로 설명하겠습니다. 3.0 버전 이상을 사용해도 됩니다).

[pyrasis@centos ~]$ wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
[pyrasis@centos ~]$ tar vxzf Python-2.7.6.tgz
[pyrasis@centos ~]$ cd Python-2.7.6
[pyrasis@centos Python-2.7.6]$ ./configure
[pyrasis@centos Python-2.7.6]$ sudo make; sudo make install

이제 Windows에서는 Git Bash를 실행합니다(Git Bash에서는 Unix/Linux 방식의 명령을 실행할 수 있으므로 지금부터 나오는 명령은 Mac OS X, Linux, Windows에서 모두 동일합니다). Mac OS X는 터미널을 실행하고, Linux에서는 터미널에서 그대로 진행합니다.

그림 23-26 Windows에서 Git Bash 실행

Elastic Beanstalk 명령행 도구를 실행하려면 boto(https://github.com/boto/boto)가 필요합니다. 다음과 같이 입력하여 boto를 설치합니다.

  • Windows Git Bash에서는 sudo를 제외하고 python setup.py install만 입력합니다.
  • CentOS, Amazon Linux에서 Python 2.7 소스를 컴파일하여 설치했다면 sudo python2.7 setup.py install을 입력합니다.
pyrasis@ubuntu:~$ git clone https://github.com/boto/boto.git
pyrasis@ubuntu:~$ cd boto
pyrasis@ubuntu:~/boto$ sudo python setup.py install
pyrasis@ubuntu:~/boto$ cd ..

애플리케이션 디렉터리를 생성하고, Git 저장소를 초기화합니다.

pyrasis@ubuntu:~$ mkdir exampleapp
pyrasis@ubuntu:~$ cd exampleapp
pyrasis@ubuntu:~/exampleapp$ git init

방금 생성한 Git 저장소에 aws.push 명령을 설치합니다. AWSDevTools-RepositorySetup.sh는 Windows의 Git Bash에서 그대로 설치할 수 있습니다.

Linux
pyrasis@ubuntu:~/exampleapp$ ../AWS-ElasticBeanstalk-CLI-2.6.2/AWSDevTools/Linux/AWSDevTools-RepositorySetup.sh

Git에 AWS 액세스 키와 시크릿 키를 설정합니다. 액세스 키와 시크릿 키가 없다면 '9장 API와 툴 사용을 위한 액세스 키 생성하기'를 참조하기 바랍니다.

  • AWS Access Key: 액세스 키를 입력합니다.
  • AWS Secret Key: 시크릿 키를 입력합니다.
  • AWS Region: Tokyo 리전인 ap-northeast-1을 입력합니다. 리전 약칭 목록은 '2.1 리전, 지역'을 참조하기 바랍니다.
  • AWS Elastic Beanstalk Application: Elastic Beanstalk 애플리케이션 이름을 입력합니다. 앞에서 만든 exampleapp를 입력합니다.
  • AWS Elastic Beanstalk Environment: Elastic Beanstalk 환경 이름을 입력합니다. 앞에서 만든 exampleapp-env를 입력합니다.
pyrasis@ubuntu:~/exampleapp$ git aws.config
 AWS Access Key: AKIAJMVSZ7VUHUCJJFNA
 AWS Secret Key: Sg1k7MeAZKKJbrtMKEdmF6wfoROqUA4kT+Im9OED
 AWS Region [default to us-east-1]: ap-northeast-1
 AWS Elastic Beanstalk Application: exampleapp
 AWS Elastic Beanstalk Environment: exampleapp-env

이제 간단한 웹 페이지를 작성할 차례입니다. 메모장이나 기타 텍스트 편집기를 열고 아래와 같이 작성한 뒤 app.js로 저장합니다.

app.js
var express = require('express')
  , http = require('http')
  , app = express();

app.get(['/', '/index.html'], function (req, res){
    res.send('Hello Elastic Beanstalk - Git');
});

http.createServer(app).listen(process.env.PORT || 3000);

Node.js npm 패키지 사용을 위해 아래와 같이 작성한 뒤 package.json로 저장합니다.

package.json
{
  "name": "hello",
  "description": "Hello Elastic Beanstalk",
  "version": "0.0.1",
  "dependencies": {
    "express": "4.4.x"
  }
}

Git 저장소에 app.js, package.json 파일을 커밋합니다.

pyrasis@ubuntu:~/exampleapp$ git add app.js
pyrasis@ubuntu:~/exampleapp$ git add package.json
pyrasis@ubuntu:~/exampleapp$ git commit -m "Hello Elastic Beanstalk"

이제 Elastic Beanstalk에 애플리케이션의 소스를 aws.push 명령으로 올립니다.

pyrasis@ubuntu:~/exampleapp$ git aws.push

Elastic Beanstalk 환경 페이지로 이동합니다. 잠시 기다리면 Health가 Updating에서 Green으로 바뀌고, Elastic Beanstalk 애플리케이션 배포가 완료됩니다. 그리고 Running Version에는 git-<리비전>으로 표시됩니다. 이제 위쪽 <환경 이름>.elasticbeanstalk.com 링크를 클릭합니다.

그림 23-27 Git으로 Elastic Beanstalk 애플리케이션 배포 완료

웹 브라우저에서 Elastic Beanstalk URL에 접속하면 app.js의 내용이 표시됩니다.

그림 23-28 Elastic Beanstalk 애플리케이션에 접속

이처럼 Git으로 Elastic Beanstalk 애플리케이션을 배포할 수 있습니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.