Aller au contenu principal

Deploiement Serveur

Ce guide explique comment deployer PCH-SIG sur le serveur de production (serveur-production).

Architecture du serveur

Serveur de production

ParametreValeur
IPserveur-production
OSWindows Server
DockerDocker Toolbox + VirtualBox
VM Docker192.168.99.100
Chemin projetC:\pch-sig

Mapping des ports

Port externeDestinationService
3000192.168.99.100:80Frontend
8000192.168.99.100:8000Backend API
8025192.168.99.100:8025Mailpit
3001192.168.99.100:3001Grafana

Prerequis

Acces au serveur

Connexion PowerShell Remote :

$cred = Get-Credential  # AdminREDISSEII / Admin1REDISSEIInetwork1
Enter-PSSession -ComputerName serveur-production -Credential $cred

Docker Machine demarre

docker-machine status default
# Attendu: Running

Si arrete :

docker-machine start default

Deploiement du Frontend

Etape 1 : Build local

Sur votre machine de developpement :

cd frontend
npm install
npm run build

Etape 2 : Copier vers le serveur

# Creer une session
$cred = Get-Credential
$session = New-PSSession -ComputerName serveur-production -Credential $cred

# Copier le build
Copy-Item -Path ".\frontend\build\*" -Destination "C:\pch-sig\frontend\build" -ToSession $session -Recurse -Force

# Fermer la session
Remove-PSSession $session

Etape 3 : Redemarrer le conteneur frontend

Sur le serveur :

docker-machine ssh default "cd /c/pch-sig/deploy && docker compose restart frontend"

Deploiement du Backend

Etape 1 : Copier les fichiers

# Copier le backend
Copy-Item -Path ".\backend\*" -Destination "C:\pch-sig\backend" -ToSession $session -Recurse -Force

Etape 2 : Installer les dependances

Sur le serveur :

docker exec -it pch_backend composer install --no-dev --optimize-autoloader

Etape 3 : Executer les migrations

docker exec -it pch_backend php bin/console doctrine:migrations:migrate --no-interaction

Etape 4 : Vider le 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 deploiement

deploy.ps1

# Script de deploiement PCH-SIG
param(
[string]$Component = "all" # all, frontend, backend
)

$ServerIP = "serveur-production"
$RemotePath = "C:\pch-sig"

# Creer la session
$cred = Get-Credential
$session = New-PSSession -ComputerName $ServerIP -Credential $cred

try {
if ($Component -eq "all" -or $Component -eq "frontend") {
Write-Host "Deploiement Frontend..." -ForegroundColor Cyan

# Build
Set-Location frontend
npm run build
Set-Location ..

# Copier
Copy-Item -Path ".\frontend\build\*" -Destination "$RemotePath\frontend\build" -ToSession $session -Recurse -Force

Write-Host "Frontend deploye!" -ForegroundColor Green
}

if ($Component -eq "all" -or $Component -eq "backend") {
Write-Host "Deploiement Backend..." -ForegroundColor Cyan

# Copier
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 deploye!" -ForegroundColor Green
}

# Redemarrer les services
Invoke-Command -Session $session -ScriptBlock {
& docker-machine ssh default "cd /c/pch-sig/deploy && docker compose restart"
}

Write-Host "Deploiement termine!" -ForegroundColor Green
}
finally {
Remove-PSSession $session
}

Configuration du Proxy de Ports

Ajouter les redirections

# 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

Verifier les redirections

netsh interface portproxy show all

Supprimer une redirection

netsh interface portproxy delete v4tov4 listenport=3000 listenaddress=0.0.0.0

Verification du deploiement

Tester l'acces

TestURLAttendu
Frontendhttps://sig.ucp-pch.orgPage de login
APIhttps://sig.ucp-pch.org/apiDoc API
Healthhttps://sig.ucp-pch.org/api/healthStatus OK

Verifier les conteneurs

docker-machine ssh default "docker ps"

Consulter les logs

docker-machine ssh default "docker logs pch_backend --tail 50"

Mise a jour du Service Worker

Apres deploiement du frontend, les utilisateurs doivent vider leur cache :

  1. Incrementer la version dans frontend/public/service-worker.js :

    const CACHE_NAME = 'pch-sig-cache-v3';  // Incrementer
  2. Informer les utilisateurs de faire Ctrl+Shift+R


Rollback

Restaurer une version precedente

# Les backups sont dans C:\pch-sig\backups\

# Restaurer le frontend
Copy-Item -Path "C:\pch-sig\backups\frontend-2024-01-15\*" -Destination "C:\pch-sig\frontend\build" -Recurse -Force

# Redemarrer
docker-machine ssh default "cd /c/pch-sig/deploy && docker compose restart frontend"

Prochaines etapes