Einleitung: Warum Go ideal für die VPS ist und was wir tun werden
Go (Golang) ist eine Sprache, die für skalierbare und leistungsstarke Serveranwendungen entwickelt wurde. Die Kompilierung in eine einzige statische Binärdatei macht sie zu einem idealen Kandidaten für die Bereitstellung auf einer VPS (Virtual Private Server). Sie müssen keinen Interpreter oder Abhängigkeiten auf dem Server installieren – kopieren Sie einfach die Datei und starten Sie sie.
In diesem Artikel gehen wir den gesamten Weg: vom Schreiben eines einfachen HTTP-Servers in Go bis zu seinem produktiven Einsatz auf der VPS mit systemd für den automatischen Start, Nginx als Reverse Proxy und Let's Encrypt für HTTPS.
Sie werden lernen:
- Eine Go-Anwendung für Linux zu kompilieren
- Die Binärdatei per SSH auf die VPS hochzuladen
- systemd für den automatischen Start zu konfigurieren
- Nginx zu installieren und zu konfigurieren
- Ein kostenloses SSL-Zertifikat zu erhalten
Schritt 1: Vorbereitung der Go-Anwendung und Kompilierung
Eine einfache Webanwendung erstellen
Als Beispiel schreiben wir einen minimalen HTTP-Server, der mit "Hello, VPS!" antwortet. Erstellen Sie die Datei main.go:
package main
import ( "fmt" "net/http")
func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, VPS!") })
fmt.Println("Server started on :8080") http.ListenAndServe(":8080", nil)}Kompilierung für Linux
Wenn Sie unter Windows oder macOS entwickeln, müssen Sie die Binärdatei für die Zielarchitektur der VPS (normalerweise linux/amd64) kompilieren. Öffnen Sie ein Terminal im Projektordner und führen Sie Folgendes aus:
set GOOS=linuxset GOARCH=amd64go build -o myappFür Linux/macOS verwenden Sie export:
export GOOS=linuxexport GOARCH=amd64go build -o myappAls Ergebnis erscheint die Binärdatei myapp. Überprüfen Sie ihre Größe – sie wird klein sein (ca. 7-10 MB), da Go alles statisch kompiliert.
Schritt 2: Hochladen auf die VPS und Konfiguration von systemd
Verbindung zum Server und Hochladen der Datei
Verbinden Sie sich per SSH mit Ihrer VPS:
ssh root@ihre-server-ipErstellen Sie ein Verzeichnis für die Anwendung:
mkdir -p /opt/myappcd /opt/myappLaden Sie die Binärdatei von Ihrem lokalen Rechner per SCP hoch (führen Sie dies in einem separaten Terminal aus):
scp myapp root@ihre-server-ip:/opt/myapp/Gehen Sie zurück zum Server und erteilen Sie Ausführungsrechte:
chmod +x /opt/myapp/myappErstellen eines systemd-Dienstes
Damit die Anwendung automatisch beim Systemstart startet und bei Abstürzen neu gestartet wird, erstellen wir eine systemd-Unit. Erstellen Sie die Datei:
nano /etc/systemd/system/myapp.serviceFügen Sie den folgenden Inhalt ein:
[Unit]Description=My Go ApplicationAfter=network.target
[Service]Type=simpleUser=www-dataGroup=www-dataWorkingDirectory=/opt/myappExecStart=/opt/myapp/myappRestart=on-failureRestartSec=5
[Install]WantedBy=multi-user.targetErklärung der Parameter:
UserundGroup– der Benutzer, unter dem die Anwendung ausgeführt wird (empfohlen: nicht root).Restart=on-failure– automatischer Neustart bei Absturz.RestartSec=5– Pause vor dem Neustart.
Aktivieren und starten Sie nun den Dienst:
systemctl daemon-reloadsystemctl enable myappsystemctl start myappsystemctl status myappWenn alles richtig gemacht wurde, sehen Sie den Status active (running). Überprüfen Sie, ob die Anwendung lokal antwortet:
curl http://localhost:8080Schritt 3: Konfiguration von Nginx als Reverse Proxy
Direkter Zugriff auf die Anwendung über Port 8