Despliegue de una aplicación Kotlin en VPS: guía paso a paso de la A a la Z

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: Por qué el despliegue de una aplicación Kotlin requiere un enfoque especial

\n

Desarrollar 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.

\n

En 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\n

1. Preparación del proyecto y compilación del archivo JAR

\n

Antes 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\n

1.1. Configuración de build.gradle.kts

\n

Asegúrese de que en su archivo build.gradle.kts esté presente el plugin para compilar un JAR ejecutable. Para Spring Boot, se ve así:

\n
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
\n

Para Ktor puro (sin Spring), use el plugin application:

\n
plugins {\n    kotlin("jvm") version "1.9.22"\n    application\n}\n\napplication {\n    mainClass.set("com.example.ApplicationKt")\n}\n
\n\n

1.2. Compilación del proyecto

\n

Ejecute el comando de compilación en la carpeta raíz del proyecto:

\n
./gradlew clean build
\n

Despué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.

\n
Importante: Para aplicaciones Ktor, asegúrese de que en el archivo src/main/resources/application.conf esté especificado el puerto correcto (generalmente 8080) y el modo de funcionamiento.
\n\n

2. Configuración del servidor VPS

\n

Para 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\n

2.1. Instalación de Java (JRE)

\n

Kotlin se compila en bytecode de JVM, por lo que en el servidor debe estar instalado Java Runtime Environment (JRE) versión 17 o superior:

\n
sudo apt update\nsudo apt install openjdk-17-jre -y\njava -version
\n\n

2.2. Creación de un usuario para la aplicación

\n

Por razones de seguridad, no se recomienda ejecutar la aplicación como root. Crearemos un usuario separado:

\n
sudo useradd -m -s /bin/bash kotlinapp\nsudo passwd kotlinapp
\n\n

2.3. Carga del archivo JAR al servidor

\n

Use SCP para copiar el archivo desde su máquina local al VPS:

\n
scp build/libs/app-0.0.1-SNAPSHOT.jar kotlinapp@your-server-ip:/home/kotlinapp/app.jar
\n\n

3. Ejecución de la aplicación y configuración de Systemd

\n

Para 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\n

3.1. Ejecución manual (para verificar)

\n

Conéctese al servidor como usuario kotlinapp y ejecute:

\n
cd /home/kotlinapp\njava -jar app.jar
\n

Si la aplicación se inicia y responde en el puerto 8080, pase al siguiente paso. Detenga el proceso (Ctrl+C).

\n\n

3.2. Creación del archivo Unit de Systemd

\n

Cree el archivo de servicio:

\n
sudo nano /etc/systemd/system/kotlin-app.service
\n

Inserte el siguiente contenido:

\n
[Unit]\nDescription=Kotlin Application Service\nAfter=net                

Blogs

Book Recommendations