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

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

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

Desarrollar en Kotlin es solo la mitad del trabajo. Para que su aplicación esté disponible para los usuarios, debe implementarla en un servidor. En esta guía, veremos en detalle el proceso de despliegue de una aplicación Kotlin (JVM) en un VPS (Virtual Private Server). Aprenderá cómo preparar el servidor, compilar la aplicación, configurar el inicio automático y garantizar una conexión HTTPS segura. El artículo está dirigido a desarrolladores familiarizados con los conceptos básicos de Kotlin y Linux.



1. Preparación del servidor y el entorno

Antes de cargar el código, es necesario preparar el VPS. Usaremos Ubuntu 22.04 LTS. Conéctese al servidor por SSH:

ssh root@su-ip-del-servidor

Actualice los paquetes e instale los componentes necesarios:

sudo apt update && sudo apt upgrade -ysudo apt install openjdk-17-jdk git nginx certbot python3-certbot-nginx -y

Verifique la versión de Java:

java -version

Ahora crearemos un usuario para la aplicación (ejecutar procesos como root no es seguro):

sudo useradd -m -s /bin/bash kotlinappsudo usermod -aG sudo kotlinappsu - kotlinapp

Asegúrese de que el usuario pueda ejecutar Java.



2. Compilación y carga de la aplicación Kotlin

Consideremos dos frameworks populares: Ktor y Spring Boot. Ambos se compilan en un archivo JAR ejecutable. Ejemplo para Ktor:

// build.gradle.kts (fragmento)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") }}

Compile el fat JAR localmente:

./gradlew buildFatJar

Cargue el JAR al servidor mediante SCP (ejecute en su máquina local):

scp build/libs/myapp.jar kotlinapp@su-ip:/home/kotlinapp/app/

En el servidor, cree la estructura:

mkdir -p /home/kotlinapp/app/logs


3. Configuración de systemd para inicio automático

Para que la aplicación se inicie automáticamente al arrancar el servidor y se reinicie en caso de fallos, crearemos un servicio systemd. Cree el archivo /etc/systemd/system/kotlinapp.service:

sudo nano /etc/systemd/system/kotlinapp.service

Inserte la siguiente configuración:

[Unit]Description=Servicio de Aplicación KotlinAfter=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.target

Habilite e inicie el servicio:

sudo systemctl daemon-reloadsudo systemctl enable kotlinappsudo systemctl start kotlinapp

Verifique el estado:

sudo systemctl status kotlinapp

Los logs se pueden ver con el comando:

journalctl -u kotlinapp -f


4. Configuración de Nginx y HTTPS (SSL)

El servidor proxy Nginx redirigirá las solicitudes del puerto 80/443 al puerto 8080 de su aplicación Kotlin. Cree la configuración:

sudo nano /etc/nginx/sites-available/kotlinapp

Ejemplo de configuración:

server {    listen 80;    server_name sud dominio.com www.sud dominio.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; }}

Active el sitio y obtenga un certificado SSL:

sudo ln -s /etc/ngin                

Blogs

Book Recommendations