Despliegue de una aplicación C++ en VPS: guía paso a paso

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Despliegue de una aplicación C++ en VPS: guía paso a paso



El desarrollo en C++ a menudo termina con la etapa de despliegue: transferir la aplicación terminada a un servidor remoto (VPS). A diferencia de los lenguajes interpretados, C++ requiere compilación para la arquitectura objetivo, configuración correcta del entorno y organización del inicio automático. En este artículo, analizaremos el ciclo completo: desde la preparación del VPS hasta la ejecución de la versión de producción de una aplicación C++ usando systemd y Nginx.



1. Preparación del VPS e instalación de herramientas necesarias



Antes del despliegue, asegúrese de que su VPS funcione con Ubuntu 20.04/22.04 o Debian 11/12. Conéctese por SSH:



ssh root@su-ip-del-servidor


Actualice la base de paquetes e instale el compilador g++, el sistema de compilación CMake y el administrador de procesos screen (para depuración):



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


Verifique la versión del compilador:



g++ --version


Si utiliza bibliotecas (por ejemplo, Boost, OpenSSL), instálelas de antemano:



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


2. Compilación de la aplicación C++ para el entorno del servidor



Transfiera el código fuente al VPS. La forma más sencilla es a través de Git:



git clone https://github.com/su-repositorio/project.gitcd project


Cree una carpeta de compilación y ejecute la compilación con optimizaciones para producción:



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


La bandera -j$(nproc) acelera la compilación usando todos los núcleos del procesador. Después de una compilación exitosa, aparecerá un archivo ejecutable (por ejemplo, app). Verifique su funcionamiento:



./app


Si la aplicación utiliza archivos de configuración o recursos, cópielos en la carpeta junto al binario o configure las rutas en el código a través de argv.



3. Configuración del inicio automático mediante systemd



Para que la aplicación se inicie al arrancar el sistema y se reinicie automáticamente en caso de fallos, cree un servicio systemd.



Cree el archivo /etc/systemd/system/myapp.service:



nano /etc/systemd/system/myapp.service


Inserte el siguiente contenido (reemplace las rutas con las suyas):



[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


Explicación de los parámetros:

  • Restart=always — reinicio ante cualquier finalización (excepto detención mediante systemctl stop).
  • RestartSec=5 — pausa de 5 segundos antes del reinicio.
  • Environment — transferencia de variables de entorno (por ejemplo, para configuración).


Active e inicie el servicio:



systemctl daemon-reloadsystemctl enable myappsystemctl start myapp


Verifique el estado:



systemctl status myapp


Debería ver active (running). Si la aplicación falla, systemd la reiniciará automáticamente después de 5 segundos.



4. Configuración de Nginx como proxy inverso (opcional)



Si su aplicación C++ escucha HTTP (por ejemplo, API REST en el puerto 8080), es útil colocar Nginx delante para terminación SSL, balanceo y contenido estático.



Instale Nginx:



apt install nginx -y


Cree una configuración para su dominio (o IP) en /etc/nginx/sites-available/myapp:



server {    listen 80;    server_name su-dominio.com;

location / { proxy_pass http://127.0.0.1:8080; proxy_set_header H

Blogs

Book Recommendations