AppEngine go1.11 개발 & 배포 환경 구축【Linux & Mac】

12911 단어 5GAEAppEnginego1.11

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에 맞는 것을 다운로드해 주세요.
  • 리눅스 일반
  • 데비안/우분투
  • RedHat/CentOS
  • Mac

  • 다운로드가 끝나면 파일을 확장합니다.
    이번은 전개 후의 파일명을 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 를 설정해야 합니다.

    사이고에게



    여기까지 읽어 주셔서 감사합니다.
    오자 탈자, 프로그램의 실수나 잘못된 설명 등 있으면 댓글을 주실 수 있으면 다행입니다.

    좋은 웹페이지 즐겨찾기