Bereitstellung einer Go-Anwendung auf der VPS: Schritt-für-Schritt-Anleitung von A bis Z

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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 myapp


Für Linux/macOS verwenden Sie export:



export GOOS=linuxexport GOARCH=amd64go build -o myapp


Als 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-ip


Erstellen Sie ein Verzeichnis für die Anwendung:



mkdir -p /opt/myappcd /opt/myapp


Laden 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/myapp


Erstellen 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.service


Fü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.target


Erklärung der Parameter:

  • User und Group – 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 myapp


Wenn alles richtig gemacht wurde, sehen Sie den Status active (running). Überprüfen Sie, ob die Anwendung lokal antwortet:



curl http://localhost:8080


Schritt 3: Konfiguration von Nginx als Reverse Proxy



Direkter Zugriff auf die Anwendung über Port 8

Blogs

Buchempfehlungen