Bereitstellung einer Kotlin-Anwendung auf einem VPS: Schritt-für-Schritt-Anleitung
Die Entwicklung in Kotlin ist nur die halbe Miete. Damit Ihre Anwendung für Benutzer verfügbar wird, muss sie auf einem Server bereitgestellt werden. In dieser Anleitung betrachten wir detailliert den Prozess der Bereitstellung einer Kotlin (JVM)-Anwendung auf einem VPS (Virtual Private Server). Sie erfahren, wie Sie den Server vorbereiten, die Anwendung bauen, den Autostart konfigurieren und eine sichere HTTPS-Verbindung gewährleisten. Der Artikel richtet sich an Entwickler, die mit den Grundlagen von Kotlin und Linux vertraut sind.
1. Vorbereitung des Servers und der Umgebung
Bevor Sie Code hochladen, müssen Sie den VPS vorbereiten. Wir verwenden Ubuntu 22.04 LTS. Verbinden Sie sich per SSH mit dem Server:
ssh root@ihre-server-ipAktualisieren Sie die Pakete und installieren Sie die notwendigen Komponenten:
sudo apt update && sudo apt upgrade -ysudo apt install openjdk-17-jdk git nginx certbot python3-certbot-nginx -yÜberprüfen Sie die Java-Version:
java -versionJetzt erstellen wir einen Benutzer für die Anwendung (Prozesse als root auszuführen ist unsicher):
sudo useradd -m -s /bin/bash kotlinappsudo usermod -aG sudo kotlinappsu - kotlinappStellen Sie sicher, dass der Benutzer Java ausführen kann.
2. Bauen und Hochladen der Kotlin-Anwendung
Wir betrachten zwei beliebte Frameworks: Ktor und Spring Boot. Beide werden in eine ausführbare JAR-Datei gebaut. Beispiel für Ktor:
// build.gradle.kts (Ausschnitt)plugins { kotlin("jvm") version "1.9.22" application id("io.ktor.plugin") version "2.3.7"}
application { mainClass.set("com.example.ApplicationKt")}
ktor { fatJar { archiveFileName.set("myapp.jar") }}Bauen Sie das fat JAR lokal:
./gradlew buildFatJarLaden Sie das JAR per SCP auf den Server hoch (auf dem lokalen Rechner ausführen):
scp build/libs/myapp.jar kotlinapp@ihre-server-ip:/home/kotlinapp/app/Erstellen Sie auf dem Server die Verzeichnisstruktur:
mkdir -p /home/kotlinapp/app/logs3. Konfiguration von systemd für den Autostart
Damit die Anwendung automatisch beim Serverstart startet und bei Abstürzen neu gestartet wird, erstellen wir einen systemd-Dienst. Erstellen Sie die Datei /etc/systemd/system/kotlinapp.service:
sudo nano /etc/systemd/system/kotlinapp.serviceFügen Sie die folgende Konfiguration ein:
[Unit]Description=Kotlin Application ServiceAfter=network.target
[Service]User=kotlinappGroup=kotlinappWorkingDirectory=/home/kotlinapp/appExecStart=/usr/bin/java -jar myapp.jarRestart=alwaysRestartSec=10StandardOutput=append:/home/kotlinapp/app/logs/out.logStandardError=append:/home/kotlinapp/app/logs/err.logEnvironment="PORT=8080"
[Install]WantedBy=multi-user.targetAktivieren und starten Sie den Dienst:
sudo systemctl daemon-reloadsudo systemctl enable kotlinappsudo systemctl start kotlinappÜberprüfen Sie den Status:
sudo systemctl status kotlinappLogs können Sie mit folgendem Befehl ansehen:
journalctl -u kotlinapp -f4. Konfiguration von Nginx und HTTPS (SSL)
Der Proxy-Server Nginx leitet Anfragen von Port 80/443 an Port 8080 Ihrer Kotlin-Anwendung weiter. Erstellen Sie die Konfiguration:
sudo nano /etc/nginx/sites-available/kotlinappBeispielkonfiguration:
server { listen 80; server_name yourdomain.com www.yourdomain.com;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }}Aktivieren Sie die Seite und holen Sie ein SSL-Zertifikat:
sudo ln -s /etc/ngin