#はじめに
GAEをGinを利用して構築していきます。
流れは、公式サイトのプロジェクトとアプリケーションの設定と同じです。
#環境設定(SDKのインストール)
##前提
GCPのアカウント登録、GAEのプロジェクト作成、Goのインストールをしておいてください。
Goのバージョンは、1.11を利用しています。
SDKのインストールは、公式サイトの通りに行います。
Google Cloud SDK のドキュメント
#ソース
今回のフォルダ構成は、以下の通りです。
├── template
│ └── index.html
├── app.yaml
└── main.go
runtime: go111
handlers:
- url: /.*
script: auto
package main
import (
"net/http"
"github.com/gin-gonic/gin"
"google.golang.org/appengine"
)
// init は古い
func main() {
router := gin.Default()
router.LoadHTMLGlob("template/*") // 事前にテンプレートをロード(相対パス)
router.GET("/", HelloWorld)
http.Handle("/", router) // router.Run(":8080")の代わり
appengine.Main() // これがないと動かない
}
func HelloWorld(c *gin.Context) {
c.HTML(http.StatusOK, "top/hello", gin.H{
"hello": "hello, World!!",
})
}
{{ define "top/hello" }}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
test
<h1>{{ .hello }}</h1>
</body>
</html>
{{ end }}
#ローカルで実行
dev_appserver.py app.yaml
この時、pythonが2系以外だと、以下のエラーが発生します。
ERROR: Python 3 and later is not compatible with the Google Cloud SDK. Please use Python version 2.7.x.
If you have a compatible Python interpreter installed, you can use it by setting
the CLOUDSDK_PYTHON environment variable to point to it.
2系と3系の共存は、以下のサイトを参考にしました。
Python 2系と3系の共存
localhost:8080
にアクセスすると以下の画面が表示されます。
#アプリケーションをデプロイする
gcloud app deploy
以下のエラーが発生した場合、SDKの初期化がされていませんので、初期化を行います。
ERROR: (gcloud.app.deploy) INTERNAL: Internal error encountered.
##SDKの初期化
gcloud init
3回ほど質問されるが、基本的に「1」を選択して問題ないと思います。
#アプリケーションを表示する
gcloud app browse
起動確認が入るので、[Y]を選択します。
その後、http://[YOUR_PROJECT_ID].appspot.com
で、画面が表示されるかを確認します。