Kapag tumatanda ka na at tumatanda ka na. ÂAyokong magpanatili ng isang server pa upang mag-host ng ilang mga site at blog na tulad nito, subaybayan kung hinahayaan ang pag-encrypt ng certificate na ma-renew kahit na sa mga lumang lumang site at iba paâÃÂæ at least ito ay totoo para sa ako :) At nagpasya akong ilipat ito sa ilang ganap na pinamamahalaang platform. Para sa unang hitsura, ang Google Cloud storage ay sapat na solusyon, ngunit pagkatapos gumawa ng bucket, at maghagis ng kumpletong tutorial naiintindihan ko na ang pagpapagana ng https ay hindi magiging madali (gamit ang load balancer at iba pa) ni mura (itoâàÃÂs $0.025 bawat unang 5 panuntunan kada oras =>$18 bawat buwan) Ginamit lang ang Google Cloud Run para sa ilang mga API at ito ay binabayaran para lamang sa nagamit na oras/CPU/RAM, ngunit sa kaso ng hindi masyadong aktibong website kahit na ang Libreng Tier ay sapat na upang ganap na mag-host ng ilang website libre Pagkatapos basahin ang dokumentasyon, mukhang napakasimple lang nito, kahit na hindi mo na kailangang manual na magbigay ng mga kredensyal sa loob ng Cloud Run (ganap na pinamamahalaan) na mga instance ng container kapag ginagamit ang mga library ng GCP client! P.S.: kung gusto mo lang bigyan ka ng final code na i-deploy ang sarili mong container, pakibisita ang github.com/kanocz/gclwebgcs Una kailangan nating makinig sa port na ibinigay ni variable ng PORT env: http.ListenAndServe + os.Getenv(âÃÂÃÂPORT nil) Sa pamamagitan ng GCS env tutukuyin namin ang pangalan ng bucket ng Google Cloud Storage (kailangang nasa parehong proyekto ctx : = context.Background() client, err := storage.NewClient(ctx) bucket = client.Bucket(os.Getenv(âÃÂÃÂGCS At pagbabasa ng bagay na ipapadala: obj := bucket.Object(r.URL.Path[1 // strip firstobjAttrs, err := obj.Attrs(ctx) obj = obj.ReadCompressed(true) // we donâÃÂàayokong i-decompress at i-compress itong muli para sa paglipat // kopyahin ang mga header w.HeaderSet(âÃÂÃÂContent-TypeâÃÂÃÂ, objAttrs.ContentType) w.HeaderSet(âÃÂÃÂContent-EncodingâÃÂÃÂ, objAttrs.ContentEncoding) w.HeaderSet(âÃÂàContent-LengthâÃÂÃÂ, strconv.Itoa(int(objAttrs.Size w.HeaderSet(âÃÂÃÂContent-DispositionâàÃÂ, objAttrs.ContentDisposition) w.HeaderSet(âÃÂÃÂCache-ControlâÃÂÃÂ, objAttrs.CacheControl) w.HeaderSet(à ¢ÃÂÃÂETagâÃÂÃÂ, objAttrs.Etag) // at magpadala ng data reader, err := obj.NewReader(ctx) io.Copy(w, mambabasa) Talagang para sa paghahatid ng website nangangailangan din kami ng index ng server, pangasiwaan ang hindi nahanap na mga error at iba pa, ngunit hindi rin ito masyadong kumplikado. Huwag kalimutang gumawa go.mod para matulungan ang Google Cloud Build :) Kaysa sa deployment sa container registry lang gcloud builds submit --tag gcr.io/project1/gclwebgcs (pakipalitan project1 kasama ang iyong pangalan ng proyekto) at gumawa/mag-update ng serbisyo gamit ang gcloud beta run deploy --image gcr.io/project1/gclwebgcs \ --platform managed --set-env-vars=GCS=GCSbucketName serviceName Huwag kalimutang mag-upload ng mga file sa GCSbucketName sa parehong proyekto at magtalaga ng domain name sa bagong serbisyo, ang ssl certificate ay ibibigay at awtomatikong pamamahalaan! Yan lang :)