Despliegue de una aplicación Swift en VPS: guía paso a paso

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Despliegue de una aplicación Swift en VPS: guía paso a paso

El desarrollo de aplicaciones de servidor en Swift utilizando el framework Vapor está ganando popularidad. Sin embargo, después de escribir el código surge la pregunta: ¿cómo alojar una aplicación Swift en un servidor remoto? En este artículo, analizaremos el proceso completo de despliegue de una aplicación Swift en un VPS (Ubuntu 22.04), desde la instalación de los componentes necesarios hasta la configuración del reverse proxy y la ejecución en modo producción.



1. Preparación del servidor e instalación de Swift

Primero, nos conectamos al VPS por SSH y actualizamos la base de paquetes:

sudo apt update && sudo apt upgrade -y

Swift requiere dependencias para la compilación. Las instalamos:

sudo apt install clang libicu-dev libcurl4-openssl-dev libssl-dev python3 pkg-config -y

Luego, descargamos e instalamos Swift para Ubuntu. En el momento de escribir este artículo, la versión actual es la 5.9. Descargamos el archivo:

wget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gz

Lo descomprimimos y lo movemos a /usr/share:

tar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gzsudo mv swift-5.9-RELEASE-ubuntu22.04 /usr/share/swift

Añadimos Swift al PATH. Abrimos ~/.bashrc:

nano ~/.bashrc

Añadimos la línea al final del archivo:

export PATH="/usr/share/swift/usr/bin:$PATH"

Aplicamos los cambios:

source ~/.bashrc

Verificamos la instalación:

swift --version

Debería mostrarse la versión de Swift 5.9.



2. Compilación de la aplicación Swift (Vapor) en el servidor

Clonamos el repositorio con la aplicación o copiamos los archivos mediante SCP. Como ejemplo, crearemos un proyecto de prueba con Vapor:

mkdir ~/myapp && cd ~/myappswift package init --type executable

Añadimos Vapor en Package.swift (ejemplo de un servidor mínimo):

// swift-tools-version:5.9import PackageDescription

let package = Package( name: "myapp", platforms: [.macOS(.v13)], dependencies: [ .package(url: "https://github.com/vapor/vapor.git", from: "4.89.0") ], targets: [ .executableTarget(name: "myapp", dependencies: [ .product(name: "Vapor", package: "vapor") ]) ])

Creamos el archivo Sources/myapp/main.swift:

import Vapor

let app = try Application(.detect())app.get { req in return "Hello, Swift on VPS!"}try app.run()

Compilamos el proyecto en modo release:

swift build -c release

Después de la compilación, el binario se encontrará en .build/release/myapp. Lo copiamos a una ubicación conveniente:

cp .build/release/myapp /usr/local/bin/myapp


3. Configuración de Nginx como reverse proxy

La aplicación Swift escuchará en el puerto 8080, y Nginx redirigirá el tráfico desde el puerto 80 (o 443 para HTTPS). Instalamos Nginx:

sudo apt install nginx -y

Creamos un archivo de configuración para nuestra aplicación:

sudo nano /etc/nginx/sites-available/myapp

Contenido del archivo:

server {    listen 80;    server_name your-domain.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; }}

Activamos la configuración y reiniciamos Nginx:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl restart nginx

No olvides configurar un registro DNS A para tu dominio, que apunte a la dirección IP del VPS.

Blogs

Book Recommendations