Bereitstellung einer Java-Anwendung auf einem 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

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-adresse


Aktualisieren Sie den Paketmanager und installieren Sie grundlegende Dienstprogramme:



apt update && apt upgrade -yapt install curl git -y


Installieren 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 -version


Sie sollten etwas Ähnliches sehen wie:



openjdk version "17.0.9" 2023-10-17


Als nächstes installieren wir Maven zum Bauen des Projekts (wenn Sie Gradle verwenden, ersetzen Sie die Befehle entsprechend):



apt install maven -ymvn -version


Damit 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 -DskipTests


Nach 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.jar


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


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


Erklä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 myapp


Sie sollten Active: active (running) sehen. Ihre Anwendung wird nun automatisch starten

Blogs

Buchempfehlungen