作成からdeployまで

シンプルな Google App Engine アプリケーションの作成からサーバ転送まで駆け足で紹介。

app.yaml の準備

以下は go を使う時のシンプルなapp.yaml

application: プロジェクト名
version: 1
runtime: go
api_version: go1

handlers:
  - url: /.*
    script: _go_app

goファイルの用意

とりあえずチュートリアルにあったもの

hello.go

package goplus                                                                                               
                                                                                                             
import (                                                                                                     
        "fmt"                                                                                                
        "net/http"                                                                                           
)                                                                                                            
                                                                                                             
// init is called before the application starts.                                                             
func init() {                                                                                                
        // Register a handler for /hello URLs.                                                               
        http.HandleFunc("/", hello)                                                                          
}                                                                                                            
                                                                                                             
// hello is an HTTP handler that prints "Hello Gopher!"                                                      
func hello(w http.ResponseWriter, r *http.Request) {                                                         
        fmt.Fprint(w, "Hello, Gopher!")                                                                      
}                                    

動作確認

サーバに転送する前に動作確認したい場合は

dev_appserver.py app.yaml

を使ってローカルにサーバを起動して、 http://localhost:8080/ にアクセスする事でサーバに転送せずに動作確認ができます。

ssh でgceなどの別サーバにログインして作業している時は gui のブラウザは多分使えないので、ローカルサーバをバックグラウンドで実行して curl などで確認する感じになります。

dev_appserver.py app.yaml&
curl localhost:8080

ちなみに、go を使っている場合は、同様のことが

goapp serve app.yaml

で実現可能です。

サーバに転送(初回deploy時は要認証)

app engine のサーバに転送することで、他の人も実行できるようになる。

サーバに初めて転送する場合、ブラウザが起動してgoogleアカウントでログインする必要がある。

私はここでちょっとはまった。

通常は

appcfg.py update app.yaml

と入力したあと、ブラウザが勝手に起動してgoogle アカウントで認証、App Engine とのヒモ付けをするのだけど、GCE に ssh でログインしていると、起動するブラウザがテキストベースで画面が乱れてうまく認証するまで進めなかった。

こういう時は

appcfg.py --noauth_local_webserver update app.yaml

と実行すると表示されんurlを別のブラウザで表示&認証。その後表示される文字列を入力する事で認証ができる。

サーバに転送(別コマンド)

go を使う場合、appcfg.py ではなく goapp を使って転送することも可能。

goapp deploy app.yaml