Implantação de aplicação C++ em VPS: nível avançado (guia passo a passo)

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: da compilação local ao release de produção da aplicação C++

Desenvolver uma aplicação C++ é apenas metade do trabalho. A segunda parte, igualmente importante, é sua implantação confiável e segura em um servidor remoto (VPS). Neste artigo, abordaremos uma abordagem avançada para implantar aplicações C++, que vai além da simples cópia do binário. Você aprenderá como configurar a compilação automática, executar a aplicação como um serviço do sistema, organizar um reverse proxy via Nginx e implementar monitoramento básico.

O artigo é destinado a desenvolvedores que já estão familiarizados com C++ e os fundamentos do Linux. Usaremos ferramentas modernas: CMake, systemd, Nginx e Git.



1. Automação da compilação e preparação do ambiente no VPS

1.1. Instalação de dependências e compilador

Antes da implantação, certifique-se de que o servidor tenha um compilador atualizado (g++ ou clang) e as bibliotecas necessárias. Para servidores de produção, recomenda-se o uso de linkagem estática ou conteinerização, mas neste artigo abordaremos a abordagem clássica.

# Atualização de pacotessudo apt update && sudo apt upgrade -y

# Instalação do compilador e ferramentas de compilaçãosudo apt install build-essential cmake git -y

# Instalação de bibliotecas adicionais (exemplo para Boost)sudo apt install libboost-all-dev -y


1.2. Criação do script de compilação com CMake

Use o CMake para gerenciar a compilação. Isso garante portabilidade e simplifica a integração com CI/CD. Exemplo de CMakeLists.txt:

cmake_minimum_required(VERSION 3.16)project(MyCppApp VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Otimização para compilação de produçãoset(CMAKE_BUILD_TYPE Release)

# Busca por bibliotecas externasfind_package(Boost REQUIRED COMPONENTS system filesystem)

# Compilação do arquivo executáveladd_executable(${PROJECT_NAME} src/main.cpp src/server.cpp)target_link_libraries(${PROJECT_NAME} PRIVATE Boost::system Boost::filesystem pthread)

# Instalação do binário no sistemainstall(TARGETS ${PROJECT_NAME} DESTINATION /usr/local/bin)

Após criar o CMakeLists.txt, execute a compilação no servidor:

cd /opt/myappmkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemake -j$(nproc)sudo make install


2. Configuração do systemd para gerenciamento do processo

Executar a aplicação em segundo plano e reiniciá-la automaticamente em caso de falha é uma tarefa crítica. Use o systemd para criar um serviço estável.



2.1. Criação do arquivo unit

Crie o arquivo /etc/systemd/system/myapp.service:

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

[Service]Type=simpleUser=www-dataGroup=www-dataWorkingDirectory=/opt/myappExecStart=/usr/local/bin/MyCppApp --config /etc/myapp/config.jsonRestart=alwaysRestartSec=5StandardOutput=journalStandardError=journal

# SegurançaNoNewPrivileges=trueProtectSystem=fullProtectHome=true

[Install]WantedBy=multi-user.target


2.2. Inicialização e verificação do serviço

sudo systemctl daemon-reloadsudo systemctl enable myapp.servicesudo systemctl start myapp.servicesudo systemctl status myapp.service

Agora sua aplicação C++ será iniciada automaticamente na inicialização do sistema e reiniciada em caso de falha.



3. Reverse proxy via Nginx e configuração de HTTPS

O acesso direto à porta da aplicação não é seguro nem conveniente. Use o Nginx como reverse proxy para lidar com arquivos estáticos, terminação SSL e balanceamento de carga.



3.1. Instalação e configuração do Nginx

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

Crie a configuração /etc/nginx/sites-available/myapp:

server {    listen 80;    server_name myapp.example.com;

location / { pr

Blogs

Book Recommendations