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.
En distribuciones, selecciona Ubuntu 22.04 LTS. La siguiente guía utilizará esta versión como ejemplo.
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.
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.
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.