Natrag na blog

Postavljanje Go web aplikacije pomoću Nginxa na Ubuntu 22.04

Postavljanje Go web aplikacije pomoću Nginxa na Ubuntu 22.04

Go je open-source programski jezik opće namjene. Inspiriran je produktivnošću Python dok istovremeno nudi mogućnosti jezika C. Izvorno ga je razvio Google kako bi riješio probleme s kojima su se susretali u svojoj bazi koda (složenost koda i dugo vrijeme kompilacije). Kao i svaki drugi moderni programski jezik, Go je prikladan za sve vrste namjena. Na primjer, može se koristiti za web razvoj, skriptiranje naredbenog retka, mrežne poslužiteljske aplikacije, front-end razvoj itd.

U ovom vodiču, mi provest ćemo vas kroz korake postavljanja jednostavne Go web aplikacije na Ubuntu 22.04 LTS. Također ćemo implementirati Nginx reverzni proxy za upravljanje opterećenjem prometa.

Preduvjeti

Za izvođenje koraka prikazanih u ovom vodiču, trebat će vam sljedeće unaprijed konfigurirane komponente:

Ako usluga treba biti dostupna putem naziva domene, tada morate imati FQDN usmjeren na poslužitelj. U tom slučaju, preporučuje se osigurati Nginx pomoću SSL-a. Možete saznati više o osiguravanju Nginxa s Let’s Encrypt na Ubuntuu iz našeg vodiča.

Korak 1 – Stvaranje Go web aplikacije

Izgradit ćemo jednostavnu Go web aplikaciju koja će ispisati “Hello World” na zaslonu prilikom pristupa domeni. Nadalje, aplikacija će pozdraviti korisnika prilikom pristupa <domena>/greet/<korisničko_ime>.

Započnite stvaranjem novog projekta pod $GOPATH. Stvorite direktorij projekta:

Go Web Application Make Dir

Promijenite trenutni direktorij:

Go Web Application Change Dir

Zatim pokrenite projekt:

Go Web Application Init Project

Zatim stvorite main.go koji će služiti kao korijen naše Go aplikacije. Sadržavat će izvorni kod za našu web aplikaciju:

Otvorite projekt u VS Codeu:

Zalijepite sljedeći kod u datoteku main.go:

Go Web Application Main Go

Pogledajmo ukratko strukturu Go programa koji smo upravo stvorili:

  • Pojam package main služi kao ulazna točka u našu aplikaciju. Također upućuje Go prevoditelj da kompajlira datoteku kao izvršnu datoteku umjesto kao dijeljenu biblioteku.
  • Naredba import uvozi sve dodatne module potrebne za rad programa. Ovdje smo uvezli pakete fmt (za ispis teksta) i net/http (za web poslužiteljske aplikacije).
  • Pomoću funkcije http.HandleFunc, uspostavili smo dvije rute:
    • Prva ruta / služi kao nadređena ruta unutar func main.
    • Druga ruta /greet/ prihvaća URL parametar (u ovom slučaju niz znakova). Niz se zatim prikazuje popraćen porukom pozdrava.
      • URL Putanja se koristi za pohranjivanje vrijednosti nakon /greet/. Vrijednost se zatim prosljeđuje kao name URL parametra.
    • Funkcija http.ListenAndServe pokreće web poslužitelj. Ovdje sluša na portu 9990.

Sada kada je naš program spreman, kompajlirajte datoteku u izvršnu datoteku:

Go prevoditelj će stvoriti izvršnu datoteku s istim nazivom kao i datoteka. Pogledajte izlaz:

Go Web Application ls -lh

Korak 2 – Konfiguriranje systemd unit datoteke za izvođenje u pozadini

Do sada, ako se trenutni korisnik odjavi iz sustava, Go web aplikacija će prestati raditi. To je loš dizajn za web poslužitelj. Kako bismo riješili ovaj problem, stvorit ćemo systemd unit datoteku kako bi nastavila raditi u pozadini, čak i kada se korisnik odjavi s poslužitelja. To dovodi konfiguraciju korak bliže implementaciji spremnoj za produkciju.

Stvorite namjensku systemd datoteku goweb.service pod /lib/systemd/system:

Dodajte sljedeći isječak u unit datoteku:

go web service

Ovdje,

  • Varijabla ExecStart označava točku ulaza za uslugu putem glavne izvršne datoteke koja se nalazi u našem direktoriju projekta ( $GOPATH/go-web). Imajte na umu da smo umjesto navođenja $GOPATH, upisali punu putanju do izvršne datoteke. To je zato što je varijabla $GOPATH vidljiva samo korisniku.
  • Varijabla Restart govori systemd što učiniti u slučaju da program prestane raditi. Vrijednost always govori systemd da ponovno pokrene program svaki put kada prestane s radom.
  • Varijabla RestartSec govori systemd da pričeka određeno vrijeme prije pokušaja ponovnog pokretanja programa. Ovdje je vrijednost postavljena na 5s (5 sekundi).
  • Izjava WantedBy=multi-user.target određuje u kojem će stanju systemd omogućiti uslugu.

Spremite datoteku i zatvorite uređivač. Pokrenite uslugu:

go web start

Provjerite radi li usluga:

go web status

Kao što izlaz sugerira, aplikacija je pokrenuta i radi. Sada smo spremni koristiti Nginx kao obrnuti proxy.

Korak 3 – Konfiguriranje Nginxa kao obrnutog proxyja

Sada ćemo stvoriti blok poslužitelja kako bi Nginx djelovao kao obrnuti proxy. Web aplikacija će biti izložena internetu putem obrnutog proxyja (za dodatne performanse i sigurnost).

Promijenite trenutni aktivni direktorij u sites-available:

cd

Sada stvorite datoteku s nazivom domene na kojoj želite izložiti svoju aplikaciju. Za demonstraciju ćemo koristiti example.com:

 

Unesite sljedeći kod u datoteku bloka:

example.com

Ovdje koristimo proxy_pass za posluživanje Go web aplikacije na IP adresi poslužitelja (localhost) na portu 9990.

Da biste omogućili Nginx blok, stvorite simboličku poveznicu (također poznatu kao soft link) datoteke u mapu sites-enabled:

create sym

Ponovno učitajte Nginx konfiguraciju kako bi promjene stupile na snagu:

reload nginx

Korak 4 – Provjera

Ako je sve prošlo kako se očekivalo, web aplikacija bi sada trebala biti dostupna na localhost:9990 i domeni koju smo konfigurirali. Otvorite URL u web pregledniku:

Hello World

Kao što se i očekivalo, aplikacija ispisuje “Hello World” na zaslonu. To je zadatak primarne rute. Zatim testirajte drugu rutu posjetom sljedećem URL-u:

Hello Cloud

Aplikacija uspješno vraća jednostavnu poruku pozdrava s imenom iz parametra primljenog iz URL-a.

Voila! Uspješno smo postavili Go web aplikaciju na naš lokalni poslužitelj!

Završne misli

U ovom smo vodiču prikazali postavljanje jednostavne Go web aplikacije uz pomoć standardnih Go knjižnica. Također smo postavili reverzni proksi koristeći Nginx. Iako je demonstracija izvedena na lokalnom poslužitelju, za javni poslužitelj strogo se preporučuje implementirati SSL certifikat za sigurno izlaganje internetu. Za više Go programiranja, možete pogledati naš vodič o Izgradnji i instalaciji Go programa.

Sretno programiranje!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.