Einleitung: Warum die Bereitstellung einer Kotlin-Anwendung einen besonderen Ansatz erfordert
\nDie Entwicklung mit Kotlin ist nur die eine Hälfte des Erfolgs. Die zweite Hälfte ist die fachgerechte Bereitstellung (Deployment) Ihrer Anwendung auf einem entfernten Server. Ohne diesen Schritt bleibt Ihr Code lediglich ein lokales Projekt, das für Benutzer nicht zugänglich ist.
\nIn dieser Anleitung werden wir den vollständigen Bereitstellungszyklus einer Kotlin-Anwendung auf einem VPS (Virtual Private Server) durchgehen. Sie erfahren, wie Sie das Projekt in eine ausführbare JAR-Datei packen, die Serverumgebung konfigurieren, die Anwendung als Dienst starten und ihren stabilen Betrieb sicherstellen. Der Artikel richtet sich an Entwickler, die bereits Grundkenntnisse in Kotlin und Linux haben.
\n\n1. Projektvorbereitung und Erstellung der JAR-Datei
\nBevor Sie den Code auf den Server hochladen, muss die Anwendung in ein einheitliches Artefakt gebaut werden. Für Kotlin-Projekte, die mit Spring Boot oder Ktor erstellt wurden, ist das Standardformat die JAR-Datei (Java Archive).
\n\n1.1. Konfiguration von build.gradle.kts
\nStellen Sie sicher, dass in Ihrer Datei build.gradle.kts das Plugin zum Erstellen einer ausführbaren JAR vorhanden ist. Für Spring Boot sieht das so aus:
plugins {\n kotlin("jvm") version "1.9.22"\n id("org.springframework.boot") version "3.2.2"\n id("io.spring.dependency-management") version "1.1.4"\n}\n\ndependencies {\n implementation("org.springframework.boot:spring-boot-starter-web")\n implementation("com.fasterxml.jackson.module:jackson-module-kotlin")\n}\n\nFür reines Ktor (ohne Spring) verwenden Sie das Plugin application:
plugins {\n kotlin("jvm") version "1.9.22"\n application\n}\n\napplication {\n mainClass.set("com.example.ApplicationKt")\n}\n\n\n1.2. Erstellung des Projekts
\nFühren Sie den Build-Befehl im Stammverzeichnis des Projekts aus:
\n./gradlew clean build\nNach erfolgreichem Build erscheint im Verzeichnis build/libs/ die Datei app-0.0.1-SNAPSHOT.jar (der Name hängt von der Konfiguration ab). Kopieren Sie diese auf Ihren lokalen Computer.
src/main/resources/application.conf der richtige Port (normalerweise 8080) und der Betriebsmodus angegeben sind.2. Konfiguration des VPS-Servers
\nFür die Bereitstellung benötigen wir einen VPS mit installiertem Betriebssystem Ubuntu 22.04 LTS. Es wird vorausgesetzt, dass Sie SSH-Zugriff und Superuser-Rechte (sudo) haben.
\n\n2.1. Installation von Java (JRE)
\nKotlin wird in JVM-Bytecode kompiliert, daher muss auf dem Server unbedingt die Java Runtime Environment (JRE) Version 17 oder höher installiert sein:
\nsudo apt update\nsudo apt install openjdk-17-jre -y\njava -version\n\n2.2. Erstellen eines Benutzers für die Anwendung
\nAus Sicherheitsgründen wird empfohlen, die Anwendung nicht als root auszuführen. Erstellen wir einen separaten Benutzer:
\nsudo useradd -m -s /bin/bash kotlinapp\nsudo passwd kotlinapp\n\n2.3. Hochladen der JAR-Datei auf den Server
\nVerwenden Sie SCP, um die Datei von Ihrem lokalen Rechner auf den VPS zu kopieren:
\nscp build/libs/app-0.0.1-SNAPSHOT.jar kotlinapp@your-server-ip:/home/kotlinapp/app.jar\n\n3. Starten der Anwendung und Konfiguration von Systemd
\nDamit die Anwendung automatisch beim Systemstart startet und nicht bei Verlust der SSH-Verbindung abstürzt, konfigurieren wir sie als Systemd-Dienst.
\n\n3.1. Manueller Start (zum Testen)
\nVerbinden Sie sich als Benutzer kotlinapp mit dem Server und führen Sie Folgendes aus:
cd /home/kotlinapp\njava -jar app.jar\nWenn die Anwendung startet und auf Port 8080 antwortet, fahren Sie mit dem nächsten Schritt fort. Stoppen Sie den Prozess (Strg+C).
\n\n3.2. Erstellen der Systemd-Unit-Datei
\nErstellen Sie die Dienstdatei:
\nsudo nano /etc/systemd/system/kotlin-app.service\nFügen Sie den folgenden Inhalt ein:
\n[Unit]\nDescription=Kotlin Application Service\nAfter=net