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_IPEs wird empfohlen, sofort einen unprivilegierten Benutzer für die tägliche Arbeit zu erstellen:
adduser deployerusermod -aG sudo deployer1.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 LTS1.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 -y2. 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-app2.2. JAR-Datei bauen
Für Maven:
mvn clean package -DskipTestsAls 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=validateSpeichern 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 postgresqlErstellen 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;\\q3.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.conf4. 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