Despliegue de aplicación Java en VPS: guía paso a paso de la A a la Z
Desarrollar una aplicación Java es solo la mitad del trabajo. La segunda parte, igualmente importante, es su implementación en un servidor. Muchos desarrolladores enfrentan dificultades al transferir el código de su máquina local a un VPS remoto. En este artículo, analizaremos el proceso completo de despliegue de una aplicación Java (usando Spring Boot como ejemplo) en un servidor privado virtual (VPS) con sistema operativo Ubuntu 22.04. Aprenderá cómo configurar el entorno, compilar el proyecto, ejecutarlo como un servicio y garantizar el acceso seguro a través de Nginx y SSL.
1. Preparación del VPS e instalación del software necesario
Antes de cargar el código, es necesario preparar el servidor. Usaremos Ubuntu 22.04 LTS. Conéctese al servidor por SSH:
ssh root@su-dirección-ipActualice el gestor de paquetes e instale las utilidades básicas:
apt update && apt upgrade -yapt install curl git -yAhora instalaremos OpenJDK 17 (la versión recomendada para la mayoría de los proyectos modernos):
apt install openjdk-17-jdk -yVerifique la instalación:
java -versionDebería ver algo como:
openjdk version "17.0.9" 2023-10-17A continuación, instalaremos Maven para compilar el proyecto (si usa Gradle, reemplace los comandos según corresponda):
apt install maven -ymvn -versionCon esto, la preparación del entorno básico está completa.
2. Compilación y carga de la aplicación Java al servidor
Compile su aplicación Java localmente. Vaya a la carpeta raíz del proyecto y ejecute:
mvn clean package -DskipTestsDespués de una compilación exitosa, en la carpeta target aparecerá un archivo JAR (por ejemplo, myapp-0.0.1-SNAPSHOT.jar). Ahora debe cargarlo en el servidor. Use scp (ejecute desde su máquina local):
scp target/myapp-0.0.1-SNAPSHOT.jar root@su-dirección-ip:/opt/myapp/En el servidor, cree un directorio para la aplicación y mueva el archivo:
mkdir -p /opt/myappmv myapp-0.0.1-SNAPSHOT.jar /opt/myapp/myapp.jarVerifique que el archivo JAR esté en su lugar y ejecútelo manualmente para probarlo:
cd /opt/myappjava -jar myapp.jarSi la aplicación se inicia sin errores, pase al siguiente paso.
3. Configuración de systemd para inicio automático
Para que la aplicación se inicie automáticamente al arrancar el sistema y se reinicie en caso de fallo, crearemos un servicio systemd.
Cree el archivo de servicio:
nano /etc/systemd/system/myapp.serviceInserte el siguiente contenido (reemplace youruser con el nombre de usuario bajo el cual se ejecutará la aplicación, o deje root):
[Unit]Description=My Java Spring Boot ApplicationAfter=network.target
[Service]User=rootWorkingDirectory=/opt/myappExecStart=/usr/bin/java -jar /opt/myapp/myapp.jarSuccessExitStatus=143Restart=alwaysRestartSec=10
[Install]WantedBy=multi-user.targetExplicación de los parámetros:
After=network.target— el servicio se inicia después de que la red esté disponible.Restart=always— reinicio automático en caso de fallo.RestartSec=10— pausa de 10 segundos antes del reinicio.SuccessExitStatus=143— manejo correcto de la señal de detención.
Ahora active e inicie el servicio:
systemctl daemon-reloadsystemctl enable myappsystemctl start myappVerifique el estado:
systemctl status myappDebería ver Active: active (running). Ahora su aplicación se iniciará