IT_컴퓨터_코딩_개발

Heroku(히로쿠/헤로쿠/허로쿠)에서 무료로 Go 서버 돌리기

파워유저 2016. 10. 10. 19:41

Heroku(히로쿠/헤로쿠/허로쿠)에서 무료로 Go 서버 돌리기

(Go에 대한 기본 지식이 어느 정도 필요함)

Git GUI 툴로 TortoiseGit을 사용하면 TortoiseSVN 이용자들이 수월하게 git에 적응할 수 있다.

다운로드는 https://tortoisegit.org/ 에서 받으면 된다.


1. 허로쿠 계정이 없으면 무료 계정 만들기(Sign Up)

https://www.heroku.com/ => Sign Up (https://signup.heroku.com/)


2. 계정을 만들었으면 로그인 후에 Go App을 만든다.

https://devcenter.heroku.com/ 에서 두더지같이 생긴 Go를 클릭.

Getting Started on Heroku with Go 를 클릭.

Introduction 부터 차근차근 따라해 보자.

Go 1.6이상 버전이 설치되어 있어야 한다.


3. Download the Heroku CLI for Windows 를 클릭하여 Heroku Toolbelt를 설치한다.


4. 설치가 완료되었으면 윈도우 실행창에서 cmd를 실행시킨다.

이건 다른 이야기지만 cmd 보다는 ConEmu를 설치해서 사용하는 것이 편하다.

https://conemu.github.io/


5. cmd창에서 heroku login 명령을 입력하고 heroku 계정 id/password를 입력한다.

$ heroku login

Enter your Heroku credentials. Email: go@example.com Password: ***** Logged in as go@example.com


6. github에 올라가 있는 heroku 기본 예제를 go get으로 다운 받는다.

$ go get github.com/heroku/go-getting-started

에러가 난다면 go.exe가 있는 bin 경로를 PATH에 추가했는지 확인한다.

또한, GOPATH를 지정해 주었는지 확인한다.


7. Go 서버를 구동하기 위해 App을 하나 만든다.

$ heroku create

이렇게 만들어도 되고,

웹페이지 Dashboard의 우측 상단 New -> Create new app을 통해서 만들어도 된다.

https://dashboard.heroku.com/apps


아래와 같이 Git 저장소를 만들 수 있는 Help Page가 나온다.

Create a new Git repository

Initialize a git repository in a new or existing directory

$ cd my-go-project/
$ git init
$ heroku git:remote -a example-heroku-12345

Deploy your application

Commit your code to the repository and deploy it to Heroku using Git.

$ git add .
$ git commit -am "ANY COMMIT MESSAGE"
$ git push heroku master

이렇게 git push를 하면 에러가 없다면 자동으로 Go 서버가 시작된다.


8. 웹페이지 접속

$ heroku open

또는 웹페이지 Dashboard에서 App을 선택하고 우측 상단의 Open App을 클릭하면

https://example-heroku-12345.herokuapp.com/ 의 주소로 접속이 된다.

도메인 주소는 App의 Dashboard - Settings 탭에 나와 있음.


9. 무료 DB(Postgresql) 연결

허로쿠에서는 무료로 DB도 제공하고 있다.

App에서 DB에 연결하는 방법은

Dashboard - Personal Apps - Resources - Add-ons에 Heroku Postgres라고 검색해 보면 나오는 항목을 클릭하면 앱에서 Database에 연결할 수 있도록 추가된다.

외부에서 pgAdmin으로 직접 연결할 수도 있다. (ssl_mode = require)