본문으로 바로가기
728x90
반응형
728x170

HEROKU를 들어가 회원가입 후 로그인을 해줍니다.

HEROKU 페이지

그 후 Documentation에 들어가서

Get Started를 클릭 후 Go언어를 선택해 줍니다.

그러면 Go언어를 올릴 수 있는 튜토리얼이 진행이 되는데, Start를 클릭 합니다.

그러면 설치하는 화면이 나오는데, Git을 먼저 설치 한 뒤, 각 운영체제에 맞게 HEROKU Tool을 설치해 줍니다.

설치가 완료 되었다면, 명령프롬프트 창을 열고, heroku login 을 입력해주면 이러한 문구가 뜨는데 아무키나 눌러 줍니다.

그러면 새 창이 뜨면서 로그인 창이 뜨게 되는데요.

그 후 로그인을 하고 브라우저를 닫아주면 로그인이 완료 되어 있는 것을 확인 할 수 있습니다.

다음 단계로 넘어가 봅시다.

그러면 AppPrepare 하는 페이지가 뜨는데, 아래의 테스트 코드를 받아주면 됩니다.

이제 설치된 경로로 들어가서 파일을 확인해 줍니다.

main파일을 열어 줍니다.

main.go

  package main

  import (
    "log"
    "net/http"
    "os"

    "github.com/gin-gonic/gin"
    _ "github.com/heroku/x/hmetrics/onload"
  )

  func main() {
    port := os.Getenv("PORT")

    if port == "" {
      log.Fatal("$PORT must be set")
    }

    router := gin.New()
    router.Use(gin.Logger())
    router.LoadHTMLGlob("templates/*.tmpl.html")
    router.Static("/static", "static")

    router.GET("/", func(c *gin.Context) {
      c.HTML(http.StatusOK, "index.tmpl.html", nil)
    })

    router.Run(":" + port)
  }

이것이 하는 일은 간단 합니다.

template, static, index폴더에서 index.tmpl.html 파일을 보여주며, 포트 번호는 환경 변수에서 포트값을 가져오는

단순한 웹 서비스 입니다.

 

이것을 배포 해보죠!

 

지금까지 Git Clone까지 완료했고, 다음단계로 넘어가봅시다.

 

그 다음은 app을 Deploy하는 것인데, 아까 프롬프트 창에서 heroku create를 입력해 줍니다.

 

그러면 heroku가 git이랑 연동을 해서 내 계정에 app을 하나 만들어 줍니다.

여기에서 https://infinite-beyond-51893.herokuapp.com/ 은 heroku가 랜덤하게 뽑아주는 것인데 정해진 도메인이 아닙니다.

 

app을 만들었으므로 git app을 배포해 주기 위해 git push heroku main를 입력해 줍니다.

그러면 heroku server에 방금 받은 app을 업로드 하게 되고, 빌드, 실행을 알아서 해줍니다.

 

depoly가 완료 된 것을 확인할 수 있습니다.

그 후 heroku open을 입력해 줍니다.

그러면 아래와 같이 새 창이 열리게 됩니다.

이 페이지가 아까 올린 페이지 입니다.

 

그 다음 이 웹서버가 잘 돌아가는지 확인하고 싶다면

 heroku logs --tail

를 입력해 줍니다.

--tail를 입력해주었기 때문에 뒷 부분 부터 나오게 됩니다.

 

이런식으로 log가 나오며, 이 log는 main함수에 넣어주었던 gin이라는 웹 플랫폼에서 자동으로 log기능을 가지고 있는데

그것이 뽑아주는 log입니다.


Go에서 많이 사용되는 웹 플랫폼이기도 하지만 무겁기 때문에 다루지 않았습니다.

 

이렇게 하면 heroku배포가 끝이났고,  heroku ps를 입력해주면 현재 돌아가는 서버들을 확인할 수 있습니다.

bin/go-getting-started가 웹서비스이고, 프리버전이고, 1개가 돌고있다는 것을 의미 합니다.

또한 명령어들이 리눅스 명령어 형태와 비슷한 것을 알 수 있습니다.

728x90
반응형
그리드형

'프로그래밍(Web) > Golang' 카테고리의 다른 글

[바미] Go - PostgreDB  (0) 2020.12.18
[바미] Go - todos 배포  (0) 2020.12.18
[바미] Go - HEROKU를 사용한 웹 호스팅  (0) 2020.12.17
[바미] Go - 세션별 데이터 저장  (0) 2020.12.17
[바미] Go - Login Page  (0) 2020.12.17
[바미] Go - sqlite3  (0) 2020.12.17

댓글을 달아 주세요