Implantação de aplicação C++ em VPS: guia passo a passo
O desenvolvimento em C++ frequentemente termina com a etapa de implantação — transferência da aplicação pronta para um servidor remoto (VPS). Diferente de linguagens interpretadas, C++ requer compilação para a arquitetura alvo, configuração correta do ambiente e organização da inicialização automática. Neste artigo, vamos abordar o ciclo completo: desde a preparação do VPS até a execução da versão de produção de uma aplicação C++ usando systemd e Nginx.
1. Preparação do VPS e instalação das ferramentas necessárias
Antes da implantação, certifique-se de que seu VPS está rodando Ubuntu 20.04/22.04 ou Debian 11/12. Conecte-se via SSH:
ssh root@seu-ip-do-servidorAtualize a base de pacotes e instale o compilador g++, o sistema de build CMake e o gerenciador de processos screen (para depuração):
apt update && apt upgrade -yapt install build-essential cmake screen git -yVerifique a versão do compilador:
g++ --versionSe você usa bibliotecas (por exemplo, Boost, OpenSSL), instale-as antecipadamente:
apt install libboost-all-dev libssl-dev -y2. Compilação da aplicação C++ para o ambiente do servidor
Transfira o código-fonte para o VPS. A maneira mais simples é via Git:
git clone https://github.com/seu-repositorio/project.gitcd projectCrie uma pasta de build e execute a compilação com otimizações para produção:
mkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemake -j$(nproc)A flag -j$(nproc) acelera a compilação usando todos os núcleos da CPU. Após a compilação bem-sucedida, um arquivo executável será gerado (por exemplo, app). Verifique seu funcionamento:
./appSe a aplicação usa arquivos de configuração ou recursos, copie-os para a pasta ao lado do binário ou configure os caminhos no código via argv.
3. Configuração da inicialização automática via systemd
Para que a aplicação inicie junto com o sistema e reinicie automaticamente em caso de falhas, crie um serviço systemd.
Crie o arquivo /etc/systemd/system/myapp.service:
nano /etc/systemd/system/myapp.serviceInsira o seguinte conteúdo (substitua os caminhos pelos seus):
[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.targetExplicação dos parâmetros:
Restart=always— reinicia em qualquer término (exceto quando parado via systemctl stop).RestartSec=5— pausa de 5 segundos antes de reiniciar.Environment— passagem de variáveis de ambiente (por exemplo, para configuração).
Ative e inicie o serviço:
systemctl daemon-reloadsystemctl enable myappsystemctl start myappVerifique o status:
systemctl status myappVocê deve ver active (running). Se a aplicação falhar, o systemd a reiniciará automaticamente após 5 segundos.
4. Configuração do Nginx como proxy reverso (opcional)
Se sua aplicação C++ escuta HTTP (por exemplo, uma API REST na porta 8080), é útil colocar o Nginx na frente para terminação SSL, balanceamento e conteúdo estático.
Instale o Nginx:
apt install nginx -yCrie a configuração para seu domínio (ou IP) em /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
```