AppEngine go1.11 개발 & 배포 환경 구축【Linux & Mac】
AppEngine go111 개발 & 배포 환경 구축【Linux & Mac】
소개
안녕하세요, 오랜만입니다.
이전에 다음 기사를 썼습니다.
GAE Go 개발 환경 구축부터 테스트 앱 배포까지 [MacOS]
이번에는 AppEngine go 1.11에서의 개발 환경 구축을 기사에 정리하고 싶습니다.
go 설치
여기서는 go 설치에 대해 설명하겠습니다.
방법은 여러 가지 있습니다만 goenv를 사용하는 방법을 써 갑니다.
(shell은 bash를 전제로 씁니다)
goenv 설치
여기에서는 두 가지 방법을 소개합니다.
Github에서 복제
Github의 goenv Installation을 참고합니다.
콘솔# ユーザーのホームディレクトリにgoenvを置くためcdします
$ cd $HOME
# Githubからクローンしてきます
$ git clone https://github.com/syndbg/goenv.git ~/.goenv
# パスを通します
$ echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bash_profile
$ echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bash_profile
# goenvの初期設定が行われるように設定します
$ echo 'eval "$(goenv init -)"' >> ~/.bash_profile
# 設定を反映します
$ exec $SHELL
# $SHELLが設定されていない環境はでは代わりに以下でも可です
# $ source .bash_profile
# goenv -v で以下のようにバージョンが表示されればgoenvのインストールはOKです
$ goenv -v
goenv 2.0.0beta3
# インストール可能なgoのバージョンを一覧表示します
$ goenv install -l
# バージョンを指定してgoをインストールします
$ goenv install 1.11.5
# システム全体でgoenv内にインストールしたgoを使うように設定します
$ goenv global 1.11.5
# goを有効化します
$ goenv rehash
# go version でバージョンが表示されればOKです
$ go version
HomeBrew 사용(Mac OS X용)
HomeBrew 설치는 생략합니다.
설치하지 않은 분은 공식 페이지을 참조하여 설치하십시오.
터미널
$ brew update
$ brew install goenv
# goenvの初期設定が行われるように設定します
$ echo 'eval "$(goenv init -)"' >> $HOME/.bash_profile
# 設定を反映します
$ exec $SHELL
# $SHELLが設定されていない環境はでは代わりに以下でも可です
# $ source $HOME/.bash_profile
# goenv -v で以下のようにバージョンが表示されればgoenvのインストールはOKです
$ goenv -v
goenv 2.0.0beta3
# インストール可能なgoのバージョンを一覧表示します
$ goenv install -l
# バージョンを指定してgoをインストールします
$ goenv install 1.11.5
# システム全体でgoenv内にインストールしたgoを使うように設定します
$ goenv global 1.11.5
# goを有効化します
$ goenv rehash
# go version でバージョンが表示されればOKです
$ go version
google-cloud-sdk 설치
google-cloud-sdk(이하 gcloud-sdk)를 사용하려면 python 2.7.x가 필요합니다.$ python -V
를 치고 버전이 표시되지 않으면 사전 설치하십시오.
다운로드 및 배포
gcloud-sdk는 OS에 따라 다운로드하는 파일이 다릅니다.
각자의 OS에 맞는 것을 다운로드해 주세요.
# ユーザーのホームディレクトリにgoenvを置くためcdします
$ cd $HOME
# Githubからクローンしてきます
$ git clone https://github.com/syndbg/goenv.git ~/.goenv
# パスを通します
$ echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bash_profile
$ echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bash_profile
# goenvの初期設定が行われるように設定します
$ echo 'eval "$(goenv init -)"' >> ~/.bash_profile
# 設定を反映します
$ exec $SHELL
# $SHELLが設定されていない環境はでは代わりに以下でも可です
# $ source .bash_profile
# goenv -v で以下のようにバージョンが表示されればgoenvのインストールはOKです
$ goenv -v
goenv 2.0.0beta3
# インストール可能なgoのバージョンを一覧表示します
$ goenv install -l
# バージョンを指定してgoをインストールします
$ goenv install 1.11.5
# システム全体でgoenv内にインストールしたgoを使うように設定します
$ goenv global 1.11.5
# goを有効化します
$ goenv rehash
# go version でバージョンが表示されればOKです
$ go version
$ brew update
$ brew install goenv
# goenvの初期設定が行われるように設定します
$ echo 'eval "$(goenv init -)"' >> $HOME/.bash_profile
# 設定を反映します
$ exec $SHELL
# $SHELLが設定されていない環境はでは代わりに以下でも可です
# $ source $HOME/.bash_profile
# goenv -v で以下のようにバージョンが表示されればgoenvのインストールはOKです
$ goenv -v
goenv 2.0.0beta3
# インストール可能なgoのバージョンを一覧表示します
$ goenv install -l
# バージョンを指定してgoをインストールします
$ goenv install 1.11.5
# システム全体でgoenv内にインストールしたgoを使うように設定します
$ goenv global 1.11.5
# goを有効化します
$ goenv rehash
# go version でバージョンが表示されればOKです
$ go version
다운로드가 끝나면 파일을 확장합니다.
이번은 전개 후의 파일명을
google-cloud-sdk
로 해, 배치 장소는 홈 디렉토리로 합니다.설치
홈 디렉토리로의 배포가 끝나면 설치 스크립트를 실행합니다.
콘솔
# ホームディレクトリにcdしてインストールスクリプトを実行
# 途中何度か質問されるのでYやエンターを押します
$ cd $HOME
$ ./google-cloud-sdk/install.sh
# 設定を反映します
$ exec $SHELL
# $SHELLが設定されていない環境はでは代わりに以下でも可です
# $ source $HOME/.bash_profile
# gcloud -v でバージョンが表示されればOKです
$ gcloud -v
구성 요소 추가
AppEngine go 구성 요소를 추가로 설치합니다.
콘솔
# コンポーネントの一覧を表示
$ gcloud components list
# app-engine-go コンポーネントをインストール
$ gcloud components install app-engine-go
Google 계정에 로그인 및 프로젝트 설정
gcloud-sdk와 Google 계정을 연결하고 사용할 GCP 프로젝트를 설정합니다.
GCP 프로젝트를 아직 작성하지 않은 경우 먼저 프로젝트를 작성하십시오.
프로젝트의 작성 및 설정은 GCP 콘솔 에서 할 수 있습니다.
프로젝트 작성이 끝나면 프로젝트 ID를 삼가해 주십시오.
콘솔
# 指示に従ってログインして下さい
$ gcloud auth login
# デフォルトで使用するプロジェクトを指定します
$ gcloud config set project <プロジェクトID>
# gcloud config list と打って設定したアカウントとプロジェクトが出ればOK
$ gcloud config list
로컬 서버와 클라우드에서 Hello,world!
어느 정도 설정할 수 있었던 곳에서 AppEngine로 움직이는 코드를 써 가고 싶습니다.
이번에는 go111 런타임에서 사용할 수있는 module 기능을 사용합니다.
라이브러리 루트 설정 및 개발 디렉토리 준비
라이브러리 루트 (GOPATH) 설정과 소스 코드를 넣을 디렉토리를 준비하고 싶습니다.
콘솔
# ホームディレクトリにcdします
$ cd $HOME
# ホームディレクトリにgoフォルダを作ります
$ mkdir go
# $GOPATH(ライブラリルート的なの)を設定します
$ echo 'export GOPATH="$HOME/go"' >> ~/.bash_profile
# $GOPATH/bin にパスを通します
$ echo 'export PATH="$GOPATH/bin:$PATH"' >> ~/.bash_profile
# 設定を反映します
$ exec $SHELL
# $SHELLが設定されていない環境はでは代わりに以下でも可です
# $ source $HOME/.bash_profile
# ソースコードを置くディレクトリを作ります
# <>の中はお好きな名前でどうぞ
$ mkdir -p <project-name>/src/github.com/<githubID>/<app-name>
# 以下のような構成になっていればOKです
# $HOME
# └── <project-name>
# └── src
# └── github.com
# └── <githubID>
# └── <app-name>
모듈 초기화 및 소스 코드 배치
go module에서는 go.mod 파일을 사용하여 종속성 관리 등을 수행합니다.
go module을 사용하기 위해
go mod init <module-name>
에서 go.mod 파일을 생성합니다.main.go와 app.yaml도 만들고 배치합니다.
콘솔
# 先程作成した<app-name>にcdします
$ cd <project-name>/src/github.com/<githubID>/<app-name>
# モジュールを初期化します
$ go mod init github.com/<githubID>/<app-name>
# main.go と app.yamlを作ります
$ touch main.go app.yaml
app.yaml
runtime: go111
service: default
handlers:
- url: /.*
main.go
package main
import (
"net/http"
"os"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(200)
w.Write([]byte("Hello,World!"))
})
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.ListenAndServe(":" + port, nil)
}
로컬 서버 시작
app.yaml과 main.go를 만들고 최소한의 환경이 갖추어지면 로컬 서버에서 실행합니다.
콘솔
# app.yamlと同じディレクトリで以下のコマンドを入力し、ローカルサーバーを起動します
# http://localhost:8080/ にアクセスして Hello,World! が表示されればOKです
$ dev_appserver.py app.yaml
AppEngine에 배포
로컬 서버에서 성공적으로 실행되면 AppEngine에 배포합니다.
프로젝트의 작성이나 gcloud-sdk의 설정등은 끝나고 있는 것으로 합니다.
콘솔
# app.yamlと同じディレクトリで以下のコマンドを打ちます
# プロジェクト名やサービス名を確認して正しければYを押してしばらく待ちます
$ gcloud app deploy app.yaml
# デプロイが完了したら以下のコマンドでデプロイしたアプリケーションをブラウザで開くことができます
# Hello, World! が表示されれば成功です
$ gcloud app browse
수고하셨습니다.
이것으로 환경의 구축과 배치는 종료입니다.
보충
$GOPATH 아래에 소스 코드를 두고 싶을 때는 의도적으로
$GO111MODULE=off
를 설정해야 합니다.사이고에게
여기까지 읽어 주셔서 감사합니다.
오자 탈자, 프로그램의 실수나 잘못된 설명 등 있으면 댓글을 주실 수 있으면 다행입니다.
Reference
이 문제에 관하여(AppEngine go1.11 개발 & 배포 환경 구축【Linux & Mac】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teikoku-penguin/items/5ad021e0556e3008f56e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)