GAE/Go1.11试行(第一部分:“快速起步”)

请你用中文进行改写:

挑战

上次,我尝试了GAE(Google App Engine)的Golang版本(v1.9)快速入门。
虽然我没有亲自试过,但听说v1.9版本在Vendoring方面会遇到问题。
虽然我可以试着遇到问题,但既然会很快推出v1.11版并尝试各种新功能,感觉更有趣,所以我突然决定更改适配版本。
首先,尽管我要尝试快速入门,但我想比较一下v1.9版的源代码。

开发环境。

# 操作系统

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="17.10 (Artful Aardvark)"

# Go语言

$ go version
go version go1.11.2 linux/amd64

版本切换是通过goenv来进行的。

戈云

$ gcloud version
Google Cloud SDK 224.0.0

在中文中,只需要一种选项。前提。

スタンダード環境での開発とする。
GCPプロジェクトは作成済み。
gcloudコマンドインストール済み。

实践

按照下文所示的步骤,逐步查看相关文件的内容。
https://cloud.google.com/appengine/docs/standard/go111/quickstart?hl=ja

获取示例项目

按照步骤来。

$ go get -u -d github.com/GoogleCloudPlatform/golang-samples/appengine/helloworld/...
$
$ ll golang-samples/appengine/helloworld/
合計 16K
-rw-r--r-- 1 koge koge   69 11月 12 02:51 app.yaml
-rw-r--r-- 1 koge koge  391 11月 12 02:51 hello.go

嗨,去吧。

为什么示例源代码中没有使用”google.golang.org/appengine”。
不确定是因为不需要使用(尽管冗长),还是有意选择不使用,或者仅仅是因为它当前不支持v1.11。

版本1.11

import (
    "fmt"
    "log"
    "net/http"
    "os"
)

func main() {
    http.HandleFunc("/", indexHandler)

    port := os.Getenv("PORT")
    if port == "" {
        port = "8080"
        log.Printf("Defaulting to port %s", port)
    }

    log.Printf("Listening on port %s", port)
    log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}

func indexHandler(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/" {
        http.NotFound(w, r)
        return
    }
    fmt.Fprint(w, "Hello, World!")
}

v1.9版本

package main

import (
    "fmt"
    "net/http"

    "google.golang.org/appengine"
)

func main() {
    http.HandleFunc("/", handle)
    appengine.Main()
}

func handle(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Hello, world!")
}

app.yaml 的意思是应用程序配置文件。

决定 App Engine 行为的配置文件。
可以在以下链接中找到定义的元素。
https://cloud.google.com/appengine/docs/standard/go111/config/appref?hl=ja

以下是v1.9版的链接↓
https://cloud.google.com/appengine/docs/standard/go/config/appref?hl=ja

1. 第一版第一号。

runtime: go111

在Go的源代码中进行URL处理是一种方针吗?

1.9版

runtime: go
api_version: go1

handlers:
- url: /.*
  script: _go_app

■本地启动

在本地启动时,启动脚本似乎都是Python的。

$ dev_appserver.py app.yaml 
INFO     2018-11-14 00:25:23,158 devappserver2.py:224] Using Cloud Datastore Emulator.
We are gradually rolling out the emulator as the default datastore implementation of dev_appserver.
   〜〜〜
INFO     2018-11-14 00:25:25,628 dispatcher.py:256] Starting module "default" running at: http://localhost:8080
INFO     2018-11-14 00:25:25,630 admin_server.py:152] Starting admin server at: http://localhost:8000
2018/11/14 00:25:27 Listening on port 18085
INFO     2018-11-14 00:25:28,359 instance.py:294] Instance PID: 8137
INFO     2018-11-14 00:25:58,565 module.py:434] [default] Detected file changes:
  /work/src/golang/src/github.com/GoogleCloudPlatform/golang-samples/appengine/go11x/helloworld/helloworld.go
2018/11/14 00:25:59 Listening on port 23807
INFO     2018-11-14 00:26:00,645 instance.py:294] Instance PID: 8540
001.png

■ 部署

假设已经完成了”gcloud init”和”gcloud auth login”。

d$ gcloud app deploy
Services to deploy:

descriptor:      [/work/src/golang/src/github.com/GoogleCloudPlatform/golang-samples/appengine/go11x/helloworld/app.yaml]
source:          [/work/src/golang/src/github.com/GoogleCloudPlatform/golang-samples/appengine/go11x/helloworld]
target project:  [【プロジェクトID】]
target service:  [default]
target version:  [20181114t093930]
target url:      [https://【プロジェクトID】.appspot.com]


Do you want to continue (Y/n)?  y

Beginning deployment of service [default]...
Created .gcloudignore file. See `gcloud topic gcloudignore` for details.
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 4 files to Google Cloud Storage                ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [default]...done.                                                                                                                                                                         
Setting traffic split for service [default]...done.                                                                                                                                                        
Deployed service [default] to [https://【プロジェクトID】.appspot.com]

You can stream logs from the command line by running:
  $ gcloud app logs tail -s default

To view your application in the web browser run:
  $ gcloud app browse
002.png
screenshot-console.cloud.google.com-2018-11-14-09-43-59-758.png

总结一下

即使在快速入门级别,也有一些不同。
下次我们尝试一下在v1.9版本中据说会遇到困难的Vendoring相关内容。

广告
将在 10 秒后关闭
bannerAds