Pular para o conteúdo principal

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âmetroValor
IPserveur-production
SOWindows Server
DockerDocker Toolbox + VirtualBox
VM Docker192.168.99.100
Caminho do projetoC:\pch-sig

Mapeamento de portas

Porta externaDestinoServiço
3000192.168.99.100:80Frontend
8000192.168.99.100:8000Backend API
8025192.168.99.100:8025Mailpit
3001192.168.99.100:3001Grafana

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

TesteURLEsperado
Frontendhttps://sig.ucp-pch.orgPágina de login
APIhttps://sig.ucp-pch.org/apiDoc API
Healthhttps://sig.ucp-pch.org/api/healthStatus 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:

  1. Incrementar a versão em frontend/public/service-worker.js:

    const CACHE_NAME = 'pch-sig-cache-v3';  // Incrementar
  2. 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"

Próximos passos