페이지

레이블이 heroku인 게시물을 표시합니다. 모든 게시물 표시
레이블이 heroku인 게시물을 표시합니다. 모든 게시물 표시

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