Deploy einer Kotlin-Anwendung auf VPS: Vollständige Schritt-für-Schritt-Anleitung
Die Entwicklung in Kotlin ist nur die halbe Miete. Früher oder später stellt sich die Frage: Wie bringt man die Anwendung von der lokalen Umgebung auf einen echten Server? In diesem Artikel werden wir das Deployment einer Kotlin-Anwendung (am Beispiel von Spring Boot) auf einer VPS im Detail durchgehen. Sie erfahren, wie Sie den Server vorbereiten, eine JAR-Datei erstellen, den automatischen Start konfigurieren und eine sichere Verbindung über HTTPS gewährleisten. Die Anleitung eignet sich sowohl für Anfänger als auch für Entwickler, die ihr Wissen systematisieren möchten.
1. Vorbereitung der VPS und Installation der erforderlichen Software
Bevor Sie Code hochladen, müssen Sie den Server vorbereiten. Wir empfehlen die Verwendung von Ubuntu 22.04 LTS oder neuer. Verbinden Sie sich per SSH mit dem Server:
ssh root@ihre-server-ipAktualisieren Sie die Paketdatenbank und installieren Sie Java (Kotlin wird in JVM-Bytecode kompiliert, daher benötigen wir JDK 17 oder 21):
sudo apt update && sudo apt upgrade -ysudo apt install openjdk-17-jdk -yjava -versionStellen Sie sicher, dass die Java-Version Ihrem Build entspricht. Installieren Sie außerdem Git (falls Sie ein Repository verwenden) und Dienstprogramme für die Arbeit mit Archiven:
sudo apt install git unzip curl -yFür die Arbeit mit einem Kotlin-Projekt auf dem Server muss der Kotlin-Compiler selbst nicht installiert werden – den Build führen wir lokal oder über CI/CD durch. Wenn Sie jedoch auf dem Server kompilieren möchten, fügen Sie SDKMAN! und Kotlin hinzu:
curl -s "https://get.sdkman.io" | bashsource "$HOME/.sdkman/bin/sdkman-init.sh"sdk install kotlinWichtig: Konfigurieren Sie in diesem Schritt auch die Firewall (UFW) für die grundlegende Sicherheit:
sudo ufw allow OpenSSHsudo ufw allow 8080/tcp # Anwendungsportsudo ufw enable2. Erstellen der Kotlin-Anwendung und Übertragen auf den Server
Betrachten wir ein typisches Spring Boot-Projekt mit Kotlin. Führen Sie den Build der JAR-Datei lokal durch (oder auf dem Server, wenn Sie das Repository geklont haben). Führen Sie im Projektstammverzeichnis Folgendes aus:
./gradlew clean bootJarOder, wenn Sie Maven verwenden:
mvn clean packageNach dem Build erscheint im Ordner build/libs/ (Gradle) oder target/ (Maven) eine Datei namens app-0.0.1-SNAPSHOT.jar. Kopieren Sie diese mit SCP auf den Server:
scp build/libs/app-0.0.1-SNAPSHOT.jar root@ihre-ip:/opt/myapp/app.jarErstellen Sie auf dem Server ein Verzeichnis für die Anwendung und verschieben Sie die JAR-Datei:
sudo mkdir -p /opt/myappsudo mv app.jar /opt/myapp/Überprüfen Sie, ob die JAR-Datei manuell gestartet werden kann:
cd /opt/myappjava -jar app.jar --server.port=8080Wenn die Anwendung startet und auf Port 8080 antwortet – ist alles in Ordnung. Stoppen Sie sie (Strg+C) und fahren Sie mit der Konfiguration des dauerhaften Starts fort.
3. Konfiguration von systemd für automatischen Start und Überwachung
Damit die Anwendung beim Neustart des Servers automatisch startet und sich nach Abstürzen erholt, erstellen wir einen systemd-Dienst. Erstellen Sie die Datei:
sudo nano /etc/systemd/system/kotlin-app.serviceFügen Sie die folgende Vorlage ein (passen Sie die Parameter an Ihre Anwendung an):
[Unit]Description=Kotlin Spring Boot ApplicationAfter=network.target
[Service]Type=simpleUser=rootWorkingDirectory=/opt/myappExecStart=/usr/bin/java -jar /opt/myapp/app.jar --server.port=8080Restart=on-failureRestartSec=10StandardOutput=journalStandardError=journal
[Install]WantedBy=multi-user.targetLaden Sie die systemd-Konfiguration neu und starten Sie den Dienst:
sudo systemctl daemon-reloadsudo systemctl start kotlin-appsudo systemctl status kotlin-appWenn der Status active (running) ist – funktioniert alles. Fügen Sie den Dienst zum automatischen Start hinzu:
sudo systemctl enable kotlin-app