* 글 작성에 앞서, 이 글의 목적은 숙달자의 정보전달이 아니라 초심자의 기록 남기기에 가깝다. 이해가 부족한 상태에서 경험의 과정을 적으니, 미숙한 점이 많이 있을 것이므로 양해 부탁드린다. 또, 미숙함에 대한 지적은 대환영이지만 기본적으로 이 포스팅은 대부분 일방적인 기록 남기기에 가까우니 피드백이 적을 수 있다. 다만 필자뿐 아니라 같은 글을 보는 다른 독자들을 위해 또 하나의 필자가 되어 부연설명을 해 주신다면 감사할 따름이다.


작업 환경: macOS Sierra

0. Python 설치하기

터미널에서 Elastic Beanstalk 서비스를 cui 형태로 사용할 수 있게 하는 EB cli 설치를 위해 Python을 먼저 설치한다. 아마도 이 클라이언트가 Python을 통해 실행되는듯 하다.

$ brew install python

$ python -V

$ sudo pip install --upgrade pip

$ pip -V


1. EB cli 설치하기

AWS의 Elastic Beanstalk의 애플리케이션을 생성하기위해 EB cli를 설치하자.

$ sudo pip install awsebcli


2. git 생성하기

배포하길 원하는 앱에 대한 git을 생성하자.

지난 Ruby on Rails 설치때 만든 myFirstRailsApplication을 배포하겠다.

$ cd myFirstRailsApplication

$ git init

$ git add .

$ git commit -m "default rails project"


3. EB 생성하기

$ eb init

이 명령어를 실행하면 몇가지 입력을 받는다.

첫번째로는 EC2 인스턴스가 생성될 서버의 위치를 결정한다. 기본값으로 US West (Oregon)을 설정되어있다. 한국 서버를 이용하길 원하므로 10번을 선택해주자.

다음으로는 access-id와 secret-key를 입력받는데, AWS 계정 설정에서 IAM을 생성하여 얻을 수 있다.


그 외에 application name과 프로젝트 타입, 버전, ssh 설정 유무를 묻는다. 적절하게 설정하자.


4. 배포하기

$ eb create rails-beanstalk

위 명령어를 실행하면 자동으로 AWS의 Elastic Beanstalk에 기존에 설정한 이름으로 application이 생성되며 rails-beanstalk란 이름으로 environment가 생성된다. 이와 함께 자동으로 ec2 인스턴스를 생성해준다.


생성이 완료되면 다음 명령을 통해 애플리케이션에 접근해보자.

$ eb open


아래 명령어를 통해 오류의 원인을 확인하자.

$ eb logs

production environment 환경을 위한 secret_key_base에 대한 설정이 필요함을 로그로 확인 할 수 있다.

$ eb setenv SECRET_KEY_BASE=임의의 키 입력

$ eb open


그리고 다시 웹서버에 접속하면 웹 컨테이너는 정확하게 작동하나, rails 애플리케이션을 처음 실행할때 만나는 페이지가 아니라 페이지 없음을 띄워준다.

현재 애플리케이션에 생성된 컨트롤러가 존재하지 않으므로 어떠한 페이지도 띄워주지 않는 것이다.

컨트롤러를 생성하여 접속해보자.

$ rails generate controller WelcomPage welcome

$ vi app/views/welcome_page/welcome.html.erb

<h1>WelcomePage#welcome</h1>

<p>Find me in app/views/welcome_page/welcome.html.erb</p>

<p>This is my first Rails application on Elastic Beanstalk!</p>

$ config/routes.rb

Rails.application.routes.draw do

  get "welcome_page/welcome"

  root "welcome_page#welcome"


end

$ git add .

$ git commit -m "welcome page controller, view and route"

$ eb deploy

$ eb open


이제 root 페이지가 설정되어 원하는 화면이 표시됨을 확인 할 수 있다.



* 사용하고 난 후에 ec2 인스턴스를 정지시키자. 한 달 750시간을 초과하면 1년 무료의 기간이라 하더라도 요금이 부과된다. 특히 여러개의 인스턴스를 생성하는 경우 부과된다. 필자는 그것도 모르고 한 달동안 여러개의 인스턴스를 켜 두었다가 15000원 가량의 요금이 부과되었다. 다행이 환불 받을수 있었지만 이것 때문에 그날 밤에 잠을 못이뤘다.


참고자료

1. http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/create_deploy_Ruby_rails.html

+ Recent posts