Implantação de aplicação Rust em VPS: guia passo a passo

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

Rust não é apenas uma linguagem de programação da moda. Suas principais vantagens são segurança de memória, alto desempenho e comportamento previsível. Quando você escreve em Rust, obtém um arquivo binário que pode ser executado em qualquer servidor Linux sem instalar uma máquina virtual ou interpretador. Isso torna a implantação de aplicações Rust em VPS incrivelmente simples e eficiente.

Neste artigo, vamos detalhar todo o processo: desde a construção do projeto até a configuração de um ambiente de produção com Nginx e systemd. Você aprenderá como compilar corretamente a aplicação, configurar a inicialização automática e garantir a segurança.

Preparando o VPS e o ambiente

Escolhendo e configurando o servidor

Qualquer VPS com Linux (Ubuntu 22.04 LTS é a escolha ideal) é adequado para implantar uma aplicação Rust. Requisitos mínimos: 1 vCPU, 1 GB de RAM, 20 GB SSD. Isso é suficiente para a maioria dos serviços web em Rust.

Primeiro, conecte-se ao servidor via SSH:

ssh root@your-ip-address

Atualize os pacotes e instale as ferramentas necessárias:

apt update && apt upgrade -y
apt install curl git build-essential pkg-config libssl-dev -y

Instalando Rust no servidor

Embora vamos compilar o binário localmente, às vezes é conveniente compilar diretamente no servidor. Instale o Rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

Verifique a instalação:

rustc --version
cargo --version

Compilando a aplicação Rust para produção

Otimizando a compilação

Para produção, você precisa compilar a aplicação com a flag --release. Isso ativa otimizações que reduzem o tamanho do binário e aceleram sua operação. Adicione as seguintes configurações ao Cargo.toml:

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true
  • opt-level = 3 — otimização máxima de velocidade
  • lto = true — Otimização em Tempo de Ligação, reduz tamanho e acelera
  • codegen-units = 1 — aumenta o tempo de compilação, mas melhora a otimização
  • strip = true — remove informações de depuração, reduzindo o binário em 30-50%

Compilando o binário

Execute o comando em sua máquina local (ou servidor CI):

cargo build --release

O binário finalizado está localizado em target/release/nome-do-projeto. Seu tamanho deve ser pequeno — de 2 a 10 MB para uma aplicação web típica.

Copiando para o servidor

Use scp ou rsync para transferir o arquivo:

scp target/release/sua-aplicacao root@seu-ip:/opt/app/

Crie o diretório /opt/app no servidor com antecedência:

mkdir -p /opt/app
mkdir -p /opt/app/static   # se houver arquivos estáticos

Configurando systemd para inicialização automática

Criando o serviço

Systemd é o gerenciador de serviços padrão no Linux. Ele iniciará automaticamente sua aplicação após uma reinicialização do servidor e a reiniciará em caso de falha.

Crie o arquivo de serviço:

nano /etc/systemd/system/rust-app.service

Adicione a configuração:

[Unit]
Description=Aplicação Web Rust
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/opt/app
ExecStart=/opt/app/sua-aplicacao
Restart=always
RestartSec=5
Environment=RUST_LOG=info
Environment=DATABASE_URL=postgres://usuario:senha@localhost/nomedb

[Install]
WantedBy=multi-user.target

Parâmetros importantes:

  • User — executar como usuário não privilegiado www-data
  • Restart=always — reinicialização automática

Blogs

Book Recommendations