Introducción: Por qué el despliegue de una aplicación Kotlin requiere un enfoque especial
\nDesarrollar en Kotlin es solo la mitad del éxito. La otra mitad es el despliegue adecuado de su aplicación en un servidor remoto. Sin este paso, su código seguirá siendo solo un proyecto local, inaccesible para los usuarios.
\nEn esta guía, analizaremos el ciclo completo de despliegue de una aplicación Kotlin en un VPS (Servidor Privado Virtual). Aprenderá cómo compilar el proyecto en un archivo JAR ejecutable, configurar el entorno del servidor, ejecutar la aplicación como un servicio y garantizar su funcionamiento estable. El artículo está dirigido a desarrolladores que ya tienen conocimientos básicos de Kotlin y Linux.
\n\n1. Preparación del proyecto y compilación del archivo JAR
\nAntes de cargar el código en el servidor, es necesario compilar la aplicación en un único artefacto. Para proyectos Kotlin escritos con Spring Boot o Ktor, el formato estándar es el archivo JAR (Java Archive).
\n\n1.1. Configuración de build.gradle.kts
\nAsegúrese de que en su archivo build.gradle.kts esté presente el plugin para compilar un JAR ejecutable. Para Spring Boot, se ve así:
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\nPara Ktor puro (sin Spring), use el 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. Compilación del proyecto
\nEjecute el comando de compilación en la carpeta raíz del proyecto:
\n./gradlew clean build\nDespués de una compilación exitosa, en el directorio build/libs/ aparecerá el archivo app-0.0.1-SNAPSHOT.jar (el nombre depende de la configuración). Cópielo en su computadora local.
src/main/resources/application.conf esté especificado el puerto correcto (generalmente 8080) y el modo de funcionamiento.2. Configuración del servidor VPS
\nPara el despliegue, necesitaremos un VPS con el sistema operativo Ubuntu 22.04 LTS instalado. Se asume que tiene acceso por SSH y privilegios de superusuario (sudo).
\n\n2.1. Instalación de Java (JRE)
\nKotlin se compila en bytecode de JVM, por lo que en el servidor debe estar instalado Java Runtime Environment (JRE) versión 17 o superior:
\nsudo apt update\nsudo apt install openjdk-17-jre -y\njava -version\n\n2.2. Creación de un usuario para la aplicación
\nPor razones de seguridad, no se recomienda ejecutar la aplicación como root. Crearemos un usuario separado:
\nsudo useradd -m -s /bin/bash kotlinapp\nsudo passwd kotlinapp\n\n2.3. Carga del archivo JAR al servidor
\nUse SCP para copiar el archivo desde su máquina local al VPS:
\nscp build/libs/app-0.0.1-SNAPSHOT.jar kotlinapp@your-server-ip:/home/kotlinapp/app.jar\n\n3. Ejecución de la aplicación y configuración de Systemd
\nPara que la aplicación se inicie automáticamente al arrancar el sistema y no se detenga al perder la conexión SSH, la configuraremos como un servicio de Systemd.
\n\n3.1. Ejecución manual (para verificar)
\nConéctese al servidor como usuario kotlinapp y ejecute:
cd /home/kotlinapp\njava -jar app.jar\nSi la aplicación se inicia y responde en el puerto 8080, pase al siguiente paso. Detenga el proceso (Ctrl+C).
\n\n3.2. Creación del archivo Unit de Systemd
\nCree el archivo de servicio:
\nsudo nano /etc/systemd/system/kotlin-app.service\nInserte el siguiente contenido:
\n[Unit]\nDescription=Kotlin Application Service\nAfter=net