Saltar a contenido

Despliegue en DigitalOcean

Esta guía te mostrará cómo desplegar una aplicación simple "Hola mundo" de Vapor en un Droplet. Para seguir esta guía, debes tener una cuenta de DigitalOcean con la facturación configurada.

Crear Servidor

Comencemos por instalar Swift en un servidor Linux. Usa el menú de creación para crear un nuevo Droplet.

Crear Droplet

En distribuciones, selecciona Ubuntu 22.04 LTS. La siguiente guía utilizará esta versión como ejemplo.

Distribución Ubuntu

Nota

Puedes seleccionar cualquier distribución de Linux con una versión compatible con Swift. Puedes consultar qué sistemas operativos son compatibles oficialmente en la página Versiones de Swift.

Después de seleccionar la distribución, elije el plan y la región del centro de datos que prefieras. Luego, configura una clave SSH para acceder al servidor después de que se cree. Finalmente, haz clic en crear Droplet y espera a que se inicie el nuevo servidor.

Cuando el nuevo servidor esté listo, pasa el cursor sobre la dirección IP del Droplet y haz clic en copiar.

Droplet List

Configuración Inicial

Abre tu terminal y conéctate al servidor como root usando SSH.

ssh root@your_server_ip

DigitalOcean tiene una guía detallada para la configuración inicial del servidor en Ubuntu 22.04. Esta guía cubrirá rápidamente los conceptos básicos.

Configurar el Firewall

Permitir OpenSSH a través del firewall y habilitarlo.

ufw allow OpenSSH
ufw enable

Añadir Usuario

Crea un nuevo usuario además de root. Esta guía llama al nuevo usuario vapor.

adduser vapor

Permite que el usuario recién creado use sudo.

usermod -aG sudo vapor

Copia las claves SSH autorizadas del usuario root al usuario recién creado. Esto te permitirá ingresar por SSH como el nuevo usuario.

rsync --archive --chown=vapor:vapor ~/.ssh /home/vapor

Finalmente, sal de la sesión SSH actual e inicia sesión como el usuario recién creado.

exit
ssh vapor@your_server_ip

Instalar Swift

Ahora que has creado un nuevo servidor Ubuntu y has iniciado sesión como usuario no root, puedes instalar Swift.

Instalación automática con la herramienta Swiftly CLI (recomendada)

Visita el sitio web de Swiftly para obtener instrucciones sobre cómo instalar Swiftly y Swift en Linux. Después de eso, instala Swift con el siguiente comando:

Uso Básico

$ swiftly install latest

Fetching the latest stable Swift release...
Installing Swift 5.9.1
Downloaded 488.5 MiB of 488.5 MiB
Extracting toolchain...
Swift 5.9.1 installed successfully!

$ swift --version

Swift version 5.9.1 (swift-5.9.1-RELEASE)
Target: x86_64-unknown-linux-gnu

Instalar Vapor con Vapor Toolbox

Ahora que Swift está instalado, instalemos Vapor con Vapor Toolbox. Necesitarás compilar la toolbox desde el código fuente. Consulta las versiones de la toolbox en GitHub para encontrar la última versión. En este ejemplo, estamos usando 18.6.0.

Clonar y Compilar Vapor

Clona el repositorio de Vapor Toolbox.

git clone https://github.com/vapor/toolbox.git

Consulta la última versión.

cd toolbox
git checkout 18.6.0

Compila Vapor y mueve el binario a tu ruta.

swift build -c release --disable-sandbox --enable-test-discovery
sudo mv .build/release/vapor /usr/local/bin

Crear un Proyecto Vapor

Utiliza el nuevo comando de proyecto de la toolbox para iniciar un proyecto.

vapor new HelloWorld -n

Consejo

El indicador -n brinda una plantilla básica al responder automáticamente "no" a todas las preguntas.

Vapor Splash

Una vez que finalice el comando, cambia a la carpeta recién creada:

cd HelloWorld

Abrir Puerto HTTP

Para acceder a Vapor en tu servidor, abre un puerto HTTP.

sudo ufw allow 8080

Ejecutar

Ahora que Vapor está configurado y tenemos un puerto abierto, ejecutémoslo.

swift run App serve --hostname 0.0.0.0 --port 8080

Visita la IP de tu servidor a través del navegador o terminal local y deberías ver "It works!". La dirección IP es 134.122.126.139 en este ejemplo.

$ curl http://134.122.126.139:8080
It works!

De vuelta a tu servidor, deberías ver los registros de la solicitud de prueba.

[ NOTICE ] Server starting on http://0.0.0.0:8080
[ INFO ] GET /

Usa CTRL+C para salir del servidor. Puede tomar un segundo apagarlo.

¡Felicitaciones por hacer que tu aplicación Vapor funcione en un Droplet de DigitalOcean!

Próximos Pasos

El resto de esta guía indica recursos adicionales para mejorar tu despliegue.

Supervisor

Supervisor es un sistema de control de procesos que puedes ejecutar y monitorear tu ejecutable de Vapor. Con la configuración de Supervisor, tu aplicación puede iniciarse automáticamente cuando se inicia el servidor y reiniciarse en caso de que falle. Obten más información sobre Supervisor.

Nginx

Nginx es un servidor y proxy HTTP extremadamente rápido, confiable y fácil de configurar. Si bien Vapor admite el servicio directo de solicitudes HTTP, el proxy detrás de Nginx puede proporcionar un mayor rendimiento, seguridad y facilidad de uso. Obten más información sobre Nginx.