* 글 작성에 앞서, 이 글의 목적은 숙달자의 정보전달이 아니라 초심자의 기록 남기기에 가깝다. 이해가 부족한 상태에서 경험의 과정을 적으니, 미숙한 점이 많이 있을 것이므로 양해 부탁드린다. 또, 미숙함에 대한 지적은 대환영이지만 기본적으로 이 포스팅은 대부분 일방적인 기록 남기기에 가까우니 피드백이 적을 수 있다. 다만 필자뿐 아니라 같은 글을 보는 다른 독자들을 위해 또 하나의 필자가 되어 부연설명을 해 주신다면 감사할 따름이다.
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
'개발 > 기타' 카테고리의 다른 글
Docker를 이용하여 Ruby on Rails 앱 배포하기 (0) | 2017.01.11 |
---|---|
Amazon RDS에 MySQL 인스턴스 생성 후 Rails 앱과 연결하기 (0) | 2016.12.03 |