Déploiement d'une application Rust sur un VPS : guide étape par étape

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi Rust est idéal pour la production

Rust n'est pas simplement un langage de programmation à la mode. Ses principaux atouts sont la sécurité mémoire, des performances élevées et un comportement prévisible. Lorsque vous écrivez en Rust, vous obtenez un fichier binaire qui peut être exécuté sur n'importe quel serveur Linux sans avoir à installer de machine virtuelle ou d'interpréteur. Cela rend le déploiement d'applications Rust sur un VPS incroyablement simple et efficace.

Dans cet article, nous allons détailler le processus complet : de la compilation du projet à la configuration de l'environnement de production avec Nginx et systemd. Vous apprendrez à compiler correctement l'application, à configurer le démarrage automatique et à assurer la sécurité.

Préparation du VPS et de l'environnement

Choix et configuration du serveur

Pour déployer une application Rust, n'importe quel VPS sous Linux convient (Ubuntu 22.04 LTS est le choix optimal). Configuration minimale requise : 1 vCPU, 1 Go de RAM, 20 Go de SSD. Cela est suffisant pour la plupart des services web en Rust.

La première étape consiste à se connecter au serveur via SSH :

ssh root@votre-adresse-ip

Mettez à jour les paquets et installez les outils nécessaires :

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

Installation de Rust sur le serveur

Bien que nous compilions le binaire localement, il est parfois pratique de compiler directement sur le serveur. Installez Rust :

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

Vérifiez l'installation :

rustc --version
cargo --version

Compilation de l'application Rust pour la production

Optimisation de la compilation

Pour la production, vous devez compiler l'application avec le flag --release. Cela active les optimisations qui réduisent la taille du binaire et accélèrent son exécution. Ajoutez les paramètres suivants dans Cargo.toml :

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true
  • opt-level = 3 — optimisation maximale de la vitesse
  • lto = true — Link Time Optimization, réduit la taille et accélère
  • codegen-units = 1 — augmente le temps de compilation mais améliore l'optimisation
  • strip = true — supprime les informations de débogage, réduisant la taille du binaire de 30 à 50 %

Compilation du binaire

Exécutez la commande sur votre machine locale (ou sur le serveur CI) :

cargo build --release

Le binaire prêt se trouve dans target/release/nom-du-projet. Sa taille doit être petite — de 2 à 10 Mo pour une application web typique.

Copie sur le serveur

Utilisez scp ou rsync pour transférer le fichier :

scp target/release/votre-application root@votre-adresse-ip:/opt/app/

Créez le répertoire /opt/app sur le serveur à l'avance :

mkdir -p /opt/app
mkdir -p /opt/app/static   # s'il y a des fichiers statiques

Configuration de systemd pour le démarrage automatique

Création du service

Systemd est le gestionnaire de services standard sous Linux. Il démarrera automatiquement votre application après un redémarrage du serveur et la relancera en cas de crash.

Créez le fichier de service :

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

Ajoutez la configuration :

[Unit]
Description=Rust Web Application
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/opt/app
ExecStart=/opt/app/votre-application
Restart=always
RestartSec=5
Environment=RUST_LOG=info
Environment=DATABASE_URL=postgres://user:pass@localhost/dbname

[Install]
WantedBy=multi-user.target

Paramètres importants :

  • User — exécutez sous un utilisateur non privilégié www-data
  • Restart=always — redémarrage automatique

Blogs

Book Recommendations