Bereitstellung einer C++-Anwendung auf einem VPS: Schritt-für-Schritt-Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Bereitstellung einer C++-Anwendung auf VPS: Schritt-für-Schritt-Anleitung



Die Entwicklung in C++ endet oft mit der Bereitstellungsphase – dem Übertragen der fertigen Anwendung auf einen entfernten Server (VPS). Im Gegensatz zu interpretierten Sprachen erfordert C++ die Kompilierung für die Zielarchitektur, die richtige Konfiguration der Umgebung und die Einrichtung des automatischen Starts. In diesem Artikel werden wir den gesamten Zyklus durchgehen: von der Vorbereitung des VPS bis zum Start der Produktionsversion einer C++-Anwendung mit systemd und Nginx.



1. Vorbereitung des VPS und Installation der erforderlichen Werkzeuge



Stellen Sie vor der Bereitstellung sicher, dass Ihr VPS unter Ubuntu 20.04/22.04 oder Debian 11/12 läuft. Verbinden Sie sich per SSH:



ssh root@ihre-server-ip


Aktualisieren Sie die Paketdatenbank und installieren Sie den Compiler g++, das Build-System CMake und den Prozess-Manager screen (für den Fall der Fehlersuche):



apt update && apt upgrade -yapt install build-essential cmake screen git -y


Überprüfen Sie die Compiler-Version:



g++ --version


Wenn Sie Bibliotheken verwenden (z. B. Boost, OpenSSL), installieren Sie diese vorab:



apt install libboost-all-dev libssl-dev -y


2. Kompilierung der C++-Anwendung für die Serverumgebung



Übertragen Sie den Quellcode auf den VPS. Am einfachsten geht das über Git:



git clone https://github.com/ihr-repository/project.gitcd project


Erstellen Sie einen Build-Ordner und führen Sie die Kompilierung mit Optimierungen für die Produktion durch:



mkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemake -j$(nproc)


Das Flag -j$(nproc) beschleunigt den Build, indem es alle Prozessorkerne nutzt. Nach erfolgreicher Kompilierung erscheint eine ausführbare Datei (z. B. app). Überprüfen Sie deren Funktionsfähigkeit:



./app


Wenn die Anwendung Konfigurationsdateien oder Ressourcen verwendet, kopieren Sie diese in den Ordner neben der Binärdatei oder konfigurieren Sie die Pfade im Code über argv.



3. Einrichtung des automatischen Starts mit systemd



Damit die Anwendung beim Systemstart startet und bei Abstürzen automatisch neu gestartet wird, erstellen Sie einen systemd-Dienst.



Erstellen Sie die Datei /etc/systemd/system/myapp.service:



nano /etc/systemd/system/myapp.service


Fügen Sie den folgenden Inhalt ein (ersetzen Sie die Pfade durch Ihre eigenen):



[Unit]Description=My C++ ApplicationAfter=network.target

[Service]ExecStart=/root/project/build/appWorkingDirectory=/root/project/buildRestart=alwaysRestartSec=5User=rootGroup=rootEnvironment="APP_ENV=production"

[Install]WantedBy=multi-user.target


Erklärung der Parameter:

  • Restart=always – Neustart bei jeder Beendigung (außer bei Stopp durch systemctl stop).
  • RestartSec=5 – Pause von 5 Sekunden vor dem erneuten Start.
  • Environment – Übergabe von Umgebungsvariablen (z. B. für die Konfiguration).


Aktivieren und starten Sie den Dienst:



systemctl daemon-reloadsystemctl enable myappsystemctl start myapp


Überprüfen Sie den Status:



systemctl status myapp


Sie sollten active (running) sehen. Wenn die Anwendung abstürzt, startet systemd sie automatisch nach 5 Sekunden neu.



4. Einrichtung von Nginx als Reverse Proxy (optional)



Wenn Ihre C++-Anwendung HTTP abhört (z. B. REST API auf Port 8080), ist es sinnvoll, Nginx davor zu schalten für SSL-Terminierung, Lastverteilung und statische Dateien.



Installieren Sie Nginx:



apt install nginx -y


Erstellen Sie eine Konfiguration für Ihre Domain (oder IP) in /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 H

Blogs

Buchempfehlungen