Implantação no Servidor
Este guia explica como implantar o PCH-SIG no servidor de produção (serveur-production).
Arquitetura do servidor
Servidor de produção
| Parâmetro | Valor |
|---|---|
| IP | serveur-production |
| SO | Windows Server |
| Docker | Docker Toolbox + VirtualBox |
| VM Docker | 192.168.99.100 |
| Caminho do projeto | C:\pch-sig |
Mapeamento de portas
| Porta externa | Destino | Serviço |
|---|---|---|
| 3000 | 192.168.99.100:80 | Frontend |
| 8000 | 192.168.99.100:8000 | Backend API |
| 8025 | 192.168.99.100:8025 | Mailpit |
| 3001 | 192.168.99.100:3001 | Grafana |
Pré-requisitos
Acesso ao servidor
Conexão PowerShell Remoto:
$cred = Get-Credential # AdminREDISSEII / Admin1REDISSEIInetwork1
Enter-PSSession -ComputerName serveur-production -Credential $cred
Docker Machine iniciado
docker-machine status default
# Esperado: Running
Se parado:
docker-machine start default
Implantação do Frontend
Etapa 1: Build local
Na sua máquina de desenvolvimento:
cd frontend
npm install
npm run build
Etapa 2: Copiar para o servidor
# Criar uma sessão
$cred = Get-Credential
$session = New-PSSession -ComputerName serveur-production -Credential $cred
# Copiar o build
Copy-Item -Path ".\frontend\build\*" -Destination "C:\pch-sig\frontend\build" -ToSession $session -Recurse -Force
# Fechar a sessão
Remove-PSSession $session
Etapa 3: Reiniciar o contêiner frontend
No servidor:
docker-machine ssh default "cd /c/pch-sig/deploy && docker compose restart frontend"
Implantação do Backend
Etapa 1: Copiar os arquivos
# Copiar o backend
Copy-Item -Path ".\backend\*" -Destination "C:\pch-sig\backend" -ToSession $session -Recurse -Force
Etapa 2: Instalar as dependências
No servidor:
docker exec -it pch_backend composer install --no-dev --optimize-autoloader
Etapa 3: Executar as migrações
docker exec -it pch_backend php bin/console doctrine:migrations:migrate --no-interaction
Etapa 4: Limpar o cache
docker exec -it pch_backend php bin/console cache:clear --env=prod
docker exec -it pch_backend php bin/console cache:warmup --env=prod
Script de implantação
deploy.ps1
# Script de implantação PCH-SIG
param(
[string]$Component = "all" # all, frontend, backend
)
$ServerIP = "serveur-production"
$RemotePath = "C:\pch-sig"
# Criar a sessão
$cred = Get-Credential
$session = New-PSSession -ComputerName $ServerIP -Credential $cred
try {
if ($Component -eq "all" -or $Component -eq "frontend") {
Write-Host "Implantação Frontend..." -ForegroundColor Cyan
# Build
Set-Location frontend
npm run build
Set-Location ..
# Copiar
Copy-Item -Path ".\frontend\build\*" -Destination "$RemotePath\frontend\build" -ToSession $session -Recurse -Force
Write-Host "Frontend implantado!" -ForegroundColor Green
}
if ($Component -eq "all" -or $Component -eq "backend") {
Write-Host "Implantação Backend..." -ForegroundColor Cyan
# Copiar
Copy-Item -Path ".\backend\src\*" -Destination "$RemotePath\backend\src" -ToSession $session -Recurse -Force
Copy-Item -Path ".\backend\config\*" -Destination "$RemotePath\backend\config" -ToSession $session -Recurse -Force
Write-Host "Backend implantado!" -ForegroundColor Green
}
# Reiniciar os serviços
Invoke-Command -Session $session -ScriptBlock {
& docker-machine ssh default "cd /c/pch-sig/deploy && docker compose restart"
}
Write-Host "Implantação concluída!" -ForegroundColor Green
}
finally {
Remove-PSSession $session
}
Configuração do Proxy de Portas
Adicionar os redirecionamentos
# Frontend
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.99.100
# Backend
netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=192.168.99.100
# Mailpit
netsh interface portproxy add v4tov4 listenport=8025 listenaddress=0.0.0.0 connectport=8025 connectaddress=192.168.99.100
# Grafana
netsh interface portproxy add v4tov4 listenport=3001 listenaddress=0.0.0.0 connectport=3001 connectaddress=192.168.99.100
Verificar os redirecionamentos
netsh interface portproxy show all
Remover um redirecionamento
netsh interface portproxy delete v4tov4 listenport=3000 listenaddress=0.0.0.0
Verificação da implantação
Testar o acesso
| Teste | URL | Esperado |
|---|---|---|
| Frontend | https://sig.ucp-pch.org | Página de login |
| API | https://sig.ucp-pch.org/api | Doc API |
| Health | https://sig.ucp-pch.org/api/health | Status OK |
Verificar os contêineres
docker-machine ssh default "docker ps"
Consultar os logs
docker-machine ssh default "docker logs pch_backend --tail 50"
Atualização do Service Worker
Após implantação do frontend, os usuários devem limpar seu cache:
-
Incrementar a versão em
frontend/public/service-worker.js:const CACHE_NAME = 'pch-sig-cache-v3'; // Incrementar -
Informar os usuários para fazer
Ctrl+Shift+R
Rollback
Restaurar uma versão anterior
# Os backups estão em C:\pch-sig\backups\
# Restaurar o frontend
Copy-Item -Path "C:\pch-sig\backups\frontend-2024-01-15\*" -Destination "C:\pch-sig\frontend\build" -Recurse -Force
# Reiniciar
docker-machine ssh default "cd /c/pch-sig/deploy && docker compose restart frontend"