Apabila anda semakin tua dan semakin tua, anda tidak perlu lagi.  tidak mahu mengekalkan satu pelayan lagi untuk mengehoskan beberapa tapak dan blog seperti ini, pantau jika membenarkan sijil penyulitan diperbaharui walaupun pada tapak lama yang sudah lapuk dan seterusnyaâÃÂæ sekurang-kurangnya ini benar untuk saya :) Dan saya memutuskan untuk mengalihkannya ke beberapa platform terurus penuh. Untuk pandangan pertama, storan Awan Google adalah penyelesaian yang cukup baik, tetapi selepas mencipta baldi, dan meneruskan tutorial lengkap, saya faham bahawa mendayakan https bukanlah mudah (menggunakan pengimbang beban dan sebagainya) tidak murah (ituâàÃÂs $0.025 setiap 5 peraturan pertama sejam =>$18 sebulan) Hanya menggunakan Google Cloud Run untuk beberapa API dan ia dibayar hanya untuk masa/CPU/RAM yang digunakan, tetapi sekiranya tapak web yang tidak begitu aktif, Tahap Percuma pun sudah cukup untuk mengehoskan sesetengah tapak web secara mutlak. secara percuma Selepas membaca dokumentasi, ia kelihatan sangat mudah, malah anda tidak perlu menyediakan bukti kelayakan secara manual di dalam kejadian kontena Cloud Run (diurus sepenuhnya) apabila menggunakan perpustakaan klien GCP! P.S.: jika anda hanya mahukan kod akhir untuk menggunakan bekas anda sendiri, sila lawati github.com/kanocz/gclwebgcs Mula-mula kita perlu mendengar pada port yang disediakan oleh Pembolehubah env PORT: http.ListenAndServe + os.Getenv(âÃÂÃÂPORT nol) Melalui GCS env kami akan menentukan nama baldi Storan Awan Google (perlu berada dalam projek yang sama ctx : = context.Background() client, err := storage.NewClient(ctx) baldi = client.Bucket(os.Getenv(âÃÂÃÂGCS Dan membaca objek untuk dihantar: obj := bucket.Object(r.URL.Path[1 // strip firstobjAttrs, err := obj.Attrs(ctx) obj = obj.ReadCompressed(true) // kita donâÃÂàtidak mahu menyahmampat dan memampatkannya sekali lagi untuk pemindahan // salin pengepala w.HeaderSet(âÃÂÃÂContent-TypeâÃÂÃÂ, objAttrs.ContentType) w.HeaderSet(âÃÂÃÂContent-EncodingâÃÂÃÂ, objAttrs.ContentEncoding) w.HeaderSet(âÃÂàPanjang KandunganâÃÂÃÂ, strconv.Itoa(int(objAttrs.Size w.HeaderSet(âÃÂÃÂContent-DispositionâàÃÂ, objAttrs.ContentDisposition) w.HeaderSet(âÃÂÃÂCache-ControlâÃÂÃÂ, objAttrs.CacheControl) w.HeaderSet(à ¢ÃÂÃÂETagâÃÂÃÂ, objAttrs.Etag) // dan hantar pembaca data, err := obj.NewReader(ctx) io.Copy(w, pembaca) Sebenarnya untuk melayani laman web kami juga memerlukan indeks pelayan, mengendalikan ralat yang tidak ditemui dan sebagainya, tetapi ia juga tidak begitu rumit Jangan lupa buat go.mod untuk membantu Google Cloud Build :) Daripada penggunaan ke pendaftaran kontena itu sahaja gcloud builds submit --tag gcr.io/project1/gclwebgcs (sila ganti projek1 dengan nama projek anda) dan cipta/kemas kini perkhidmatan menggunakan gcloud beta run deploy --image gcr.io/project1/gclwebgcs \ --platform managed --set-env-vars=GCS=GCSbucketName serviceName Jangan lupa muat naik fail ke GCSbucketName dalam projek yang sama dan berikan nama domain kepada perkhidmatan baharu, sijil ssl akan diberikan dan diuruskan secara automatik! Itu sahaja :)