Introduction : Pourquoi le déploiement d'une application Kotlin nécessite une approche particulière
\nLe développement en Kotlin n'est que la moitié du succès. L'autre moitié est le déploiement compétent de votre application sur un serveur distant. Sans cette étape, votre code restera un simple projet local, inaccessible aux utilisateurs.
\nDans ce guide, nous allons parcourir le cycle complet de déploiement d'une application Kotlin sur un VPS (Virtual Private Server). Vous apprendrez à compiler votre projet en un fichier JAR exécutable, à configurer l'environnement serveur, à lancer l'application en tant que service et à assurer son fonctionnement stable. Cet article est destiné aux développeurs ayant déjà des connaissances de base en Kotlin et Linux.
\n\n1. Préparation du projet et construction du fichier JAR
\nAvant de charger le code sur le serveur, il est nécessaire de compiler l'application en un artefact unique. Pour les projets Kotlin utilisant Spring Boot ou Ktor, le format standard est le fichier JAR (Java Archive).
\n\n1.1. Configuration de build.gradle.kts
\nAssurez-vous que votre fichier build.gradle.kts contient le plugin pour la construction d'un JAR exécutable. Pour Spring Boot, cela ressemble à ceci :
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\nPour un Ktor pur (sans Spring), utilisez le 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. Construction du projet
\nExécutez la commande de construction dans le dossier racine du projet :
\n./gradlew clean build\nAprès une construction réussie, un fichier app-0.0.1-SNAPSHOT.jar apparaîtra dans le répertoire build/libs/ (le nom dépend de la configuration). Copiez-le sur votre ordinateur local.
src/main/resources/application.conf spécifie le bon port (généralement 8080) et le mode de fonctionnement.2. Configuration du serveur VPS
\nPour le déploiement, nous aurons besoin d'un VPS avec le système d'exploitation Ubuntu 22.04 LTS installé. On suppose que vous avez un accès SSH et les droits de superutilisateur (sudo).
\n\n2.1. Installation de Java (JRE)
\nKotlin est compilé en bytecode JVM, donc le serveur doit obligatoirement avoir installé Java Runtime Environment (JRE) version 17 ou supérieure :
\nsudo apt update\nsudo apt install openjdk-17-jre -y\njava -version\n\n2.2. Création d'un utilisateur pour l'application
\nPour des raisons de sécurité, il n'est pas recommandé d'exécuter l'application en tant que root. Créons un utilisateur dédié :
\nsudo useradd -m -s /bin/bash kotlinapp\nsudo passwd kotlinapp\n\n2.3. Téléchargement du fichier JAR sur le serveur
\nUtilisez SCP pour copier le fichier de votre machine locale vers le VPS :
\nscp build/libs/app-0.0.1-SNAPSHOT.jar kotlinapp@your-server-ip:/home/kotlinapp/app.jar\n\n3. Lancement de l'application et configuration de Systemd
\nPour que l'application démarre automatiquement au démarrage du système et ne s'arrête pas en cas de perte de connexion SSH, nous allons la configurer comme un service Systemd.
\n\n3.1. Lancement manuel (pour vérification)
\nConnectez-vous au serveur en tant qu'utilisateur kotlinapp et exécutez :
cd /home/kotlinapp\njava -jar app.jar\nSi l'application démarre et répond sur le port 8080, passez à l'étape suivante. Arrêtez le processus (Ctrl+C).
\n\n3.2. Création du fichier Unit Systemd
\nCréez le fichier de service :
\nsudo nano /etc/systemd/system/kotlin-app.service\nInsérez le contenu suivant :
\n[Unit]\nDescription=Service d'application Kotlin\nAfter=net