Deploiement Serveur
Ce guide explique comment deployer PCH-SIG sur le serveur de production (serveur-production).
Architecture du serveur
Serveur de production
| Parametre | Valeur |
|---|---|
| IP | serveur-production |
| OS | Windows Server |
| Docker | Docker Toolbox + VirtualBox |
| VM Docker | 192.168.99.100 |
| Chemin projet | C:\pch-sig |
Mapping des ports
| Port externe | Destination | Service |
|---|---|---|
| 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 |
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
| Test | URL | Attendu |
|---|---|---|
| Frontend | https://sig.ucp-pch.org | Page de login |
| API | https://sig.ucp-pch.org/api | Doc API |
| Health | https://sig.ucp-pch.org/api/health | Status 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 :
-
Incrementer la version dans
frontend/public/service-worker.js:const CACHE_NAME = 'pch-sig-cache-v3'; // Incrementer -
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"