Bereitstellung einer Kotlin-Anwendung auf einem VPS: Fortgeschrittenes Niveau

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

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



Die Entwicklung mit Kotlin ist nur die halbe Miete. Wahre Meisterschaft zeigt sich, wenn Ihre Anwendung in einer Produktionsumgebung auf Ihrem eigenen VPS-Server läuft. In diesem Artikel betrachten wir fortgeschrittene Techniken zur Bereitstellung von Kotlin-Anwendungen: vom Bau eines fat JAR bis zur Konfiguration eines unterbrechungsfreien Betriebs mit systemd, eines Reverse Proxy über Nginx und der Automatisierung durch CI/CD. Das Material richtet sich an Entwickler, die bereits mit den Grundlagen von Kotlin vertraut sind und ein professionelles Niveau erreichen möchten.



1. Vorbereitung des Produktions-Builds der Kotlin-Anwendung



Der erste Schritt ist die Erstellung eines optimierten Builds. Wir verwenden das shadow-Plugin für Gradle, das alle Abhängigkeiten in eine einzige ausführbare JAR-Datei (fat JAR) packt.



Fügen Sie in build.gradle.kts hinzu:



plugins {    kotlin("jvm") version "1.9.22"    id("com.github.johnrengelman.shadow") version "8.1.1"    application}

application { mainClass.set("com.example.MainKt")}

tasks.shadowJar { archiveBaseName.set("app") archiveClassifier.set("") archiveVersion.set("") minimize()}


Bauen Sie das JAR mit dem Befehl:



./gradlew shadowJar


Als Ergebnis erhalten Sie die Datei build/libs/app.jar. Für die Produktion wird empfohlen, Debug-Logs zu deaktivieren und die Protokollierungsebene über Umgebungsvariablen zu konfigurieren.



Beispielkonfiguration von logback.xml für die Produktion:



<configuration>    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">        <file>/var/log/app/app.log</file>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>/var/log/app/app.%d{yyyy-MM-dd}.log</fileNamePattern>            <maxHistory>30</maxHistory>        </rollingPolicy>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>        </encoder>    </appender>

<root level="INFO"> <appender-ref ref="FILE"/> </root></configuration>


2. Erstellen eines systemd-Dienstes für den automatischen Start



Damit die Anwendung automatisch beim Systemstart startet und bei Fehlern neu gestartet wird, verwenden wir systemd. Erstellen Sie die Datei /etc/systemd/system/kotlin-app.service:



[Unit]Description=Kotlin Application ServiceAfter=network.target

[Service]Type=simpleUser=appuserGroup=appuserWorkingDirectory=/opt/kotlin-appExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/kotlin-app/app.jarRestart=on-failureRestartSec=10StandardOutput=journalStandardError=journalEnvironment="APP_ENV=production"Environment="DB_URL=jdbc:postgresql://localhost:5432/mydb"

[Install]WantedBy=multi-user.target


Führen Sie nach dem Erstellen der Datei Folgendes aus:



sudo systemctl daemon-reloadsudo systemctl enable kotlin-appsudo systemctl start kotlin-app


Überprüfen Sie den Status:



sudo systemctl status kotlin-app


Logs können Sie mit journalctl -u kotlin-app -f anzeigen.



3. Konfiguration von Nginx als Reverse Proxy mit SSL



Nginx sorgt für Lastverteilung, Caching und HTTPS. Installieren Sie Nginx und Certbot:



sudo apt updatesudo apt install nginx certbot python3-certbot-nginx


Erstellen Sie die Konfiguration /etc/nginx/sites-available/kotlin-app:



server {    listen 80;    server_name yourdomain.com;    return 301 https://$server_name$request_uri;}

server { listen 443 ssl http2; server_name yourdomain.com;

ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letse

Blogs

Buchempfehlungen