페이지

2014년 12월 19일 금요일

Heroku에 Ruby on Rails App 배포하기

이번 포스팅에서는 레일즈 앱을 Heroku에 배포하는 과정을 정리해보겠습니다.

https://www.heroku.com/

앞서 필요한것들

  • Heroku 계정
  • Ruby 설치
  • Bundler 설치 - gem install bundler

헤로쿠 툴벨트 다운로드 및 설치

사이트에서 운영체제에 맞는 헤로쿠 툴벨트를 다운로드하고 설치합니다.
Download Heroku Toolbelt for Mac OS X

터미널 혹은 커맨드창에서
$heroku --version
입력해서 버전이 출력되면 제대로 설치된 것입니다.

헤로쿠 로그인

$heroku login
이메일과 암호를 입력하여 로그인을 합니다.

Git 등록 및 Heroku 생성

헤로쿠로 배포하기위한 앱 디렉토리로 이동합니다.
앱은 git에 등록되어 있어야 합니다.
되어있지 않다면 아래와 같은 과정을 거쳐야합니다.
$git init
$git add -A
$git commit -m 'init'

이제 헤로쿠에 앱을 만들고 현재 로컬 디렉토리의  git에 원격저장소 heroku 정보를 추가합니다.
$heroku create
Git remote heroku added 와 같이 출력되면 정상입니다.
만약 출력되지 않는다면 git 등록을 빼먹지 않았는지 확인해보세요.

$git config -e 
하여 [remote "heroku"]와 같이 heroku 가 추가되어있는지 확인해봅니다.

Heroku로 배포

이제 git 을 이용하여 로컬저장소에 커밋된 내용을 원격저장소 heroku의 master로 push합니다.
$git push heroku master

heroku에서 처리되는 내용이 출력되는데요. 에러나 경고가 나타날 수 있습니다.
이에 관해 알아보겠습니다.

sqlite3 비활성화

헤로쿠에서는 sqlite3를 사용하지 못하는듯 합니다. 기본 데이터베이스로 postgresql을 사용하므로 이에 맞도록 Gemfile 을 수정해 주어야 합니다. ( 데이터베이스 적용은 하단에서 )

group :development do
gem 'sqlite3'
end
group :production do
gem 'pg'
gem 'rails_12factor' 
end

Include 'rails_12factor' gem to enable all platform features
=> gem 'rails_12factor'
ruby 버전을 명시하지 않았다는 경고
=> ruby '2.0.0' # 사용중인 버전

이 외에도 다른 경고가 나올때는 참고 URL이 나오므로 확인해봅니다.

이와같이 로컬에서 수정한 내용은 반드시 git commit 해야 git push heroku master시 반영됩니다.
Gemfile 을 수정한 경우에는 bundle install 을 먼저 실행한 후에 git add, commit, push 순서로 하여야 합니다.

별문제없이 배포가 완료되면 메시지 끝부분에
https://앱이름.herokuapp.com/
와 같은 주소가 출력됩니다. 이 주소를 브라우저에서 확인해봅니다.
$heroku open 
명령을 실행하면 기본 브라우저로 사이트를 확인할 수 있습니다.

$heroku logs --tail
명령을 실행하면 실시간으로 로그를 확인할 수 있습니다.

$heroku run rails console
명령을 실행하면 콘솔을 실행할 수 있습니다.

데이터베이스에 관하여

$heroku config
$heroku pg
명령으로 데이터베이스 정보를 확인할 수 있습니다.

config/database.yml 을 열어서 production: 파트를 다음과 같이 수정합니다.
production:
  adapter: postgresql
  encoding: unicode
  pool: 5

커밋, heroku 로 push 합니다.
디비를 반영하고 결과를 확인합니다.
$heroku run rake db:migrate
$heroku pg

그 외에 확인해 볼것들

  • Procfile 정의
  • 스케일 변경
  • Provision add-ons




댓글 없음:

댓글 쓰기