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:
- Egy megfelelően konfigurált Ubuntu Tudjon meg többet a saját Ubuntu szerverének beállításáról a CloudSigma-n.
- Go programozási környezet a szükséges környezeti változókkal ( $GOROOT és $GOPATH). Tekintse meg az útmutatót a Go programozási környezet konfigurálásáról Ubuntu-n.
- Nginx fordított proxyhoz. Ez az útmutató részletesen ismerteti az Nginx telepítését és konfigurálását Ubuntu-n.
- Egy megfelelő szövegszerkesztő a Go kóddal való munkához, például az Atom, Sublime Text, Brackets, VS Code, Vim, stb. Ebben az útmutatóban a VS Code-ot fogjuk használni szövegszerkesztőként.
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:
|
1 |
mkdir -pv $GOPATH/go-web |

Váltson át az aktuális könyvtárra:
|
1 |
cd $GOPATH/go-web |

Ezután indítsa el a projektet:
|
1 |
go mod init <package_name> |

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:
|
1 |
touch main.go |
Nyissa meg a projektet VS Code-ban:
|
1 |
code . |
Illessze be a következő kódot a main.go:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World") }) http.HandleFunc("/greet/", func(w http.ResponseWriter, r *http.Request) { name:= r.URL.Path[len("/greet/"):] fmt.Fprintf(w, "Hello %s\n", name) }) http.ListenAndServe(":9990", nil) } |

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á:
|
1 |
go build main.go |
A Go fordító egy olyan futtatható fájlt hoz létre, amelynek neve megegyezik a fájl nevével. Ellenőrizze a kimenetet:
|
1 |
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:
|
1 |
sudo nano /lib/systemd/system/goweb.service |
Adja hozzá a következő részletet az egységfájlhoz:
|
1 2 3 4 5 6 7 8 9 10 11 |
[Unit] Description=goweb [Service] Type=simple Restart=always RestartSec=5s ExecStart=/home/<username>/go/go-web/main [Install] WantedBy=multi-user.target |

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:
|
1 |
sudo service goweb start |

Verify if the service is up and running:
|
1 |
sudo service goweb 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:
|
1 |
cd /etc/nginx/sites-available |

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:
|
1 |
sudo nano example.com |
Írja be a következő kódot a blokkfájlba:
|
1 2 3 4 5 6 |
server { server_name example.com www.example.com; location / { proxy_pass http: //localhost:9990; } } |

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:
|
1 |
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com |

Töltse be újra az Nginx konfigurációt a változtatások érvénybe léptetéséhez:
|
1 |
sudo nginx -s reload |
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:
|
1 |
localhost:9990 |

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:
|
1 |
localhost:9990/greet/<name> |

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!


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