CLOUD HACK: Sådan gør du produktion klar GRATIS statisk webstedshosting

Denne artikel leder dig gennem alt, hvad du skal gøre for at få dit statiske websted hostet og produktion klar.

Det vil støtte en vanvittig mængde trafik og koster dig intet!

Sammen vil vi fikle med DNS-poster og nogle andre ting på lavt niveau, men det er lettere, end det lyder - og det er absolut værd.

Jeg kunne ikke finde ud af en måde at få et gratis domænenavn på, så i ånden af ​​ægte gennemsigtighed skulle jeg sige, at du bliver nødt til at betale for det.

Introduktion

Vi får Google og CloudFlare til at udføre den tunge løft for os, så vi bliver bare nødt til at opbygge webstedet og indstille alt.

I denne artikel vil vi:

  • Opret et Google App Engine-projekt
  • Distribuer et websted til skyen
  • Få vores eget domænenavn
  • Indstil vores eget domænenavn med CloudFlare
  • Gå rundt med DNS-indstillingerne for at pege domænet til vores websted
  • Konfigurer cache og HTTPS på domænet for at understøtte massiv skala

Det lyder hårdt, især hvis du ikke er vant til disse udtryk, men vi går gennem hvert trin sammen.

Overvej venligst at dele dette på sociale medier til andre, der måtte synes det er nyttigt, eller send linket til alle, du kender, som betaler for statisk webstedshosting.

Hvad er Google App Engine?

Google App Engine er en tjeneste fra Google, der giver dig mulighed for at opbygge og være vært for komplicerede webapplikationer, der kører i ekstremt høj skala. Du kan interagere med hundreder af API'er for at løse alle former for tekniske udfordringer som lagring af data, kørsel af forespørgsler, køarbejde, levering af maskinlæringsfunktioner, afsendelse af e-mail… oh yeah og servering af HTML og CSS.

Den gratis kvote på Google App Engine betyder, at dit websted kan modtage en vis mængde trafik, før du skal begynde at betale for det; men faktisk vil vi ikke komme nogen steder i nærheden takket være CloudFlare.

Hvad er CloudFlare?

CloudFlare er temmelig svært at beskrive, men til vores formål kan du tænke på det som en fantastisk (og gratis) cache-indhold til indhold, hvor CloudFlare-serverne vil have en kopi af dit websted og servere det direkte til dine besøgende. Det er værd at bemærke, at CloudFlare gemmer mange kopier af indholdet på centrale placeringer overalt i verden, så besøgende 'browsere ikke behøver at nå meget langt på Internettet for at få det.

På websteder, der ikke ændres ofte, kan du indstille cache-politikkerne til at være temmelig aggressive - så dit Google App Engine-projekt ender næppe med at modtage mange anmodninger overhovedet. Hvis du opdaterer dit websted, bliver du enten nødt til bare at vente på, at cachen udløber, eller manuelt renser det (jeg forklarer, hvordan senere).

TRIN 1: Byg dit websted

Den første ting at gøre er at bygge din hjemmeside. Gør dette ved hjælp af de værktøjer, du er vant til, målet er at ende med en mappe, der indeholder hele dit websted. Det kan ikke indeholde noget dynamisk indhold, så CGI-scripts, .aspx-sider, Ruby on Rails-kode osv. Er alt fra bordet. Statiske websteder er normalt kun HTML, CSS, JavaScript-filer, billeder osv.

Sørg for, at den har en side index.html

Når besøgende rammer dit domænenavn uden sti, vises siden index.html, så sørg for, at dette findes.

Læg alt inde i en www-mappe

Vi vil tilføje en mappe, der indeholder vores statiske websted, så strukturen i vores projekt ser sådan ud:

Læg hele websitet i en mappe

Du skal ikke bekymre dig om den app.yaml-fil senere; vi tilføjer det snart.

Du kan tænke på mappen www som det, der vil blive serveret, når dine besøgende går til mywebsite.com.

TRIN 2: Distribuer til Google App Engine

Nu har du dit websted, det er tid til at implementere det på Google App Engine.

Log ind på Google Cloud Platform-konsollen

Gå over til https://console.cloud.google.com, og log ind med din Google-konto.

Opret et projekt

Vælg Opret projekt i menuen, og vælg et passende projektnavn, der reflekterer dit domænenavn. Så hvis dit domæne er matswebsite.com, kan du måske kalde dette projekt Mats websted. Det genererer automatisk et projekt-id til dig, men du kan klikke på det lille Rediger-link for at ændre det og vælge dit eget. Vi bruger dette projekt-id senere, så gør det rart og nemt at huske. Projekt-id'et skal være globalt unikt, hvorfor brug af dit domæne ikke er en dårlig idé, f.eks. matswebsitecom.

Klik på Opret.

Oprettelse af et projekt på Google Cloud Platform

Efter kort tid oprettes projektet, og vi kan aktivere Google App Engine.

Åbn menuen (klik på de tre linjer i øverste venstre hjørne), og vælg App Engine for at få adgang til App Engine-konsollen.

Installer Google Cloud SDK

Gå over til https://cloud.google.com/sdk/, og download Google Cloud SDK til din computer. SDK indeholder kommandolinjeværktøjer, som vi kan bruge til at implementere dit websted.

Tilføj en app.yaml-fil

For at fortælle Google App Engine, hvordan vi ønsker, at vores websted skal implementeres, er vi nødt til at oprette en lille konfigurationsfil i rodmappen på vores websted.

Indsæt følgende i den nye fil:

runtime: gå
api_version: go1
handlere:
- url: /
  static_files: www / index.html
  upload: www / index.html
- url: /(.*)
  static_files: www / \ 1
  upload: www /(.*)

I YAML-filer er det mellemrum vigtigt, så sørg for, at der er to mellemrum inden static_files og uploadlinjer.

Du kan lære mere om app.yaml-filen ved at læse dokumentationen, i øjeblikket er det nok at vide, at vi statisk betjener indholdet fra mappen www.

Tilføj en main.go-fil

For at vores projekt skal være et gyldigt Go-projekt, skal vi tilføje nogle Go-kode. Bare rolig, jeg giver dig det absolut nødvendige antal mængder kode.

Opret en fil i din mappe (ved siden af ​​app.yaml-filen) kaldet main.go og indsæt følgende kode:

pakke-app
func main () {}
Hvis du ikke har hørt om Go før, vil jeg varmt anbefale at se på det - det er et sjovt og ekstremt nyttigt sprog: Hvorfor ikke tage turen?

Indsætte

I en terminal shell skal du først bruge gcloud-kommandoen (fra Google Cloud SDK) til at logge ind:

gcloud autor login
Hvis du sidder fast her, skal du gå til Quickstart-guiden for at få hjælp.

Dette åbner en webbrowser og beder dig om at logge ind på din Google-konto. Når det er gjort, vil terminalen indikere, at login var vellykket.

Nu cd til din webstedsmappe, så at gøre ls eller dir viser www-mappen på listen.

Indstil nu projektnavnet:

gcloud config sæt projekt PROJECT_ID

Udskift PROJECT_ID med det projekt-ID, du opsatte, da du oprettede dit projekt i Google Cloud Console.

Nu vil vi starte implementeringen:

implementering af gcloud-app

Hvis Google Cloud SDK har brug for yderligere komponenter (for mig havde det brug for app-engine-go), bliver du bedt om at installere dem. Svar Y (for ja) for hvert spørgsmål.

Endelig vil det spørge dig, om du vil installere appen - tryk på Y og indtast igen.

Efter et stykke tid vil applikationen blive distribueret og tilgængelig via appspot.com-domænet:

https://PROJECT_ID.appspot.com
Husk at erstatte PROJECT_ID med dit projekt-ID.

TRIN 3: Indstil dit domænenavn

Vælg og køb et domæne

For at besøgende kan se dit websted, skal de besøge et domænenavn - og selvom du kunne bruge den appspot.com, som Google App Engine giver dig gratis, er det meget pænere at have dit eget.

Gå over til namecheap.com, eller søg efter et firma, der sælger domænenavne og købe dit domæne. Du skal være i stand til at ændre navneservere, så sørg for, at virksomheden understøtter dette (Namecheap gør).

Opsætning CloudFlare

Gå til CloudFlare.com og opret en konto. Vælg derefter Tilføj websted i menulinjen øverst. Indtast dit domæne, og klik på Start scanning. Når det er færdig med at gøre det, er det gud-ved-hvad magi, klik på Fortsæt installation og følg de resterende trin, klik på Fortsæt, hvor du kan, indtil du kommer til siden Vælg en CloudFlare-plan.

Vælg den GRATIS plan, og klik på Fortsæt.

Den gratis webstedsplan har alt, hvad vi har brug for - CloudFlare er temmelig generøse.

Du bliver derefter bedt om at opdatere dine navneservere, så gå tilbage til det sted, hvor du købte dit domænenavn, og indtast de værdier, du har fået af CloudFlare.

For at dirigere trafik gennem CloudFlare, er vi nødt til at opdatere navneserverne. CloudFlare fortæller dig, hvilke værdier du skal bruge.

I Namecheap skal du gå til Dashboard og klikke på MANAGE ud for dit domæne. Kig derefter efter NAMESERVERS og vælg Custom DNS. Kopier og indsæt navneserverne i de to medfølgende felter:

Med Namecheap kan du specificere dine egne navneservere. Husk at klikke på det lille grønne markering for at bekræfte dine ændringer.

Når du har gjort dette, skal du klikke på Fortsæt i CloudFlare og vente. Det kan tage nogen tid, før ændringerne træder i kraft, så gå og tag en kop te eller anden passende (eller upassende) drik.

Til sidst vil den blive grøn (du kan opdatere så mange gange, som du vil):

Når navneserverne er opdateret, vil dit websted være live i CloudFlare.

Fortæl App Engine om dit domæne

Tilbage i Google Cloud Console, adgang til App Engine-konsollen igen og vælg Indstillinger.

Vælg Tilføj et tilpasset domæne under fanen Brugerdefinerede domæner.

Du skal bekræfte, at du ejer domænet, før du kan bede Google App Engine om at servere indhold til det - gør dette ved at vælge Bekræft et nyt domæne fra listen og indtaste det i det medfølgende felt.

Klik på Verify udløser en ny proces, hvor vi kan bevise, at vi ejer og kontrollerer dette domænenavn. I det nye vindue skal du vælge navnet på din udbyder (forhåbentlig Namecheap - da det er let) og bemærke, at du bliver bedt om at tilføje en TXT DNS-post:

For at bevise for Google, at vi kontrollerer et domænenavn, skal vi tilføje en speciel DNS-kode, som de leverer.

Bare rolig - det er ikke så skræmmende, som det ser ud til. Vælg den underlige tekst inde i boksen, kopier den og gå tilbage til CloudFlare, så tilføjer vi værdien.

Sørg for, at dit domæne er valgt i CloudFlare, og vælg fanen DNS.

Øverst på tabellen er der en form, hvor vi kan tilføje den post, som Google ønsker:

I feltet Navn skal du indtaste et @-tegn, og indsætte den værdi, som Google gav os for indholdet. Klik på Tilføj post.

Det vil blive føjet til listen over DNS-poster.

Gå nu tilbage til Google Cloud Platform og klik på Bekræft.

Dette kan tage lidt tid - så bliv ikke forstyrret, hvis det ikke fungerer med det samme. Så længe du har indsat den korrekte værdi i CloudFlare, opdateres den til sidst. Du venter faktisk på, at DNS-servere skal propagere, hvilket lyder mere magisk end det er - men uanset hvad, hvis du ikke ønsker at vente, kan du overveje at bruge Googles offentlige DNS-servere, de er meget hurtige.

Endelig får du successiden ovenfor.

Tilbage i Google Cloud Console> App Engine> Indstillinger> Tilpassede domæner, klik på Opdater domæner og bemærk, at dit domæne nu er en mulighed på rullelisten. Marker det, og klik på Fortsæt, og klik derefter på Gem kortlægning.

Efter et øjeblik skal du klikke på Fortsæt igen og bemærke, at Google App Engine nu giver os nye DNS-indstillinger. Vi er nødt til at sikre, at vores CloudFlare DNS-side har de samme værdier.

Google vil have, at vi lægger hver af disse værdier i CloudFlare-konsollen - en smule kopiering og indsætning skader aldrig nogen, ikke?

Tilbage i CloudFlare skal du trykke på X ud for alle DNS-poster undtagen den TXT, vi tilføjede (vi overlader det der, så Google ved, at vi altid kontrollerer dette domæne).

Opret nu en post i CloudFlare for hver artikel på Google-siden. Dette er det sværeste, vi har at gøre, så læs først disse tip:

  • TXT-dropdown er det sted, hvor du specificerer typen (Du skal bruge A, AAAA og CNAME)
  • I Google App Engine er Alias-feltet navnet i Cloudflare. Hvis der ikke er noget alias, skal du bruge @ -tegnet igen. (Du kan også lade det være tomt, og CloudFlare vil vide, hvad du mener - eller det vil bede dig om at indstille det til @)
  • Lad TTL være som automatisk TTL
  • CloudFlare ved, hvad det laver, og det er svært at lave en fejl - så kopier og indsæt hver værdi og stol på CloudFlare til at fortælle dig, hvis du rodet
  • Vær opmærksom på yderligere hvidafstand, når du kopierer og indsætter, det kan forårsage en valideringsfejl, men det er svært at se

Det vil ende med at se sådan ud:

Tilbage i Google App Engine skal du klikke på Udført.

Giv internettet tid til at indhente

For at dit domæne skal fungere, skal internettet indhente disse ændringer. De siger, at dette kan tage 24 timer, men hvis du bruger Googles DNS-servere, er det normalt temmelig øjeblikkeligt.

Mens du venter, kan du aktivere aggressiv cache og HTTPS på CloudFlare.

TRIN 4: Opsætning af cache og HTTPS

Tricket til at holde den statiske hosting fri, uanset hvor meget trafik du får, er at aktivere cache i CloudFlare.

Klik på fanen Sideregler, og klik på Opret sideregel.

Indtast dit domæne i feltet URL-match i formularen: * .mywebsite.com / * - hvilket angiver, at reglen skal gælde uanset underdomænet og uanset stien.

I indstillingen skal du vælge Edge Cache TTL og indstille værdien til en måned. Klik på Gem og implementer.

Indstilling af Edge Cache TTL til en måned vil (i teorien) medføre, at vores Google App Engine-websted kun bliver ramt en gang om måneden. Resten af ​​tiden vil CloudFlears kant-CDN tjene det. Det er klart, at dette er aggressivt - du kan lege med indstillingerne for at finde de rigtige værdier for dig.

For at gøre vores websted tilgængeligt via HTTPS, tilføjer vi en anden sideregel:

Denne gang skal du sætte URL-matchværdien som: http: //*.mywebsite.com/*

Ved hjælp af en sidestyre i CloudFlare kan vi fortælle den at altid bruge HTTPS til vores websted.

Vælg Brug altid HTTPS fra listen, og klik på Gem og implementer.

Du kan valgfrit tilføje en videresendelses-URL for at sikre, at al trafik dirigeres til enten www.mywebsite.com eller mywebsite.com.

Dette er de endelige sideregler for honorablecode.com

Rengør cachen, når du vil

Hver gang du foretager ændringer på dit websted, skal du nippe til CloudFlare-konsollen, åbne fanen Cache og vælge Rens alt fra rullemenuen:

Nye anmodninger om dit websted går nu til Google App Engine, og den seneste version vil blive serveret (og cachelagret af CloudFlare til fremtidige anmodninger).

Din hjemmeside er live!

Når DNS-serverne har indhentet, vil dit sikre gratis statiske websted være online.

Konklusion

Bare ved at bruge de GRATIS muligheder for Google App Engine og CloudFlare og en lille smule DNS-magi, er vi i stand til at være vært for vores produktionsklare statiske webside uden omkostninger.

Vi var i stand til:

  • Opret et Google App Engine-projekt
  • Distribuer et websted til skyen
  • Få vores eget domænenavn
  • Indstil vores eget domænenavn med CloudFlare
  • Gå rundt med DNS-indstillingerne for at pege domænet til vores websted
  • Konfigurer cache og HTTPS på domænet for at understøtte massiv skala

Godt arbejde.

Køb min bog

I teorien har jeg lige sparet dig masser af penge, så hvorfor ikke sige tak ved at købe min bog. :)

Hvis du kan lide at få ting gjort, som i denne artikel, vil du elske, hvad du kan gøre med Go. I min bog Go Programming Blueprints bygger vi rigtige ting. Bøj dine dev muskler.

Hent din kopi fra https://www.packtpub.com/application-development/go-programming-blueprints-second-edition

Tweet mig også @matryer, hvis du sidder fast, så ser jeg, om jeg kan hjælpe.