GAE/Go で静的サイトを公開する
Google Compute Engine 上の Nginx で運用していたブログを、GAE/Go (Go on Google App Engine) に移行した。
GAE/Go とは
GAE/Go は、Google が提供する Go言語用の PaaS 。マネージドSSLの提供開始により、 カスタムドメインもつけるだけで SSL化されるようになった。
PaaS はアプリを動かすものだが、静的サイトを公開したければ、静的ファイルをを配信する アプリを書けばよい。と言っても必要なファイルは2つだけ。
public/
main.go
app.yaml
GAE で公開(deploy)するための準備
GCPの開始や、gcloud の初期設定(デフォルトプロジェクトの登録など)が済んでいる状態で、 下記コマンドを実行し、GAE を東京リージョンで使える状態にする。
gcloud app create --region=asia-northeast1
次に、2つのファイルを public ディレクトリと同じ階層に作成。
main.go
package main
import "net/http"
func init() {
http.Handle("/", http.FileServer(http.Dir("public")))
}
- public ディレクトリ配下を公開するアプリ
app.yaml
runtime: go
api_version: go1
skip_files:
- ^(?!main\.go|public)
handlers:
- url: /.*
secure: always
script: _go_app
- GAE の設定ファイル
skip_files:
で main.go と publicディレクトリのみ deploy するように指定secure: always
で http を https にリダイレクト
GAE で公開
app.yaml があるディレクトリで、gcloud コマンドを実行すれば public 配下が公開される。
gcloud app deploy
このサイトの場合
このブログは Hugo を使っていて 、以前書いたように、Hugo の操作は全て Makefile を利用している。そのため、下記コマンドを打てば、public 配下が更新され、deploy が 実行される。make 便利。
make deploy