Déploiement d'une application Rust sur VPS : guide pas à pas de A à Z

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 et comment le déployer

Rust est un langage de programmation système qui combine les performances du C++ avec la sécurité mémoire. Grâce à l'absence de ramasse-miettes et à la possibilité de compiler en fichier binaire natif, les applications Rust sont parfaitement adaptées au déploiement sur un VPS (Virtual Private Server). Dans cet article, nous allons parcourir le cycle complet de déploiement : de la compilation du projet à la configuration du proxy inverse et du monitoring. Vous apprendrez comment transformer votre application Rust en un service de production stable.



1. Préparation : compilation de l'application Rust pour le VPS

La première étape consiste à compiler un fichier binaire optimisé. Pour cela, vous aurez besoin de la chaîne d'outils Rust sur votre machine locale (ou sur le serveur).



1.1. Compilation en mode release

À la racine du projet, exécutez la commande :

cargo build --release

Cela créera un binaire optimisé dans le dossier target/release/. Pour les applications web utilisant actix-web ou rocket, la taille du fichier peut être de 5 à 15 Mo. Pour réduire la taille, vous pouvez ajouter dans Cargo.toml :

[profile.release]opt-level = 3lto = truecodegen-units = 1strip = true


1.2. Configuration des variables d'environnement

Créez un fichier .env.prod pour la configuration de production. Exemple pour un serveur web :

DATABASE_URL=postgres://user:pass@localhost:5432/mydbRUST_LOG=infoSERVER_HOST=0.0.0.0SERVER_PORT=8080


1.3. Transfert des fichiers vers le VPS

Copiez le binaire, les fichiers statiques et la configuration sur le serveur. Utilisez 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/.env


2. Configuration du serveur : systemd et Nginx

Pour le démarrage automatique de l'application au redémarrage du serveur et pour assurer la sécurité, nous utilisons systemd et Nginx.



2.1. Création du service systemd

Créez le fichier /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.target

Activez le service :

sudo systemctl daemon-reloadsudo systemctl enable myappsudo systemctl start myappsudo systemctl status myapp


2.2. Configuration de Nginx comme proxy inverse

L'application Rust écoutera sur le port 8080 (interne), tandis que Nginx acceptera les requêtes externes sur les ports 80/443. Créez la configuration /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; }}

Activez le site :

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx


2.3. Configuration HTTPS (optionnelle)

Installez Certbot et obtenez un certificat SSL :

sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d your-domain.com


3. Gestion de la base de données et migrations

Si votre application Rust utilise une base de données (par exemple, PostgreSQL avec diesel ou sqlx), configurez-la sur le VPS.



3.1. Installation de PostgreSQL

sudo apt updatesudo apt install postgresql postgres                

Blogs

Book Recommendations