Bereitstellung einer C++-Anwendung auf einem VPS: Schritt-für-Schritt-Anleitung von A bis Z

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

Einleitung: Warum C++ auf einem VPS modern und effizient ist



Viele Entwickler glauben fälschlicherweise, dass die Ära von C++ in der Webentwicklung und im Backend vorbei ist. Tatsächlich bleibt C++ für hochlastige Systeme, Spieleserver, Finanzanwendungen und IoT-Lösungen die Nummer eins in Sachen Leistung. Die Bereitstellung einer C++-Anwendung auf einem VPS (Virtual Private Server) ist eine Fähigkeit, die einen Ingenieur aus der Masse der Entwickler, die mit interpretierten Sprachen arbeiten, hervorhebt.



In diesem Artikel behandeln wir den gesamten Zyklus: vom Kauf eines VPS und der Einrichtung der Umgebung bis zur Kompilierung Ihres C++-Projekts und dessen Start als Produktivdienst. Sie erfahren, wie Sie typische Fehler vermeiden und den Bereitstellungsprozess so weit wie möglich automatisieren können.



Schritt 1: Vorbereitung des VPS und Installation der erforderlichen Werkzeuge



Auswahl und erste Serverkonfiguration

Für eine C++-Anwendung benötigen Sie einen VPS mit Linux (Ubuntu 22.04 LTS ist die optimale Wahl). Mindestanforderungen: 1 vCPU, 1 GB RAM und 10 GB SSD. Nach dem Kauf des Servers verbinden Sie sich per SSH mit ihm:

ssh root@ip_Ihres_Servers


Aktualisieren Sie die Systempakete:

apt update && apt upgrade -y


Installation des Compilers und der Build-Tools

Für C++ benötigen wir g++ (oder clang) und cmake:

apt install build-essential cmake git -y


Überprüfen Sie die Installation:

g++ --versioncmake --version


Git einrichten und Repository vorbereiten

Wenn Ihr Projekt auf GitHub/GitLab gehostet wird, klonen Sie es auf den Server:

cd /optgit clone https://github.com/Ihr-Benutzername/Ihr-Repository.gitcd Ihr-Repository


Schritt 2: Kompilierung der C++-Anwendung für die Produktion



Einfaches Beispiel eines C++-Servers (zum Testen)

Erstellen wir einen minimalen HTTP-Server in C++ unter Verwendung von Sockets. Dieser Code lauscht auf Port 8080 und antwortet mit "Hello from C++!".

// server.cpp#include <iostream>#include <sys/socket.h>#include <netinet/in.h>#include <unistd.h>#include <cstring>

int main() { int server_fd, new_socket; struct sockaddr_in address; int opt = 1; int addrlen = sizeof(address); char buffer[1024] = {0}; const char *hello = "HTTP/1.1 200 OKContent-Length: 20

Hello from C++!";

// Socket erstellen if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); exit(EXIT_FAILURE); }

// An Port 8080 binden if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { perror("setsockopt"); exit(EXIT_FAILURE); } address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(8080);

if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); }

if (listen(server_fd, 3) < 0) { perror("listen"); exit(EXIT_FAILURE); }

std::cout << "Server listening on port 8080..." << std::endl;

while (true) { if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) { perror("accept"); exit(EXIT_FAILURE); } read(new_socket, buffer, 1024); send(new_socket, hello, strlen(hello), 0); close(new_socket); } return 0;}


Kompilierung mit Optimierungen

Für den Produktivbuild verwenden wir Optimierungsflags:

g++ -O3 -march=native -flto -static -o server server.cpp
  • -O3 — maximale Geschwindigkeitsoptimierung.
  • -march=native — Optimierung für die Architektur Ihres Prozessors.
  • -flto<

Blogs

Buchempfehlungen