Implantação de aplicação Rust em VPS: passo a passo do A ao Z

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

\n\n

Você escreveu uma aplicação incrível em Rust. Ela é rápida, segura e não falha. Mas como fazer para que ela funcione 24/7 em um servidor remoto e esteja disponível para os usuários? A implantação de uma aplicação Rust em VPS (Virtual Private Server) é um processo que inclui a compilação do binário, configuração do ambiente, execução como um serviço do sistema e, frequentemente, a instalação de um reverse proxy.

\n\n

Neste artigo, percorreremos todo o caminho, do zero até uma aplicação Rust totalmente funcional, implantada em um VPS com Ubuntu. Você aprenderá como preparar o servidor, compilar o projeto, configurar a inicialização automática e garantir a segurança. Este guia é adequado tanto para servidores web (Actix-web, Axum, Rocket) quanto para qualquer outro daemon em Rust.

\n\n

Vamos começar.

\n\n

1. Preparação do servidor e ambiente

\n\n

Antes de implantar o código, precisamos preparar o "terreno". Usaremos Ubuntu 22.04 LTS, mas as instruções também servem para Debian.

\n\n

Conexão ao servidor e configuração básica

\n\n

Conecte-se ao seu VPS via SSH:

\n\n
ssh root@seu-ip-do-servidor
\n\n

Atualize os pacotes e crie um usuário (trabalhar como root é uma má prática):

\n\n
apt update && apt upgrade -y\nadduser deployer\nusermod -aG sudo deployer
\n\n

Configure as chaves SSH para o novo usuário, para não precisar digitar a senha toda vez.

\n\n

Instalação do Rust no servidor

\n\n

A maneira mais confiável é usar o script oficial rustup. Mude para o usuário deployer e execute:

\n\n
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
\n\n

Após a instalação, recarregue o shell ou execute:

\n\n
source $HOME/.cargo/env
\n\n

Verifique a versão:

\n\n
rustc --version
\n\n

Para a compilação de produção, precisaremos de vinculação estática (para que o binário funcione em qualquer Linux sem bibliotecas extras). Instale o musl-tools:

\n\n
sudo apt install musl-tools -y\nrustup target add x86_64-unknown-linux-musl
\n\n

2. Compilação e transferência do binário para o servidor

\n\n

É melhor compilar a aplicação em sua máquina local (ou em CI/CD) e depois copiar o binário pronto para o servidor. Isso é mais rápido e não sobrecarrega o VPS.

\n\n

Compilação da versão de produção

\n\n

No seu computador local, na pasta do projeto, execute:

\n\n
cargo build --release --target x86_64-unknown-linux-musl
\n\n

Isso criará um binário estaticamente vinculado, sem dependências do glibc. O tamanho será maior, mas ele será executado em qualquer Linux.

\n\n

Exemplo de um servidor web simples com Actix-web para teste (arquivo src/main.rs):

\n\n
use actix_web::{web, App, HttpServer, Responder};\n\nasync fn hello() -> impl Responder {\n    "Hello from Rust on VPS!"\n}\n\n#[actix_web::main]\nasync fn main() -> std::io::Result<()> {\n    HttpServer::new(|| {\n        App::new().route("/", web::get().to(hello))\n    })\n    .bind("0.0.0.0:8080")?\n    .run()\n    .await\n}
\n\n

Cópia para o servidor

\n\n

Use scp para cópia segura:

\n\n
scp ./target/x86_64-unknown-linux-musl/release/seu_projeto deployer@seu-ip-do-servidor:/home/deployer/
\n\n

No servidor, mova o binário para /usr/local/bin:

\n\n
sudo mv /home/deployer/seu_projeto /usr/local/bin/my-rust-app\nsudo chmod +x /usr/local/bin/my-rust-app
\n\n

3. Configuração do systemd para inicialização automática

\n\n

Para que a aplicação seja iniciada na inicialização do sistema, reinicie após uma falha e funcione em segundo plano, criaremos um serviço systemd.

\n\n

Crie o arquivo de serviço:

\n\n
sudo nano /etc/systemd/system/rust-app.service
\n\n

Insira a seguinte configuração (substitua deployer pelo seu usuário):

\n\n
[Unit]\nDescription=Rust Application\nAfter=network.target\n\n[Service]\nType=simple\nUse                

Blogs

Book Recommendations