Bereitstellung einer Java-Anwendung auf einem VPS: Schritt-für-Schritt-Anleitung

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 VPS die ideale Wahl für Java-Anwendungen ist

Das Deployment einer Java-Anwendung auf einen virtuellen privaten Server (VPS) ist der Goldstandard für Entwickler, die die vollständige Kontrolle über die Laufzeitumgebung wünschen. Im Gegensatz zu Shared-Hosting bietet ein VPS dedizierte Ressourcen (CPU, RAM, Speicher), ermöglicht die Konfiguration der Java Virtual Machine (JVM), die Installation beliebiger Bibliotheken und die Anpassung des Servers an die spezifischen Projektanforderungen.

In diesem Artikel behandeln wir den vollständigen Deployment-Zyklus: von der VPS-Vorbereitung und JDK-Installation bis zum Start der Anwendung im Production-Modus mit systemd. Alle Schritte werden mit Codebeispielen und Befehlen für Linux (Ubuntu 22.04 LTS) begleitet.



1. VPS-Vorbereitung und Installation der erforderlichen Software

1.1. Verbindung zum Server herstellen

Nach dem Kauf eines VPS erhalten Sie eine IP-Adresse und ein Root-Passwort. Stellen Sie eine SSH-Verbindung her:

ssh root@ihre_Server_IP

Es wird empfohlen, sofort einen unprivilegierten Benutzer für die tägliche Arbeit zu erstellen:

adduser deployerusermod -aG sudo deployer


1.2. Installation von Java (JDK 17 LTS)

Für moderne Java-Anwendungen ist OpenJDK 17 am besten geeignet. Führen Sie aus:

sudo apt updatesudo apt install openjdk-17-jdk -y

Überprüfen Sie die Installation:

java -version# Ausgabe: openjdk version "17.0.10" 2024-01-16 LTS


1.3. Installation von Git und Maven/Gradle

Zum Bauen des Projekts aus dem Repository:

sudo apt install git maven -y# Oder für Gradle:# sudo apt install gradle -y


2. Bau und Vorbereitung der Anwendung

2.1. Repository klonen

Angenommen, Ihre Spring Boot Anwendung befindet sich auf GitHub:

cd /optsudo git clone https://github.com/ihr_account/my-java-app.gitcd my-java-app


2.2. JAR-Datei bauen

Für Maven:

mvn clean package -DskipTests

Als Ergebnis erscheint im Verzeichnis target/ die Datei my-app-0.0.1-SNAPSHOT.jar. Stellen Sie sicher, dass sie startet:

java -jar target/my-app-0.0.1-SNAPSHOT.jar --server.port=8080

Überprüfen Sie die Funktion: Öffnen Sie im Browser http://ihre_IP:8080.



2.3. JAR für Production optimieren

Fügen Sie in application.properties Parameter für Production hinzu:

server.port=8080spring.datasource.url=jdbc:postgresql://localhost:5432/mydbspring.datasource.username=app_userspring.datasource.password=secure_passwordspring.jpa.hibernate.ddl-auto=validate

Speichern Sie echte Passwörter niemals im Code – verwenden Sie Umgebungsvariablen oder Vault.



3. Datenbank und Umgebung konfigurieren

3.1. PostgreSQL installieren

sudo apt install postgresql postgresql-contrib -ysudo systemctl start postgresqlsudo systemctl enable postgresql

Erstellen Sie Datenbank und Benutzer:

sudo -u postgres psqlCREATE DATABASE mydb;CREATE USER app_user WITH PASSWORD 'secure_password';GRANT ALL PRIVILEGES ON DATABASE mydb TO app_user;\\q


3.2. Umgebungsvariablen konfigurieren

Erstellen Sie die Datei /etc/environment.d/java-app.conf:

DB_URL=jdbc:postgresql://localhost:5432/mydbDB_USER=app_userDB_PASSWORD=secure_passwordJAVA_OPTS="-Xms256m -Xmx512m"

Laden Sie die Umgebung neu:

source /etc/environment.d/java-app.conf


4. Anwendung als systemd-Dienst starten

4.1. Unit-Datei erstellen

Erstellen Sie die Datei /etc/systemd/system/java-app.service:

[Unit]Description=Java Spring Boot ApplicationAfter=network.target postgresql.service

[Service]User=deployerWorkingDirectory=/opt/my-java-appExecStart=/usr/bin/java $JAVA_OPTS -jar /opt/my-java-app/target/my-app-0.0.1-SNAPSHOT.jarSuccessExitStatus=143Restart=alwaysRest

Blogs

Buchempfehlungen