Déploiement d'une application Kotlin sur VPS : guide étape par étape
Le développement en Kotlin n'est que la moitié du travail. Pour que votre application soit accessible aux utilisateurs, elle doit être déployée sur un serveur. Dans ce guide, nous allons examiner en détail le processus de déploiement d'une application Kotlin (JVM) sur un VPS (Virtual Private Server). Vous apprendrez à préparer le serveur, à compiler l'application, à configurer le démarrage automatique et à assurer une connexion HTTPS sécurisée. Cet article s'adresse aux développeurs familiers avec les bases de Kotlin et de Linux.
1. Préparation du serveur et de l'environnement
Avant de télécharger le code, il est nécessaire de préparer le VPS. Nous utiliserons Ubuntu 22.04 LTS. Connectez-vous au serveur via SSH :
ssh root@votre-ip-serveurMettez à jour les paquets et installez les composants nécessaires :
sudo apt update && sudo apt upgrade -ysudo apt install openjdk-17-jdk git nginx certbot python3-certbot-nginx -yVérifiez la version de Java :
java -versionCréons maintenant un utilisateur pour l'application (exécuter des processus en tant que root n'est pas sécurisé) :
sudo useradd -m -s /bin/bash kotlinappsudo usermod -aG sudo kotlinappsu - kotlinappAssurez-vous que l'utilisateur peut exécuter Java.
2. Compilation et téléchargement de l'application Kotlin
Considérons deux frameworks populaires : Ktor et Spring Boot. Les deux sont compilés en un fichier JAR exécutable. Exemple pour Ktor :
// build.gradle.kts (fragment)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") }}Compilez le fat JAR localement :
./gradlew buildFatJarTéléchargez le JAR sur le serveur via SCP (exécutez sur la machine locale) :
scp build/libs/myapp.jar kotlinapp@votre-ip:/home/kotlinapp/app/Sur le serveur, créez la structure :
mkdir -p /home/kotlinapp/app/logs3. Configuration de systemd pour le démarrage automatique
Pour que l'application démarre automatiquement au lancement du serveur et redémarre en cas de panne, créons un service systemd. Créez le fichier /etc/systemd/system/kotlinapp.service :
sudo nano /etc/systemd/system/kotlinapp.serviceInsérez la configuration suivante :
[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.targetActivez et démarrez le service :
sudo systemctl daemon-reloadsudo systemctl enable kotlinappsudo systemctl start kotlinappVérifiez le statut :
sudo systemctl status kotlinappLes logs peuvent être consultés avec la commande :
journalctl -u kotlinapp -f4. Configuration de Nginx et HTTPS (SSL)
Le serveur proxy Nginx redirigera les requêtes du port 80/443 vers le port 8080 de votre application Kotlin. Créez la configuration :
sudo nano /etc/nginx/sites-available/kotlinappExemple de configuration :
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; }}Activez le site et obtenez un certificat SSL :
sudo ln -s /etc/ngin