Šiame straipsnyje parodysiu, kaip įdiegti GoTTH steką (Go Templ htmx tailwind) gamyboje. Neseniai sukūriau savo kriptovaliutų mainų agregatorių, vadinamą ; ji suranda jums geriausią kriptovaliutos keitimo iš skirtingų partnerių biržų kursą. cyphergoat Jį sudaro dvi dalys: API, kuri sąveikauja su biržomis. Parašyta go ir naudoja džiną. Žiniatinklio vartotojo sąsaja parašyta go ir naudoja HTML, HTMX, tailwindcss, CSS ir Javascript derinį šablonų šablonuose. Dar žinomas kaip „GoTTH“ krūva. Jis sąveikauja su API, kad surastų tarifus ir pan. Kas yra labai šaunu naudojant šį krūvą ir sąranką, yra tai, kad mes galime sukurti su viskuo, kas įtraukta kiekvienai daliai, ir išsiųsti jį į serverį. Webui pusėje tai įmanoma, nes HTML yra sukompiliuojamas į go kodą naudojant šabloną ir siunčiamas kartu su dvejetainiu. vieną dvejetainį failą Šiame straipsnyje apžvelgsiu savo sąranką, kad jums būtų lengviau sukurti kažką panašaus. Sąranka Naudoju Debian 12 serverį, kuris atskleis mano programą per Cloudflare tunelius. Visi statiniai failai aptarnaujami per nginx, o API ir svetainės dvejetainiai failai vykdomi kaip sisteminės paslaugos. Šiame vadove parodysiu, kaip aš tai nustatau. Sąranka Mano kūrimo įrenginyje yra vienas aplankas, vadinamas cyphergoat: Jame yra: api/ web/ builds/ API aplanke yra API šaltinio kodas. Žiniatinklyje yra svetainės šaltinio kodas. Ir pastatuose yra visos versijos, kurios yra įdiegtos serveryje. Galinis vėjas Pirmasis tikras iššūkis kyla teisingai nustatant tailwindcss. Savo žiniatinklio projekte turiu statinį aplanką, skirtą statiniams failams. Jo viduje turiu du failus: /web styles.css tailwind.css tiesiog yra: styles.css @import "tailwindcss"; Tailwind.css failas yra vieta, kur tailwind-cli išsaugos savo medžiagą. Norėdamas sukurti užpakalinio vėjo dalykus, aš tiesiog paleidžiu: npx @tailwindcss/cli -i ./static/styles.css -o ./static/tailwind.css --watch (darant prielaidą, kad turite įdiegtą tailwind-cli) Failo header.templ (visų puslapių antraštės) viršuje turiu: <link href="/static/tailwind.css" rel="stylesheet"> <link href="/static/styles.css" rel="stylesheet"> Ir failai aptarnaujami naudojant Echo e.Static (mano main.go faile). func main(){ e := echo.New() e.Use(middleware.Logger()) e.Use(middleware.Recover()) e.Use(middleware.Secure()) e.Static("/static", "static") // Serves content from static folder. // Rest of the handlers } Serveris Savo serverio pusėje turiu Debian 12 vm, veikiantį su proxmox. Savo vartotojų namų kataloge turiu aplanką su tokiu turiniu: cyphergoat/ ├── api ├── static/ └── web Statiniame aplanke yra visi statiniai failai (įskaitant tailwind.css ir styles.css), o ir yra dvejetainiai failai. žiniatinklis API Tada turiu dvi sistemines paslaugas šiems vykdomiesiems failams: cg-api.service /etc/systemd/system/cg-api.service [Unit] Description=CypherGoat API After=network.target [Service] User=arkal Group=www-data WorkingDirectory=/home/arkal/cyphergoat ExecStart=/home/arkal/cyphergoat/api Restart=always RestartSec=1 [Install] WantedBy=multi-user.target Ir cg-web.service /etc/systemd/system/cg-web.service [Unit] Description=CypherGoat Web After=network.target [Service] User=arkal Group=www-data WorkingDirectory=/home/arkal/cyphergoat ExecStart=/home/arkal/cyphergoat/web [Install] WantedBy=multi-user.target Abu priklauso grupei (tai tikriausiai nėra būtina API), kad būtų lengviau juos aptarnauti per nginx. www-data Nginx Svetainė palaiko ryšį su API, bet vis tiek turiu padaryti žiniatinklio sąsają prieinamą. Aš sukūriau nginx svetainę su tokia konfigūracija: /etc/nginx/sites-available/cg server { server_name cyphergoat.com; location / { proxy_pass http://127.0.0.1:4200; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static/ { alias /var/www/static/; expires 30d; } # Optional robots.txt location = /robots.txt { root /var/www/static; access_log off; log_not_found off; } listen 80; } Taip pat nustatiau certbot, kad turėčiau SSL sertifikatą. Certbot galite nustatyti paleisdami: sudo apt install certbot python3-certbot-nginx -y Sukurkite SSL sertifikatą: sudo certbot --nginx -d cyphergoat.com Norėdami gauti išsamesnę „nginx“ sąranką, skaitykite . „Savęs priegloba“ Cloudflare tuneliai Šiuo metu darau savo svetainę prieinamą naudodamas „Cloudflare“ puslapius. Tai itin paprastas naudoti prievado persiuntimo sprendimas. Norėdami tai padaryti, jums reikės „Cloudflare“ paskyros ir domeno, nukreipto į „Cloudflare“. Pirmiausia eikite į . „Zero Trust Dashboard“ Dalyje spustelėkite tada Networks Tunnels, Create a tunnel. Sukūrę turėtumėte ; vadovaukitės puslapyje pateiktomis konkrečios sąrankos instrukcijomis. Install and run a connector Kai jungtis veikia, turėtumėte spustelėti skirtuką ir . Public Hostname Add a public hostname Dabar turėtumėte pamatyti kažką panašaus: Užpildykite informaciją kaip turiu. Paslaugos tipas turi būti , o URL – arba HTTP 127.0.0.1:80 localhost:80. Akivaizdu, kad diegiant svetainę nėra jokios priežasties padaryti API viešai prieinamą. Diegimas Norėdamas įdiegti dvejetainius failus, aš sukūriau greitą bash scenarijų: cd api go build -o ../builds/ . cd ../web templ generate && go build -o ../builds/web cmd/main.go cd .. rsync -urvP ./builds/ user@SERVER:/home/user/cyphergoat rsync -urvP ./web/static user@SERVER:/home/user/cyphergoat/ rsync -urvP ./api/coins.json user@SERVER:/user/user/cyphergoat/ Scenarijus sukurs API, sugeneruos šablonų failus, sukurs WebUI, ir tada viską išsiųs į mano serverį (įskaitant statinį aplanką). Tada ssh į savo serverį: ssh user@ip Ir tada iš naujo paleiskite paslaugas. sudo systemctl restart cg-api cg-web Ir viskas. Prisijunkite prie mano nemokamo naujienlaiškio Susiję straipsniai Paprastas kurso ribojimas in Go (džinas) Kaip sukurti URL sutrumpinimą programoje „Go“. Kaip įdiegti „Django“ į gamybą © 2025 4rkal CC BY-SA PRENUMERUOTI