Skip to content

Heroku에 배포하기

Jaehue Jang edited this page Jan 11, 2015 · 6 revisions

필수 기능을 모두 갖춘 블로그가 완성되었다. 이제 실제 운영환경에 배포하여 블로그를 사용해보자. 이번 포스트에서는 Heroku에 배포하는 과정을 소개한다.

Revel 프로젝트에서는 revel용 Heroku 빌드팩을 제공한다. revel용 Heroku 빌드팩을 활용하여 Heroku에 배포를 해 보자.

Prerequisite

heroku에 배포하기 위해서는 먼저 heroku toolbelt가 설치되어 있어야 한다. https://toolbelt.heroku.com/ 에 접속하여 heroku toolbelt를 설치하자.

Setup

  1. heroku 배포용 브런치 생성
$ git checkout -b heroku-deploy
  1. .godir 파일 생성
$ echo goblog > .godir

$ git add .godir

$ git commit .godir -m 'add .godir'
...
  1. .gitignore 파일에서 routes/제거
  • .gitignore file
test-results/
tmp/
  1. routes.go 파일을 git에 추가
$ git add app/routes/routes.go

$ $ git commit -a -m 'Add routes.go file'
...

revel 프로젝트에서는 routes/ 디렉토리를 git으로 관리하지 않는다. 웹 어플리케이션 구동시 conf/routes 파일에 정의된 라우트 정보를 기반으로 routes.go 파일을 generate 하고 실제 런타임에서는 routes.go 파일에 정의된 대로 라우팅을 한다.
하지만 heroku 빌드팩으로 배포할때는 routes.go 파일 생성 과정을 거치지 않고 바로 빌드를 한다. 그래서 routes.go 파일을 git에 포함시켜주어야 정상적으로 빌드가 된다.

  1. heroku app 생성
$ heroku create -b https://github.com/revel/heroku-buildpack-go-revel.git
...
Git remote heroku added
...
  1. 데이터베이스 생성
$ heroku addons:add heroku-postgresql:hobby-dev
...
Attached as HEROKU_POSTGRESQL_GRAY_URL
Database has been created and is available
 ! This database is empty. If upgrading, you can transfer
 ! data from another database with pgbackups:restore.
Use `heroku addons:docs heroku-postgresql` to view documentation.

$ heroku config | grep HEROKU_POSTGRESQL
HEROKU_POSTGRESQL_GRAY_URL: [YOUR_DATABASE_CONNECTION_URL]
  1. app.conf 파일에 production용 데이터베이스 설정 정보 추가
  • conf/app.conf
[prod]
...
db.import = github.com/lib/pq
db.driver = postgres
db.spec   = ${HEROKU_POSTGRESQL_GRAY_URL}
...
  1. app.conf 파일 변경사항을 git에 반영
$ git commit conf/app.conf -m 'set production database'

Complete!

Deploy

$ git checkout heroku-deploy

$ git merge master

$ git push heroku heroku-deploy:master
Counting objects: 350, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (334/334), done.
Writing objects: 100% (350/350), 118.16 KiB | 0 bytes/s, done.
Total 350 (delta 165), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Fetching custom git buildpack... done
remote: -----> Revel app detected
remote: -----> Installing go1.3... done
remote:        Installing Virtualenv... done
remote:        Installing Mercurial... done
...

PREV: 로그인 및 보안