[Google Cloud Platform] Compute Engine VM을 활용한 was 서버 띄우기
Google Cloud Compute Engine에 VM을 생성하고, golang을 통한 WAS 서버 생성을 진행해보겠습니다.
Google Cloud 콘솔로 VM을 생성하는 법은 다음과 같습니다.
Compute Engine으로 이동합니다. 인스턴스 만들기 버튼을 클릭합니다.
인스턴스의 이름(예: was-api)을 입력합니다.
리전(예: asia-northeast3, 서울)을 선택합니다.
머신 구성에서 VM 유형을 선택합니다.
외부에 네트워크 트래픽을 허용하기 위해 HTTP 트래픽을 허용합니다.
만들기 버튼을 클릭합니다.
해당 VM에 접속하기 위해 SSH 를 클릭합니다.
다음의 웹브라우저를 통해 SSH로 연동됩니다.
gcloud CLI을 사용해서 VM 생성 및 SSH 접속은 다음과 같습니다.
$ gcloud compute instances create was-api --project=jckim-gcp-prj --zone=asia-northeast3-a --machine-type=e2-medium
생성된 VM에 접속하기 위해서 다음의 ssh 명령어를 입력합니다.
$ gcloud compute ssh --zone "asia-northeast3-a" "was-api" --project "jckim-gcp-prj"
서버 내에 golang을 설치합니다.
$ mkdir Application && cd Application
$ sudo apt-get install wget
$ wget https://go.dev/dl/go1.18.4.linux-amd64.tar.gz
$ tar xzvf go1.18.4.linux-amd64.tar.gz
$ sudo mv go /usr/local
$ mkdir -p ~/gopath/src/
go 환경 변수를 입력합니다.
$ vi ~/.bashrc
export GO111MODULE=on
export GOPATH=/home/jeongchul.kim/gopath
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
$ source ~/.bashrc
$ go version
$ go env
$ cd ~/gopath/src
$ mkdir echo-was && cd echo-was
Golang의 labstack/echo 웹프레임워크 패키지를 활용해 간단한 WAS 서버를 개발합니다.
https://github.com/labstack/echo
$ vi main.go
https://github.com/KimJeongChul/go-was-example/tree/main/simple-http-server
package main
import (
"net/http"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Routes
e.GET("/", hello)
// Start server
e.Logger.Fatal(e.Start(":80"))
}
// Handler
func hello(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}
Application 서버를 빌드 합니다.
$ go mod init
$ go mod tidy
$ go build
$ ls -alh
80 포트로 실행하기 위해서는 sudo 권한이 필요합니다.
$ sudo ./echo-was
외부 IP를 통해 curl로 호출해보겠습니다.
브라우저 주소창에 외부 IP를 입력합니다.
$ curl http://34.64.69.216 -X GET
이상으로 Google Cloud VM에 WAS 서버 배포하는 법을 설명 드렸습니다.
감사합니다.
'Google Cloud Platform' 카테고리의 다른 글
[Google Cloud Platform] Cloud SQL을 활용한 DB 구축 (0) | 2022.07.31 |
---|---|
[Google Cloud Platform] Artifact Registry을 활용한 Container Image 저장하기 (0) | 2022.07.30 |
[Google Cloud Platform] macOS gcloud CLI 설치 (0) | 2022.07.30 |
Google Cloud ML TensorFlow를 활용한 Object Detection (2) | 2018.06.15 |
Google Cloud ML Engine (2) | 2018.06.12 |