Go-Web-Practice ist ein Lernprojekt. Implementieren Sie eine einfache Webanwendung mithilfe der nativen Bibliothek von Golang.
Dieses Projekt wird von dem Haupt -Softwaretechniker von UP durch das Video "Go Web Programing Quick Start [Golang/Go Language] (Complete)" auf B Station von UP geschrieben.
Basierend auf dem Video wurden einige Änderungen vorgenommen:
Dieses Projekt wurde getestet und bereitgestellt, und das Linux -Host -Bereitstellungshandbuch finden Sie unten.
Projektstruktur:
go-web-practice
.
├── LICENSE
├── README.md
├── build
│ └── package
│ ├── dockerfile.build_run
│ └── dockerfile.run
├── cmd
│ └── main.go
├── configs
│ └── config.json
├── deployments
│ └── docker-compose.yaml
├── go.mod
├── internal
│ ├── config
│ │ ├── config.go
│ │ └── config_test.go
│ ├── controller
│ │ ├── controller.go
│ │ ├── index.go
│ │ ├── look.go
│ │ └── welcome.go
│ ├── log
│ │ └── log.go
│ ├── middleware
│ │ ├── cross.go
│ │ ├── log.go
│ │ └── timeout.go
│ └── templates
│ └── template.go
└── web
├── img
│ ├── favicon.ico
│ ├── golang-down.png
│ ├── golang-right.png
│ └── golang.png
├── plugins
│ ├── bootstrap
│ │ ├── css
│ │ │ └── bootstrap.min.css
│ │ └── js
│ │ └── bootstrap.min.js
│ └── jquery
│ └── js
│ └── jquery.min.js
└── templates
├── index.tmpl
├── look.tmpl
├── test.tmpl
└── welcome.tmpl
Beachten
Das Folgende sind die aktuellen Probleme des Projekts
Oder etwas, auf das Sie bei der Universitäts Hausaufgaben achten sollten.
- Das Projekt wurde mit Goland entwickelt, und die Migration anderer IDES ist unbekannt.
- In main.go wird nur ein kleiner Kommentar geschrieben, und die Kommentare anderer Dateien werden in Zukunft aktualisiert.
- Es gibt nur sehr wenige Routing -Schnittstellen im aktuellen Projekt, sodass Sie sie selbst hinzufügen können, wenn Sie sie benötigen.
- Keine Datenbank.
- Bevor Sie mit Docker und Docker-Compose ausgeführt werden, müssen Sie das Projekt selbst kompilieren oder die ausführbare Datei in das Projektverzeichnis platzieren.
Zuerst müssen Sie sicherstellen, dass Sie Golangs Umgebung installiert haben. Wenn Sie das Projekt ändern, müssen Sie die ausführbare Datei neu kompilieren und abrufen, bevor sie bereitgestellt und ausgeführt werden kann. **
Die Cross-Compilation von Golang bietet große Bequemlichkeit, mit der wir ausführbare Dateien kompilieren können, die in Linux unter Windows ausgeführt werden können.
Sie können das folgende .bat -Skript verwenden, um die ausführbare Dateikompilierung in Windows- und Linux -Umgebungen in Windows zu vervollständigen.
# 请以项目目录为工作目录执行该脚本
# windows 可执行文件编译
go build -o go-web-practice.exe cmdmain.go
# linxu 可执行文件编译
set CGO_ENABLED = 0
set GOOS = linux
set GOARCH = amd64
go build -o go-web-practice .cmdmain.go
pause Wenn Sie sich auf MacOS oder Linux entwickeln, können Sie es mit make erstellen.
makeDieses Projekt verwendet eine JSON -Datei, um zu konfigurieren.
Überprüfen Sie die Konfigurationssemantik von config/conifg.json wie in der folgenden Tabelle gezeigt, und ändern Sie sie entsprechend Ihren Anforderungen.
| Konfigurationsfelder | Semantik |
|---|---|
| statisch | Der Weg zur statischen Datei |
| Vorlage | Der Pfad zur GO -Vorlage |
| Adresse | Die Adresse des Service -Startups (Standard ist leer und die Bereitstellung des öffentlichen Netzwerks kann implementiert werden) |
| Hafen | Der Hafen für Service -Startup |
| Handletimeoutsecond | Zeitüberschreitungszeit für Anforderungsverarbeitung (diese Konfiguration wird im Projekt nicht verwendet und ist reserviert) |
| verfolgen | Trace Logger Der Pfad zur Ausgabe des Protokolls (nicht im Projekt verwendet, reserviert) |
| Info | Info -Logger -Pfad zum Ausgabe von Protokoll |
| Warnung | Warnprotokollpfad zum Ausgabe von Protokoll |
| Fehler | Fehlerlogger Der Pfad zum Ausgabeprotokoll |
Die folgende Verzeichnisstruktur muss beim Ausführen sichergestellt werden (als Beispiel das Laufen in Linux):
.
├── configs
│ └── config.json
├── go-web-practice
└── web
└── ...Führen Sie die ausführbare Datei direkt aus und sehen Sie die folgenden Eingabeaufforderungen an, dass der Lauf erfolgreich ist:

Sie können es mit curl localhost:8000/welcome testen, was den HTML der Begrüßungsschnittstelle zurückgibt.
Native Zugriff (Portkonfiguration wird nicht geändert): http: // localhost: 8000.
Wenn Sie auf einem Server bereitgestellt werden und über das öffentliche Netzwerk darauf zugreifen möchten, sollten Sie eine Firewall einrichten, um den entsprechenden Port zu öffnen. Wenn es sich um einen Cloud -Server handelt, müssen Sie auch die Sicherheitsgruppe öffnen.
Die Master-Zweigstelle hat die Dockerfile aktualisiert und Docker verwendet, um die Zusammenstellung und den Betrieb von GO-Web-Practice zu testen.
Das Folgende ist die Docker Compilation/Deployment-Leithandbuch für GO-Web-Practice.
Was Docker ist, wie man installiert und wie man es benutzt, wird hier nicht ausführlich erklärt.
Weitere Informationen finden Sie im offiziellen Docker -Dokument: https://docs.docker.com/
Führen Sie die Befehle in der folgenden Reihenfolge im Projektverzeichnis aus, um die Kompilierung zum Zeitpunkt des Bildaufbaus abzuschließen und den Dienst auszuführen, wenn der Container startet.
$ docker build -t go-web-practice -f ./build/package/dockerfile.build_run . docker run -d -p 8000:8000 go-web-practiceErstellen Sie nach der lokalen Kompilierung und Erzeugung ausführbarer Dateien das laufende Bild, mit dem sichergestellt werden kann, dass das Bild normal ausgeführt wird, auch wenn die Bildgröße klein ist.
Die Bildgröße des kompilierten Bildes und der ausgeführt mit Docker oben liegt nahe bei 1 GB, während das in diesem Abschnitt erstellte Runnable -Bild nur etwa 100 MB beträgt.
Hinweis: Nachdem das Bild mit dem Namen GO-Web-Practice oben erstellt wurde, muss das alte Bild gelöscht werden, bevor die Anweisungen in diesem Abschnitt ausgeführt werden.
Stellen Sie zunächst sicher, dass im Projektverzeichnis eine kompilierte ausführbare Datei vorliegt.
Es gibt eine vorbereitete Dockerfile im Verzeichnis /build/package des Projekts, um die Bilddatei zu generieren. Verwenden Sie die folgenden Anweisungen, um das Docker -Bild zu erstellen.
$ docker build -t go-web-practice -f ./build/package/dockerfile.run . Geben Sie den folgenden Befehl ein, wenn Sie den Container im Hintergrund ausführen:
$ docker run -d -p 8000:8000 go-web-practicedocker-compose ausgeführtNach dem Erstellen des Bildes wird es auch direkt mit der Docker-Compose-Anweisung eingesetzt:
$ docker-compose -f deployments/docker-compose.yaml upBeachten Sie, dass Sie, wenn die Portkonfiguration geändert wird, den Befehl Docker-Ausführen und das Feld Port Mapping in der Docker-compose.yaml-Konfigurationsdatei ändern müssen.
Wenn Sie Fragen haben, kontaktieren Sie mich bitte per E -Mail: [email protected]