Nek kowe tambah tuwa, kowe rapopo. Ora pengin njaga siji server luwih akeh kanggo dadi tuan rumah sawetara situs lan blog kaya iki, ngawasi yen sertifikat enkripsi bisa dianyari sanajan ing situs lawas sing lawas lan liya-liyane. kula :) Lan aku mutusaké kanggo pindhah menyang sawetara platform full-ngatur. Kanggo pisanan, panyimpenan Google Cloud minangka solusi sing cukup apik, nanging sawise nggawe ember, lan bakal mbuwang tutorial lengkap, aku ngerti manawa ngaktifake https ora bakal gampang (nggunakake load balancer lan liya-liyane) ora murah (iku $0,025 saben 5 aturan pisanan saben jam =>$18 saben sasi) Mung nggunakake Google Cloud Run kanggo sawetara API lan dibayar mung kanggo wektu / CPU / RAM sing digunakake, nanging yen situs web ora aktif, malah Tier Gratis cukup kanggo dadi tuan rumah sawetara situs web. gratis Sawise maca dokumentasi katon gampang banget, sampeyan ora perlu menehi kredensial kanthi manual ing Cloud Run (dikelola kanthi lengkap) nalika nggunakake perpustakaan klien GCP! P.S.: yen sampeyan mung pengin kode pungkasan kanggo nyebarke wadhah sampeyan, bukak github.com/kanocz/gclwebgcs Pisanan kita kudu ngrungokake port sing diwenehake dening PORT env variabel: http.ListenAndServe + os.Getenv(âÃÂÃÂPORT nol) Liwat GCS env kita bakal nemtokake jeneng bucket Google Cloud Storage (kudu ana ing proyek sing padha ctx: = context.Background() klien, err:= storage.NewClient(ctx) bucket = klien.Bucket(os.Getenv(âÃÂÃÂGCS Lan maca obyek kanggo ngirim: obj := bucket.Object(r.URL.Path[1 // strip firstobjAttrs, err:= obj.Attrs(ctx) obj = obj.ReadCompressed(true) // we donâÃÂàOra pengin decompress lan kompres maneh kanggo transfer // nyalin header w.HeaderSet(âÃÂÃÂContent-TypeâÃÂÃÂ, objAttrs.ContentType) w.HeaderSet(âÃÂÃÂContent-EncodingâÃÂÃÂ, objAttrs.ContentEncoding) w.HeaderSet(âÃÂàLength-KontenâÃÂÃÂ, strconv.Itoa(int(objAttrs.Size w.HeaderSet(âÃÂÃÂContent-DispositionâàÃÂ, objAttrs.ContentDisposition) w.HeaderSet(âÃÂÃÂCache-ControlâÃÂÃÂ, objAttrs.CacheControl) w.HeaderSet(â ¢ÃÂÃÂETagâÃÂÃÂ, objAttrs.Etag) // lan ngirim maca data, err := obj.NewReader(ctx) io.Copy(w, maca) Pancen kanggo nglayani situs web kita uga mbutuhake indeks server, nangani kesalahan sing ora ditemokake lan liya-liyane, nanging uga ora rumit. Aja lali nggawe go.mod kanggo mbantu Google Cloud Build :) Tinimbang penyebaran menyang registri wadhah mung gcloud mbangun submit --tag gcr.io/project1/gclwebgcs (monggo ganti project1 nganggo jeneng proyek sampeyan) lan nggawe / nganyari layanan nggunakake gcloud beta run deploy --image gcr.io/project1/gclwebgcs \ --platform managed --set-env-vars=GCS=GCSbucketName serviceName Aja lali upload file menyang GCSbucketName ing proyek sing padha lan nemtokake jeneng domain menyang layanan anyar, sertifikat ssl bakal diwenehake lan dikelola kanthi otomatis! Kuwi kabeh :)