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

Rust é uma linguagem de programação de sistema conhecida por seu desempenho e segurança de memória. No entanto, escrever um aplicativo é apenas metade do trabalho. Para que seu projeto fique acessível aos usuários na internet, ele precisa ser implantado (deploy) em um servidor. Neste artigo, veremos o processo passo a passo de deploy de uma aplicação Rust em uma VPS (Virtual Private Server).

Usaremos um servidor web típico baseado no framework actix-web, configuraremos o ambiente, compilaremos uma build de release, iniciaremos a aplicação como um serviço systemd e configuraremos um proxy reverso Nginx com certificado SSL. Seguindo este guia, você poderá implantar qualquer aplicação Rust em um servidor remoto rodando Linux.



1. Preparação do servidor e ambiente

1.1. Conexão ao servidor

Primeiramente, conecte-se à sua VPS via SSH:

ssh root@your_server_ip

Recomenda-se criar um usuário separado com privilégios limitados (sudo) por segurança, mas para simplificar, neste guia trabalharemos como root.



1.2. Instalação do Rust no servidor

Embora possamos compilar a aplicação localmente e apenas copiar o binário, é mais conveniente instalar o Rust no servidor para uma possível recompilação para a arquitetura alvo. Use o script oficial:

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

Verifique a instalação:

rustc --versioncargo --version


1.3. Instalação de dependências do sistema

Para compilar algumas crates (por exemplo, openssl), podem ser necessárias bibliotecas do sistema. Instale-as:

apt updateapt install build-essential pkg-config libssl-dev git -y


2. Compilação e preparação da aplicação

2.1. Exemplo de um servidor web simples com actix-web

Vamos criar uma aplicação mínima. Se você já tem um projeto, pule esta etapa.

Cargo.toml:

[package]name = "my_rust_app"version = "0.1.0"edition = "2021"

[dependencies]actix-web = "4"serde = { version = "1", features = ["derive"] }

src/main.rs:

use actix_web::{get, web, App, HttpServer, Responder};

#[get("/")]async fn index() -> impl Responder { "Hello from Rust on VPS!"}

#[actix_web::main]async fn main() -> std::io::Result<()> { println!("Starting server at 0.0.0.0:8080"); HttpServer::new(|| { App::new() .service(index) }) .bind("0.0.0.0:8080")? .run() .await}


2.2. Compilação em modo release

Compile a aplicação em sua máquina local ou diretamente no servidor. Para máximo desempenho, use a flag --release:

cargo build --release

O binário pronto estará em target/release/my_rust_app (o nome corresponde ao nome do pacote).



2.3. Copiando o binário para o servidor (se compilou localmente)

Se você compilou a aplicação em sua máquina local, copie-o via SCP:

scp target/release/my_rust_app root@your_server_ip:/opt/my_rust_app/

No servidor, crie o diretório /opt/my_rust_app com antecedência:

mkdir -p /opt/my_rust_app


3. Configuração da inicialização via systemd

Para que a aplicação inicie automaticamente na inicialização do sistema e seja reiniciada em caso de falha, criaremos um serviço systemd.



3.1. Criando o arquivo unit

Crie o arquivo /etc/systemd/system/my_rust_app.service:

[Unit]Description=My Rust Web ApplicationAfter=network.target

[Service]Type=simpleUser=rootWorkingDirectory=/opt/my_rust_appExecStart=/opt/my_rust_app/my_rust_appRestart=on-failureRestartSec=10

[Install]WantedBy=multi-user.target

Blogs

Book Recommendations