LoginSignup
4
6

More than 5 years have passed since last update.

GoogleAppEngine(GAE)でGo/Martiniを動かすまで

Posted at

以下の手順は下記を参考にしました。簡単でした。10分程度で出来ると思います。

API on Google App Engine with Martini and Go

GAE SDKのインストール

まず下記のリンクから「go_appengine_sdk_darwin_amd64-1.9.10.zip」をダウンロードし任意のディレクトリに解凍します。$HOME直下が良いと思います。

Download the Google App Engine SDK

vi ~/.bash_profile

をして、下記を末尾に追記します。

export PATH=”$HOME/go_appengine:$PATH”

viを保存する時は、Escを押してから:wqでOKです。保存したら読み直しておきます。

source ~/.bash_profile

次のコマンドでSDKが有効になってるか確認します。

goapp version

サンプルの実装(net/http)

下記からサンプルのソースコードをダウンロードします。

サンプルのソース

mkdir gae_go
cd gae_go
mkdir myapp

myappフォルダの中にダウンロードしたソースコード(hello.go, app.yaml)をコピーします。そしてhello.goのあるフォルダの中で下記のコマンドで実行します。

goapp serve

実行すると下記のURLで確認できます。

http://localhost:8080

サンプルの実装(Martini)

myappをコピーします。そしてアプリケーションの名前を変えます。

cd ..
cp -R myapp api 
vi api/app.yaml

application: myapp の箇所を application: api に変えて保存します。次にhello.goを下記のように書き換えます。

package hello
import (
    "net/http"
    "github.com/go-martini/martini"
)
func init() {
    m := martini.Classic()
    m.Get("/", func() string {
        return "Hello world!"
    })
    http.Handle("/", m)
}    

次にMartiniをインストールします。

goapp get github.com/go-martini/martini

そして、動作を確認します。

cd api
goapp serve

同じく実行すると下記のURLで確認できます。

http://localhost:8080

GAEにデプロイする

下記でアプリを登録する

Google Developer Console

Project Name: Playing Cards API
Project ID: playing-cards-api-<xxxxx>

app.yamlのapplicationを上記で入力したplaying-cards-api-に変更する。

vi app.yaml

そしてデプロイする。

cd ..
goapp deploy api

すると下記のようにコンソールが走る。途中でGoogleアカウントの認証が求められる。

$ goapp deploy api
06:38 PM Application: playing-cards-api-timanish; version: 1
06:38 PM Host: appengine.google.com
06:38 PM 
Starting update of app: playing-cards-api-timanish, version: 1
06:38 PM Getting current resource limits.
Email: hoge@example.com
Password for hoge@example.com: 
06:39 PM Scanning files on local disk.
06:39 PM Cloning 11 application files.
06:39 PM Uploading 2 files and blobs.
06:40 PM Uploaded 2 files and blobs
06:40 PM Compilation starting.
06:40 PM Compilation: 10 files left.
06:40 PM Compilation completed.
06:40 PM Starting deployment.
06:40 PM Checking if deployment succeeded.
06:40 PM Deployment successful.
06:40 PM Checking if updated app version is serving.
06:40 PM Completed update of app: playing-cards-api-timanish, version: 1

下記のURLで動作を確認できる。簡単だった。
http://playing-cards-api-timanish.appspot.com/

通常のコードとGAE用のコード

ちなみに昨日投稿したコードと比べると下記のようになる。下記はローカルで動作するMartiniのコード。

package main    

import "github.com/go-martini/martini"    

func main() {
  m := martini.Classic()
  m.Get("/", func() string {
    return "Hello world!"
  })
  m.Run()
}

これはgo run server.goという形で実行した。

次にappengine用のコード。

package hello
import (
    "net/http"
    "github.com/go-martini/martini"
)
func init() {
    m := martini.Classic()
    m.Get("/", func() string {
        return "Hello world!"
    })
    http.Handle("/", m)
}    

これはgoapp serveという形で実行する。m.Run()がhttp.Handle("/", m)になっている。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6