Implantação de aplicação Rust em VPS: guia passo a passo do início ao fim

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que Rust é ideal para produção e como implantá-lo

Rust é uma linguagem de programação de sistemas que combina o desempenho do C++ com a segurança de memória. Graças à ausência de um coletor de lixo e à possibilidade de compilação em um arquivo binário nativo, as aplicações Rust são ideais para implantação em VPS (Virtual Private Server). Neste artigo, percorreremos o ciclo completo de implantação: desde a compilação do projeto até a configuração de proxy reverso e monitoramento. Você aprenderá como transformar sua aplicação Rust em um serviço de produção estável.



1. Preparação: compilando a aplicação Rust para VPS

O primeiro passo é compilar um arquivo binário otimizado. Para isso, precisaremos do Rust toolchain na sua máquina local (ou no servidor).



1.1. Compilação em modo release

Na raiz do projeto, execute o comando:

cargo build --release

Isso criará um binário otimizado na pasta target/release/. Para aplicações web com actix-web ou rocket, o tamanho do arquivo pode ser de 5 a 15 MB. Para reduzir o tamanho, você pode adicionar ao Cargo.toml:

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


1.2. Configuração de variáveis de ambiente

Crie um arquivo .env.prod para a configuração de produção. Exemplo para um servidor web:

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


1.3. Transferência de arquivos para o VPS

Copie o binário, os arquivos estáticos e a configuração para o servidor. Use scp ou 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. Configuração do servidor: systemd e Nginx

Para iniciar automaticamente a aplicação ao reiniciar o servidor e garantir a segurança, usamos systemd e Nginx.



2.1. Criação do serviço systemd

Crie o arquivo /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

Ative o serviço:

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


2.2. Configuração do Nginx como proxy reverso

A aplicação Rust escutará na porta 8080 (interna), e o Nginx receberá as requisições externas na porta 80/443. Crie a configuração /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; }}

Ative o site:

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


2.3. Configuração de HTTPS (opcional)

Instale o Certbot e obtenha um certificado SSL:

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


3. Gerenciamento de banco de dados e migrações

Se sua aplicação Rust usa um banco de dados (por exemplo, PostgreSQL com diesel ou sqlx), configure-o no VPS.



3.1. Instalação do PostgreSQL

sudo apt updatesudo apt install postgresql postgres                

Blogs

Book Recommendations