Vissza a bloghoz

Go webalkalmazás üzembe helyezése Nginx használatával Ubuntu 22.04 rendszeren

Go webalkalmazás üzembe helyezése Nginx használatával Ubuntu 22.04 rendszeren

Go egy nyílt forráskódú, általános célú programozási nyelv. A Python termelékenysége ihlette, miközben a C képességeit nyújtja. Eredetileg a Google fejlesztette ki, hogy megoldja a kódbázisukkal kapcsolatos problémákat (kódkomplexitás és hosszú fordítási idő). Mint minden más modern programozási nyelv, a Go is alkalmas mindenféle célra. Használható például webfejlesztésre, parancssori szkriptelésre, hálózati szerveralkalmazásokhoz, front-end fejlesztéshez stb.

Ebben az útmutatóban végigvezetjük egy egyszerű Go webalkalmazás Ubuntu 22.04 LTS rendszeren történő telepítésének lépésein. Egy Nginx fordított proxyt is beállítunk a forgalom kezelésére.

Előfeltételek

Az ebben az útmutatóban bemutatott lépések végrehajtásához a következő összetevőkre lesz szüksége előre konfigurálva:

Ha a szolgáltatásnak tartománynéven keresztül kell elérhetőnek lennie, akkor egy FQDN-nek a szerverre kell mutatnia. Ebben az esetben javasolt az Nginx biztosítása SSL-lel. További információt talál az Nginx Let’s Encrypt segítségével történő biztosításáról Ubuntu-n a leírásunkból.

1. lépés – Go webalkalmazás létrehozása

Egy egyszerű Go webalkalmazást fogunk készíteni, amely a “Hello World” szöveget írja ki a képernyőre a tartomány elérésekor. Ezenkívül az alkalmazás üdvözli a felhasználót, ha a <domain>/greet/<username>.

Kezdje egy új projekt létrehozásával a $GOPATH alatt. Hozza létre a projekt könyvtárát:

Go Web Application Make Dir

Váltson át az aktuális könyvtárra:

Go Web Application Change Dir

Ezután indítsa el a projektet:

Go Web Application Init Project

Ezután hozza létre a main.go fájlt, amely a Go alkalmazásunk gyökereként fog szolgálni. Ez fogja tartalmazni a webalkalmazásunk forráskódját:

Nyissa meg a projektet VS Code-ban:

Illessze be a következő kódot a main.go:

Go Web Application Main Go

Nézzük meg röviden a most létrehozott Go program felépítését:

  • A package main kifejezés szolgál az alkalmazásunk belépési pontjaként. Emellett arra is utasítja a Go fordítót, hogy a fájlt futtatható állományként fordítsa le, ne pedig megosztott könyvtárként.
  • Az import utasítás importálja a program működéséhez szükséges összes további modult. Itt importáltuk a fmt (szövegek kiírásához) és net/http (webes szerveralkalmazásokhoz) csomagokat.
  • A http.HandleFunc függvénnyel két útvonalat határoztunk meg:
    • Az első útvonal a / szülő útvonalként szolgál a func main.
    • A második útvonal a /greet/ egy URL paramétert fogad el (ebben az esetben egy karakterláncot). A karakterlánc ezután az üdvözlő üzenet kíséretében jelenik meg.
      • URL Path az ezután következő érték tárolására szolgál: /greet/. Az érték ezután átadásra kerül mint name az URL paraméter neveként.
    • A http.ListenAndServe függvény indítja el a webszervert. Itt a következő portot figyeli: 9990.

Most, hogy a programunk elkészült, fordítsa le a fájlt egy futtatható állománnyá:

A Go fordító egy olyan futtatható fájlt hoz létre, amelynek neve megegyezik a fájl nevével. Ellenőrizze a kimenetet:

Go Web Application ls -lh

2. lépés – Egy systemd egységfájl (Unit File) konfigurálása a háttérben történő futtatáshoz

Eddig, ha az aktuális felhasználó kijelentkezett a rendszerből, a Go webalkalmazás futása leállt. Ez egy webszerver esetében nem túl szerencsés kialakítás. A probléma megoldására létrehozunk egy systemd egységfájlt (unit file), hogy a háttérben fusson, még akkor is, ha a felhasználó kijelentkezik a szerverről. Ez egy lépéssel közelebb hozza a konfigurációt az éles környezetben használható telepítéshez.

Hozzon létre egy dedikált systemd fájlt goweb.service a következő helyen: /lib/systemd/system:

Adja hozzá a következő részletet az egységfájlhoz:

go web service

Itt,

  • A ExecStart változó határozza meg a szolgáltatás belépési pontját a projektkönyvtárunkban található fő futtatható fájlon keresztül ( $GOPATH/go-web). Vegye figyelembe, hogy a $GOPATH megadása helyett a futtatható fájl teljes útvonalát írtuk be. Ez azért van, mert a $GOPATH változó csak a felhasználó számára látható.
  • A Restart változó megmondja a systemd számára, hogy mit tegyen, ha a program leáll. Az always érték arra utasítja a systemd rendszert, hogy minden egyes alkalommal indítsa újra a programot, amikor az leáll.
  • A RestartSec változó arra utasítja a systemd rendszert, hogy várjon egy meghatározott ideig, mielőtt megkísérelné újraindítani a programot. Itt az érték 5s (5 másodpercre) van beállítva.
  • A WantedBy=multi-user.target utasítás határozza meg, hogy milyen állapotban fogja a systemd engedélyezni a szolgáltatást.

Save the file and close the editor. Start the service:

go web start

Verify if the service is up and running:

go web status

Ahogy a kimenet is mutatja, az alkalmazás fut. Most már készen állunk arra, hogy az Nginx-et használjuk fordított proxyként (reverse proxy).

3. lépés – Az Nginx konfigurálása fordított proxyként

Most létrehozunk egy szerverblokkot az Nginx számára, hogy fordított proxyként működjön. A webalkalmazás a fordított proxyn keresztül lesz elérhető az interneten (a jobb teljesítmény és biztonság érdekében).

Váltson át az aktív könyvtárra: sites-available:

cd

Most hozzon létre egy fájlt azzal a domain névvel, amelyen közzé szeretné tenni az alkalmazását. A bemutatóhoz a következőt fogjuk használni: example.com:

 

Írja be a következő kódot a blokkfájlba:

example.com

Itt a proxy_pass segítségével szolgáljuk ki a Go webalkalmazást a szerver IP-címén (localhost) a következő porton: 9990.

Az Nginx blokk engedélyezéséhez hozzon létre egy szimbolikus linket (más néven soft linket) a fájlhoz a sites-enabled mappába:

create sym

Töltse be újra az Nginx konfigurációt a változtatások érvénybe léptetéséhez:

reload nginx

4. lépés – Ellenőrzés

Ha minden a várakozásoknak megfelelően alakult, akkor a webalkalmazásnak most már elérhetőnek kell lennie a következő címen: localhost:9990 és a beállított domainen. Nyissa meg az URL-t egy webböngészőben:

Hello World

Ahogy az várható volt, az alkalmazás a “Hello World” szöveget írja ki a képernyőre. Ez az elsődleges útvonal feladata. Ezután tesztelje a második útvonalat a következő URL meglátogatásával:

Hello Cloud

Az alkalmazás sikeresen visszaadja az egyszerű üdvözlő üzenetet az URL-ből kapott paraméterben szereplő névvel.

Voila! Sikeresen telepítettünk egy Go webalkalmazást a helyi szerverünkre!

Záró gondolatok

Ebben az útmutatóban bemutattuk egy egyszerű Go webalkalmazás telepítését a Go szabványos könyvtárai segítségével. Egy fordított proxyt is telepítettünk az Nginx használatával. Bár a bemutatót helyi szerveren végeztük, nyilvános szerver esetén kifejezetten ajánlott a egy SSL-tanúsítvány bevezetése az internet felé történő biztonságos közzététel érdekében. További Go programozásért tekintse meg az alábbi oktatóanyagunkat: Go programok építése és telepítése.

Kellemes számítógép-használatot!

author

Pranay Kapgate

Szerző · CloudSigma

Preslav Dobrev a CloudSigma kreatív tervezője, aki hagyományos és innovatív marketingcsatornák segítségével következetes vállalati identitás kialakítására összpontosít. Kiemelkedően képes ötvözni a művészi látásmódot a stratégiai marketinggel, hogy hatásos márkatörténeteket hozzon létre.

Hozzászólások

Még nincsenek hozzászólások. Legyen Ön az első.