Despliegue de una aplicación Swift en VPS: guía paso a paso
El desarrollo de aplicaciones de servidor con Swift está ganando popularidad rápidamente gracias al framework Vapor. Sin embargo, muchos desarrolladores de iOS/macOS enfrentan dificultades al transferir una aplicación lista a un servidor remoto. En esta guía, analizaremos en detalle cómo desplegar una aplicación Swift en un VPS, configurar el entorno y garantizar un funcionamiento estable en un entorno de producción.
1. Preparación del servidor VPS para Swift
El primer paso es alquilar un VPS (se recomienda Ubuntu 22.04 LTS) y conectarse a él mediante SSH. Después de iniciar sesión, realice la actualización del sistema:
sudo apt update && sudo apt upgrade -ysudo apt install curl git clang libicu-dev libcurl4-openssl-dev libssl-dev -yPara instalar Swift en Linux, use el script oficial de Apple:
wget https://swift.org/builds/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gztar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gzsudo mv swift-5.9-RELEASE-ubuntu22.04 /usr/share/swiftecho 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrcsource ~/.bashrcswift --versionVerifique que Swift se haya instalado correctamente; debería ver la versión del compilador.
2. Compilación de la aplicación Swift (Vapor) en el servidor
Copie el código fuente de su proyecto al servidor. La forma más conveniente es usar Git:
git clone https://github.com/su-proyecto/su-repositorio.gitcd su-repositorioCompile el proyecto en modo release. Esto creará un binario optimizado:
swift build -c releasecp .build/release/Run /usr/local/bin/myappSi usa Vapor, asegúrese de que en el archivo configure.swift esté configurado el puerto correcto (generalmente 8080). Ejemplo de configuración:
import Vapor
public func configure(_ app: Application) throws { app.http.server.configuration.hostname = "0.0.0.0" app.http.server.configuration.port = 8080 // Registro de rutas try routes(app)}Verifique el funcionamiento de la aplicación ejecutándola manualmente:
myapp --env production serveSi la aplicación se inicia y responde a las solicitudes, puede pasar a la configuración del demonio.
3. Configuración de systemd para inicio automático
Para que la aplicación se inicie automáticamente al reiniciar el servidor, cree un servicio systemd:
sudo nano /etc/systemd/system/swift-app.serviceInserte el siguiente código:
[Unit]Description=Swift Vapor ApplicationAfter=network.target
[Service]Type=simpleUser=www-dataWorkingDirectory=/var/www/myappExecStart=/usr/local/bin/myapp --env production serveRestart=on-failureRestartSec=10
[Install]WantedBy=multi-user.targetGuarde el archivo y active el servicio:
sudo systemctl daemon-reloadsudo systemctl enable swift-appsudo systemctl start swift-appsudo systemctl status swift-appSi el estado muestra active (running), todo funciona.
4. Configuración de Nginx como reverse proxy
Para un entorno de producción, se recomienda usar Nginx para proxy inverso de las solicitudes a la aplicación Swift. Esto proporcionará balanceo de carga y soporte SSL:
sudo apt install nginx -ysudo nano /etc/nginx/sites-available/swift-appEjemplo de configuración:
server { listen 80; server_name su-dominio.com;
location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
location /static/ { root /var/www/myapp/Public; expires 3