Despliegue de una aplicación Rust en VPS: guía paso a paso de la A a la Z

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

Introducción: Por qué Rust es ideal para producción y cómo desplegarlo

Rust es un lenguaje de programación de sistemas que combina el rendimiento de C++ con la seguridad de la memoria. Gracias a la ausencia de un recolector de basura y la posibilidad de compilar en un archivo binario nativo, las aplicaciones Rust son ideales para el despliegue en VPS (Virtual Private Server). En este artículo, recorreremos el ciclo completo de despliegue: desde la compilación del proyecto hasta la configuración del proxy inverso y el monitoreo. Aprenderá cómo convertir su aplicación Rust en un servicio de producción estable.



1. Preparación: compilación de la aplicación Rust para VPS

El primer paso es compilar un archivo binario optimizado. Para ello, necesitaremos el toolchain de Rust en su máquina local (o en el servidor).



1.1. Compilación en modo release

En la raíz del proyecto, ejecute el comando:

cargo build --release

Esto creará un binario optimizado en la carpeta target/release/. Para aplicaciones web con actix-web o rocket, el tamaño del archivo puede ser de 5-15 MB. Para reducir el tamaño, puede agregar en Cargo.toml:

[profile.release]opt-level = 3lto = truecodegen-units = 1strip = true


1.2. Configuración de variables de entorno

Cree un archivo .env.prod para la configuración de producción. Ejemplo para un servidor web:

DATABASE_URL=postgres://user:pass@localhost:5432/mydbRUST_LOG=infoSERVER_HOST=0.0.0.0SERVER_PORT=8080


1.3. Transferencia de archivos al VPS

Copie el binario, los archivos estáticos y la configuración al servidor. Use scp o rsync:

scp target/release/myapp user@your-vps-ip:/home/user/app/scp -r static/ user@your-vps-ip:/home/user/app/static/scp .env.prod user@your-vps-ip:/home/user/app/.env


2. Configuración del servidor: systemd y Nginx

Para el inicio automático de la aplicación al reiniciar el servidor y para garantizar la seguridad, usamos systemd y Nginx.



2.1. Creación del servicio systemd

Cree el archivo /etc/systemd/system/myapp.service:

[Unit]Description=Rust web applicationAfter=network.target

[Service]User=www-dataWorkingDirectory=/home/user/appExecStart=/home/user/app/myappRestart=alwaysRestartSec=10EnvironmentFile=/home/user/app/.env

[Install]WantedBy=multi-user.target

Active el servicio:

sudo systemctl daemon-reloadsudo systemctl enable myappsudo systemctl start myappsudo systemctl status myapp


2.2. Configuración de Nginx como proxy inverso

La aplicación Rust escuchará en el puerto 8080 (interno), mientras que Nginx recibirá las solicitudes externas en el puerto 80/443. Cree la configuración /etc/nginx/sites-available/myapp:

server {    listen 80;    server_name your-domain.com;

location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }

location /static/ { alias /home/user/app/static/; expires 30d; }}

Active el sitio:

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


2.3. Configuración de HTTPS (opcional)

Instale Certbot y obtenga un certificado SSL:

sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d your-domain.com


3. Gestión de base de datos y migraciones

Si su aplicación Rust utiliza una base de datos (por ejemplo, PostgreSQL con diesel o sqlx), configúrela en el VPS.



3.1. Instalación de PostgreSQL

sudo apt updatesudo apt install postgresql postgres                

Blogs

Book Recommendations