[GAE/Go] Go アプリを Google App Engine 上で動作させる

><b>※ 2017 年 04 月 03 日追記</b>
>本記事で作成した環境で、外部パッケージを使って Web アプリの開発を進めようとしたところ、ビルドやデプロイ時に問題が出てきてちょっとハマりました・・・(´・ω・`)
>あらためて「direnv + glide」を使ってイチから GAE/Go 専用の開発環境を構築し直し、その手順をまとめて UP しておりますので、興味がある方は[以下の記事](http://qiita.com/togoturns/items/968ddbc5458750d7c958)をご覧いただければと思います。

>- [[GAE/Go] Gin で 作成した Web アプリを Google App Engine 上で動作させる (環境構築編：direnv + glide)]
(http://qiita.com/togoturns/items/968ddbc5458750d7c958)



　
　　
Go アプリ を Google App Engine 上で動作させる手順をまとめた自分用メモ。
基本的に GCP 公式ページの記載に沿って設定しています。

- [Quickstart for Go App Engine Standard Environment]
(https://cloud.google.com/appengine/docs/standard/go/quickstart?hl=ja)

※ 環境
　macOS Sierra バージョン 10.12.3
　MacBook Air (Early 2014)


###1. Go のインストール
```Terminal:Terminal
$ brew install go
$ go env GOROOT
    /usr/local/Cellar/go/1.8/libexec  　
　　(# GOROOT 以下の bin に、go, godoc, gofmt の実行バイナリが配置される) 
```

###2. $GOPATH の設定
```Terminal:Terminal
$ cd $HOME
$ mkdir go
$ vim ~/.bash_profile (# .bash_profile ファイル内に下記内容を記述、手順 1 $GOROOT のパスも併せて通す)

  # Set path for Go_Golang
  export GOPATH="$HOME/go"
  export PATH="$PATH:/usr/local/Cellar/go/1.8/libexe/bin:$GOPATH/bin"

```
```Terminal:Terminal
$ source ~/.bash_profile (# 設定を反映させる)
```

###3. Python version 2.7 のインストール
Google App Engine の設定を行う際、Python version 2.7 を使用する必要がある。なお、自分は先に Django 環境を構築した際、指定したバージョンの anaconda 仮想環境を使えるように設定しているのでそれをこちらでも利用する。
(※ 設定の詳細は下記記事の手順 3 ～ 7 を参照。)
 - [[Python] Django の環境構築 (pyenv + pyenv-virtualenv + Anaconda) for macOS]
(http://qiita.com/togoturns/items/b2ae361a669933c823f5)


```Terminal:Terminal
$ pyenv global anaconda2-4.2.0 (# 全てのディレクトリに対して、Python version 2.7 (anaconda2-4.2.0) の仮想環境が設定される)

$ python --version (# python のバージョン確認)
    Python 2.7.12 :: Anaconda 4.2.0 (x86_64) 
```

###4. Google Cloud SDK パッケージファイルのダウンロード
下記ページより、Mac OS X（x86_64）用の SDK アーカイブパッケージをダウンロード。

- [Cloud SDK のダウンロード]
(https://cloud.google.com/sdk/downloads)

ダウンロードしたパッケージファイルを解凍後、展開された全てのファイルを任意のディレクトリ配下に配置。

```Terminal:Terminal
$ cd $HOME
$ mkdir .go_appengine
$ cd .go_appengine

(# ".go_appengine" ディレクトリを作成し、当該ディレクトリ配下にダウンロード・展開した Google Cloud SDK ファイルを配置)
```

###5. Google Cloud SDK のパスを追加
```Terminal:Terminal
$ cd $HOME
$ vim ~/.bash_profile (# .bash_profile ファイル内に下記内容を記述)

  # Set path for Go_GoogleAppEngine
  export PATH="$PATH:$HOME/.go_appengine"
```
```Terminal:Terminal
$ source ~/.bash_profile (# 設定を反映させる)
```

###6. Google Cloud Platform 管理画面でプロジェクトを作成
Google Cloud Platform ページにサインインし、管理画面からデプロイするプロジェクトを作成する。

　1) [Google Cloud Platform 管理画面 (ダッシュボード)] 
(https://console.cloud.google.com/home/dashboard) にサインイン
　2) 画面左上のハンバーガーメニュー (ツールとサービス) をクリック
　3) "IAM と管理" をクリック
　4) "すべてのプロジェクト" をクリック
　5) "+ プロジェクトを作成" をクリック
　6) "新しいプロジェクト" にプロジェクト名を入力し、"作成" をクリック
　7) 新規作成されたプロジェクトに <プロジェクト ID> が割り当てられる

###7. Google Cloud SDK のインストール
```Terminal:Terminal
$ cd $HOME/.go_appengine
$ ./google-cloud-sdk/install.sh (# "install.sh" を実行して Google Cloud SDK をインストール)
$ ./google-cloud-sdk/bin/gcloud init (# Google Cloud SDK を初期化)
```

###8. Hello World アプリ (サンプル) のダウンロード
```Terminal:Terminal
$ cd $HOME/go/src/github.com
$ git clone -b part1-helloworld https://github.com/GoogleCloudPlatform/appengine-guestbook-go.git helloworld
  (# リモートリポジトリの "part1-helloworld" ブランチをローカルに複製し、"helloworld" ディレクトリへ展開)
```

###9. ローカル環境でのアプリ動作確認

```Terminal:Terminal
$ cd $HOME/go/src/github.com/helloworld
$ dev_appserver.py app.yaml
　(# ローカル環境でアプリを起動、"Do you want to continue (Y/n)?" と表示されたら "y" を入力)
```
コマンド実行後ブラウザーを起動し、アドレス欄に "http://localhost:8080" を入力。"Hello World!" と表示されれば成功。

###10. Google App Engine にデプロイ
```Terminal:Terminal
$ cd $HOME/go/src/github.com/helloworld
$ gcloud app deploy
　(# Google App Engine にアプリをデプロイ、"Do you want to continue (Y/n)?" と表示されたら "y" を入力)
$ gcloud app browse
  (# ブラウザーが起動し、"https://<プロジェクト ID>.appspot.com" ページが開く。"Hello World!" と表示されれば成功)
```

以上で完了です。
最近環境構築しかしてないので、そろそろ何か作りまし・・・（ーー；）