#!/bin/bash ############################################################################## # Script de mise à jour des paramètres PHP-FPM pour GeoSector # # Usage: # ./update_php_fpm_settings.sh dev # Pour DVA # ./update_php_fpm_settings.sh rec # Pour RCA # ./update_php_fpm_settings.sh prod # Pour PRA ############################################################################## set -e # Couleurs RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Déterminer l'environnement ENV=${1:-dev} case $ENV in dev) CONTAINER="dva-geo" TIMEOUT=180 MAX_REQUESTS=1000 MEMORY_LIMIT=512M ;; rec) CONTAINER="rca-geo" TIMEOUT=120 MAX_REQUESTS=2000 MEMORY_LIMIT=256M ;; prod) CONTAINER="pra-geo" TIMEOUT=120 MAX_REQUESTS=2000 MEMORY_LIMIT=256M ;; *) echo -e "${RED}Erreur: Environnement invalide '$ENV'${NC}" echo "Usage: $0 [dev|rec|prod]" exit 1 ;; esac echo -e "${GREEN}=== Mise à jour PHP-FPM pour $ENV ($CONTAINER) ===${NC}" echo "" # Vérifier que le container existe if ! incus list | grep -q "$CONTAINER"; then echo -e "${RED}Erreur: Container $CONTAINER non trouvé${NC}" exit 1 fi # Trouver le fichier de configuration echo "Recherche du fichier de configuration PHP-FPM..." POOL_FILE=$(incus exec $CONTAINER -- find /etc/php* -name "www.conf" 2>/dev/null | grep fpm/pool | head -1) if [ -z "$POOL_FILE" ]; then echo -e "${RED}Erreur: Fichier pool PHP-FPM non trouvé${NC}" exit 1 fi echo -e "${GREEN}✓ Fichier trouvé: $POOL_FILE${NC}" echo "" # Sauvegarder le fichier original BACKUP_FILE="${POOL_FILE}.backup.$(date +%Y%m%d_%H%M%S)" echo "Création d'une sauvegarde..." incus exec $CONTAINER -- cp "$POOL_FILE" "$BACKUP_FILE" echo -e "${GREEN}✓ Sauvegarde créée: $BACKUP_FILE${NC}" echo "" # Afficher les valeurs actuelles echo "Valeurs actuelles:" incus exec $CONTAINER -- grep -E "^(request_terminate_timeout|pm.max_requests|memory_limit)" "$POOL_FILE" || echo " (non définies)" echo "" # Créer un fichier temporaire avec les nouvelles valeurs TMP_FILE="/tmp/php_fpm_update_$$.conf" cat > $TMP_FILE << EOF ; === Configuration GeoSector - Modifié le $(date +%Y-%m-%d) === ; Timeout des requêtes request_terminate_timeout = ${TIMEOUT}s ; Nombre max de requêtes avant recyclage du worker pm.max_requests = ${MAX_REQUESTS} ; Limite mémoire PHP php_admin_value[memory_limit] = ${MEMORY_LIMIT} ; Log des requêtes lentes slowlog = /var/log/php8.3-fpm-slow.log request_slowlog_timeout = 10s EOF echo "Nouvelles valeurs à appliquer:" cat $TMP_FILE echo "" # Demander confirmation read -p "Appliquer ces modifications ? (y/N) " -n 1 -r echo "" if [[ ! $REPLY =~ ^[Yy]$ ]]; then echo "Annulé." rm $TMP_FILE exit 0 fi # Supprimer les anciennes valeurs si présentes echo "Suppression des anciennes valeurs..." incus exec $CONTAINER -- sed -i '/^request_terminate_timeout/d' "$POOL_FILE" incus exec $CONTAINER -- sed -i '/^pm.max_requests/d' "$POOL_FILE" incus exec $CONTAINER -- sed -i '/^php_admin_value\[memory_limit\]/d' "$POOL_FILE" incus exec $CONTAINER -- sed -i '/^slowlog/d' "$POOL_FILE" incus exec $CONTAINER -- sed -i '/^request_slowlog_timeout/d' "$POOL_FILE" # Ajouter les nouvelles valeurs à la fin du fichier echo "Ajout des nouvelles valeurs..." incus file push $TMP_FILE $CONTAINER/tmp/php_fpm_settings.conf incus exec $CONTAINER -- bash -c "cat /tmp/php_fpm_settings.conf >> $POOL_FILE" incus exec $CONTAINER -- rm /tmp/php_fpm_settings.conf rm $TMP_FILE echo -e "${GREEN}✓ Configuration mise à jour${NC}" echo "" # Tester la configuration echo "Test de la configuration PHP-FPM..." if incus exec $CONTAINER -- php-fpm8.3 -t; then echo -e "${GREEN}✓ Configuration valide${NC}" else echo -e "${RED}✗ Configuration invalide !${NC}" echo "Restauration de la sauvegarde..." incus exec $CONTAINER -- cp "$BACKUP_FILE" "$POOL_FILE" exit 1 fi echo "" echo "Redémarrage de PHP-FPM..." incus exec $CONTAINER -- rc-service php-fpm8.3 restart if [ $? -eq 0 ]; then echo -e "${GREEN}✓ PHP-FPM redémarré avec succès${NC}" else echo -e "${RED}✗ Erreur lors du redémarrage${NC}" echo "Restauration de la sauvegarde..." incus exec $CONTAINER -- cp "$BACKUP_FILE" "$POOL_FILE" incus exec $CONTAINER -- rc-service php-fpm8.3 restart exit 1 fi echo "" echo -e "${GREEN}=== Mise à jour terminée avec succès ===${NC}" echo "" echo "Vérification des nouvelles valeurs:" incus exec $CONTAINER -- grep -E "^(request_terminate_timeout|pm.max_requests|php_admin_value\[memory_limit\])" "$POOL_FILE" echo "" echo "Sauvegarde disponible: $BACKUP_FILE"