Déploiement d'une application C++ sur VPS : niveau avancé (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 : de la compilation locale à la release de production d'une application C++

\n

Le développement d'une application C++ n'est que la moitié du travail. La seconde moitié, tout aussi importante, est son déploiement fiable et sécurisé sur un serveur distant (VPS). Dans cet article, nous allons aborder une approche avancée du déploiement d'applications C++, qui va au-delà de la simple copie du binaire. Vous apprendrez à configurer une compilation automatique, à exécuter l'application en tant que service système, à organiser un reverse proxy via Nginx et à mettre en place un monitoring de base.

\n

Cet article est destiné aux développeurs déjà familiers avec C++ et les bases de Linux. Nous utiliserons des outils modernes : CMake, systemd, Nginx et Git.

\n\n

1. Automatisation de la compilation et préparation de l'environnement sur VPS

\n

1.1. Installation des dépendances et du compilateur

\n

Avant le déploiement, assurez-vous que le serveur dispose d'un compilateur à jour (g++ ou clang) et des bibliothèques nécessaires. Pour un serveur de production, il est recommandé d'utiliser la liaison statique ou la conteneurisation, mais dans le cadre de cet article, nous aborderons l'approche classique.

\n
# Mise à jour des paquets\nsudo apt update && sudo apt upgrade -y\n\n# Installation du compilateur et des outils de compilation\nsudo apt install build-essential cmake git -y\n\n# Installation des bibliothèques supplémentaires (exemple pour Boost)\nsudo apt install libboost-all-dev -y
\n\n

1.2. Création d'un script de compilation avec CMake

\n

Utilisez CMake pour gérer la compilation. Cela garantit la portabilité et simplifie l'intégration avec CI/CD. Exemple de CMakeLists.txt :

\n
cmake_minimum_required(VERSION 3.16)\nproject(MyCppApp VERSION 1.0.0 LANGUAGES CXX)\n\nset(CMAKE_CXX_STANDARD 17)\nset(CMAKE_CXX_STANDARD_REQUIRED ON)\n\n# Optimisation pour la compilation de production\nset(CMAKE_BUILD_TYPE Release)\n\n# Recherche des bibliothèques externes\nfind_package(Boost REQUIRED COMPONENTS system filesystem)\n\n# Compilation du fichier exécutable\nadd_executable(${PROJECT_NAME} src/main.cpp src/server.cpp)\ntarget_link_libraries(${PROJECT_NAME} PRIVATE Boost::system Boost::filesystem pthread)\n\n# Installation du binaire dans le système\ninstall(TARGETS ${PROJECT_NAME} DESTINATION /usr/local/bin)
\n

Après avoir créé CMakeLists.txt, effectuez la compilation sur le serveur :

\n
cd /opt/myapp\nmkdir build && cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake -j$(nproc)\nsudo make install
\n\n

2. Configuration de systemd pour la gestion du processus

\n

Lancer l'application en arrière-plan et la redémarrer automatiquement en cas de crash est une tâche cruciale. Utilisez systemd pour créer un service stable.

\n\n

2.1. Création du fichier unit

\n

Créez le fichier /etc/systemd/system/myapp.service :

\n
[Unit]\nDescription=My C++ Production Application\nAfter=network.target\n\n[Service]\nType=simple\nUser=www-data\nGroup=www-data\nWorkingDirectory=/opt/myapp\nExecStart=/usr/local/bin/MyCppApp --config /etc/myapp/config.json\nRestart=always\nRestartSec=5\nStandardOutput=journal\nStandardError=journal\n\n# Sécurité\nNoNewPrivileges=true\nProtectSystem=full\nProtectHome=true\n\n[Install]\nWantedBy=multi-user.target
\n\n

2.2. Lancement et vérification du service

\n
sudo systemctl daemon-reload\nsudo systemctl enable myapp.service\nsudo systemctl start myapp.service\nsudo systemctl status myapp.service
\n

Désormais, votre application C++ démarrera automatiquement au démarrage du système et redémarrera en cas de panne.

\n\n

3. Reverse proxy via Nginx et configuration HTTPS

\n

L'accès direct au port de l'application n'est ni sécurisé ni pratique. Utilisez Nginx comme reverse proxy pour gérer les fichiers statiques, la terminaison SSL et l'équilibrage de charge.

\n\n

3.1. Installation et configuration de Nginx

\n
sudo apt install nginx certbot python3-certbot-nginx -y
\n

Créez la configuration /etc/nginx/sites-available/myapp :

\n
server {\n    listen 80;\n    server_name myapp.example.com;\n\n    location / {\n        pr                

Blogs

Book Recommendations