Introducción: ¿Por qué desplegar Swift en VPS?
Swift no es solo un lenguaje para aplicaciones iOS y macOS. Gracias al framework Vapor y al soporte nativo de Linux, puedes crear soluciones de servidor de alto rendimiento con Swift. Desplegar una aplicación de este tipo en un VPS (Servidor Privado Virtual) abre posibilidades para crear tus propias API, sitios web y microservicios.
En este artículo, analizaremos el ciclo completo de despliegue de una aplicación Swift en un servidor remoto con Ubuntu 22.04. Aprenderás a preparar el entorno, compilar el proyecto, configurar el inicio automático y el servidor proxy. La guía es adecuada tanto para principiantes como para desarrolladores experimentados que deseen sistematizar sus conocimientos.
1. Preparación del servidor e instalación de Swift
El primer paso es alquilar un VPS (recomendamos 2 núcleos, 2 GB de RAM). Después de conectarte por SSH, realiza la actualización del sistema e instala las dependencias.
1.1. Configuraciones básicas
ssh root@tu-ip-del-servidorapt update && apt upgrade -yapt install curl git build-essential pkg-config libssl-dev zlib1g-dev -y1.2. Instalación de Swift Toolchain
Para Ubuntu 22.04, usa la distribución oficial de Swift. Verifica la versión actual en swift.org.
# Descargar Swift 5.9 (ejemplo)wget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gz
# Descomprimirtar -xzf swift-5.9-RELEASE-ubuntu22.04.tar.gzmv swift-5.9-RELEASE-ubuntu22.04 /usr/share/swift
# Agregar al PATHecho 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrcsource ~/.bashrc
# Verificaciónswift --version2. Compilación y configuración de la aplicación
Consideremos el despliegue de una aplicación típica de Vapor. Supongamos que tu proyecto ya está en un repositorio Git.
2.1. Clonación y compilación
cd /var/www/git clone https://github.com/tu-usuario/tu-repositorio.git myappcd myapp
# Compilación en modo Releaseswift build -c releaseDespués de una compilación exitosa, el archivo ejecutable se encontrará en .build/release/Run. Para Vapor, por defecto se usa el puerto 8080.
2.2. Ejecución y prueba
# Ejecución temporal (Ctrl+C para detener).build/release/Run serve --hostname 0.0.0.0 --port 8080Verifica el funcionamiento: abre en el navegador http://tu-ip-del-servidor:8080. Si ves una respuesta, todo funciona.
3. Configuración de systemd para inicio automático
Para que la aplicación se inicie automáticamente después de reiniciar el servidor, crearemos un servicio systemd.
3.1. Creación del servicio
nano /etc/systemd/system/myapp.serviceInserta el siguiente código (reemplaza las rutas con las tuyas):
[Unit]Description=Swift Vapor ApplicationAfter=network.target
[Service]Type=simpleUser=www-dataGroup=www-dataWorkingDirectory=/var/www/myappExecStart=/var/www/myapp/.build/release/Run serve --hostname 127.0.0.1 --port 8080Restart=on-failureRestartSec=5
[Install]WantedBy=multi-user.target3.2. Activación e inicio
systemctl daemon-reloadsystemctl enable myappsystemctl start myappsystemctl status myappSi el estado es active (running), el servicio está funcionando. Ahora la aplicación se iniciará automáticamente.
4. Configuración de Nginx y SSL (HTTPS)
El servidor proxy Nginx es necesario para manejar archivos estáticos, balanceo de carga y agregar un certificado SSL.
4.1. Instalación de Nginx
apt install nginx -y4.2. Configuración del proxy
Crea un archivo de configuración para tu dominio o IP:
nano /etc/nginx/sites-available/myappserver { listen 80; server_name tu-dominio.ru;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $ho