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 --releaseIsso 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 = true1.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=80801.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/.env2. 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.targetAtive o serviço:
sudo systemctl daemon-reloadsudo systemctl enable myappsudo systemctl start myappsudo systemctl status myapp2.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 nginx2.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.com3. 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