Bereitstellung einer Java-Anwendung auf einem VPS: Schritt-für-Schritt-Anleitung von A bis Z
Die Entwicklung einer Java-Anwendung ist nur die eine Hälfte der Arbeit. Die zweite, nicht weniger wichtige Hälfte ist deren Bereitstellung auf einem Server. Viele Entwickler stoßen auf Schwierigkeiten, wenn sie Code von ihrem lokalen Rechner auf einen entfernten VPS übertragen. In diesem Artikel werden wir den gesamten Prozess der Bereitstellung einer Java-Anwendung (am Beispiel von Spring Boot) auf einem virtuellen privaten Server (VPS) mit dem Betriebssystem Ubuntu 22.04 durchgehen. Sie erfahren, wie Sie die Umgebung einrichten, das Projekt bauen, es als Dienst starten und einen sicheren Zugriff über Nginx und SSL gewährleisten.
1. Vorbereitung des VPS und Installation der erforderlichen Software
Bevor Sie den Code hochladen, müssen Sie den Server vorbereiten. Wir verwenden Ubuntu 22.04 LTS. Stellen Sie eine SSH-Verbindung zum Server her:
ssh root@ihre-ip-adresseAktualisieren Sie den Paketmanager und installieren Sie grundlegende Dienstprogramme:
apt update && apt upgrade -yapt install curl git -yInstallieren Sie nun OpenJDK 17 (die empfohlene Version für die meisten modernen Projekte):
apt install openjdk-17-jdk -yÜberprüfen Sie die Installation:
java -versionSie sollten etwas Ähnliches sehen wie:
openjdk version "17.0.9" 2023-10-17Als nächstes installieren wir Maven zum Bauen des Projekts (wenn Sie Gradle verwenden, ersetzen Sie die Befehle entsprechend):
apt install maven -ymvn -versionDamit ist die Vorbereitung der grundlegenden Umgebung abgeschlossen.
2. Bauen und Hochladen der Java-Anwendung auf den Server
Bauen Sie Ihre Java-Anwendung lokal. Wechseln Sie in das Stammverzeichnis des Projekts und führen Sie Folgendes aus:
mvn clean package -DskipTestsNach erfolgreichem Build erscheint im Ordner target eine JAR-Datei (z.B. myapp-0.0.1-SNAPSHOT.jar). Nun muss diese auf den Server hochgeladen werden. Verwenden Sie scp (wird auf Ihrem lokalen Rechner ausgeführt):
scp target/myapp-0.0.1-SNAPSHOT.jar root@ihre-ip-adresse:/opt/myapp/Erstellen Sie auf dem Server ein Verzeichnis für die Anwendung und verschieben Sie die Datei:
mkdir -p /opt/myappmv myapp-0.0.1-SNAPSHOT.jar /opt/myapp/myapp.jarÜberprüfen Sie, ob die JAR-Datei vorhanden ist, und starten Sie sie manuell zum Testen:
cd /opt/myappjava -jar myapp.jarWenn die Anwendung fehlerfrei startet, fahren Sie mit dem nächsten Schritt fort.
3. Konfiguration von systemd für den automatischen Start
Damit die Anwendung automatisch beim Systemstart startet und bei einem Absturz neu gestartet wird, erstellen wir einen systemd-Dienst.
Erstellen Sie die Dienstdatei:
nano /etc/systemd/system/myapp.serviceFügen Sie den folgenden Inhalt ein (ersetzen Sie youruser durch den Benutzernamen, unter dem die Anwendung laufen soll, oder belassen Sie root):
[Unit]Description=My Java Spring Boot ApplicationAfter=network.target
[Service]User=rootWorkingDirectory=/opt/myappExecStart=/usr/bin/java -jar /opt/myapp/myapp.jarSuccessExitStatus=143Restart=alwaysRestartSec=10
[Install]WantedBy=multi-user.targetErklärung der Parameter:
After=network.target— Der Dienst startet, nachdem das Netzwerk verfügbar ist.Restart=always— Automatischer Neustart bei einem Absturz.RestartSec=10— Pause von 10 Sekunden vor dem Neustart.SuccessExitStatus=143— Korrekte Behandlung des Stopp-Signals.
Aktivieren und starten Sie nun den Dienst:
systemctl daemon-reloadsystemctl enable myappsystemctl start myappÜberprüfen Sie den Status:
systemctl status myappSie sollten Active: active (running) sehen. Ihre Anwendung wird nun automatisch starten