当你越来越老时,你不会Ât 想要多维护一台服务器来托管像这样的几个网站和博客,监控是否让加密证书更新,甚至在旧的过时网站上等等等等。至少这是真的我 :) 我决定将它转移到某个完全托管的平台上。乍一看,谷歌云存储是足够好的解决方案,但在创建存储桶并抛出完整教程后,我明白启用 https 既不容易(使用负载均衡器等)也不便宜(它_每小时前 5 条规则 0.025 美元 =>每月 18 美元) 仅将 Google Cloud Run 用于几个 API,它仅按使用时间/CPU/RAM 付费,但如果网站不是很活跃,即使免费套餐也足以托管一些网站免费 阅读文档后,它看起来非常简单,在使用 GCP 客户端库时,您甚至不需要在 Cloud Run(完全托管)容器实例中手动提供凭据! P.S.:如果你只是想要你的最终代码来部署你自己的容器,请访问 github.com/kanocz/gclwebgcs 首先我们需要监听提供的端口 端口环境变量: http.ListenAndServe + os.Getenv(无端口) 通过 GCS 环境我们将指定 Google Cloud Storage 存储桶名称(需要在同一个项目中 ctx : = context.Background() client, err := storage.NewClient(ctx) bucket = client.Bucket(os.Getenv(âïÂÃÂGCS 并阅读要发送的对象: obj := bucket.Object(r.URL.Path[1 // strip firstobjAttrs, err := obj.Attrs(ctx) obj = obj.ReadCompressed(true) // 我们不需要t 想要再次解压缩和压缩它以进行传输 // 复制标头 w.HeaderSet(âÃÂïÂContent-TypeâÃÂÃÂ, objAttrs.ContentType) w.HeaderSet(_Content-Encoding_, objAttrs.ContentEncoding) w.HeaderSet(_内容长度,strconv。 ÃÂ, objAttrs.ContentDisposition) w.HeaderSet(Ãâ¢ÃÂÃÂ缓存控制Ãâ¢ÃÂÃÂ, objAttrs.CacheControl) w.HeaderSet(à ¢ÃÂïÂETagâÃÂïÂ, objAttrs.Etag) // 并发送数据给阅读器,错误 := obj.NewReader(ctx) io.Copy(w,读者) 真正为服务网站我们还需要服务器索引,处理未发现的错误等等,但它也没有那么复杂 不要忘记创造 go.mod 帮助 Google Cloud Build :) 比部署到容器注册表更简单 gcloud 构建提交 --tag gcr.io/project1/gclwebgcs (请更换 project1 加上你的项目名称) 并使用创建/更新服务 gcloud beta run deploy --image gcr.io/project1/gclwebgcs \ --platform managed --set-env-vars=GCS=GCSbucketName 服务名称 不要忘记上传文件到 同一个项目中的GCSbucketName,并为新服务分配域名,ssl证书将自动提供和管理! 这就是全部 :)