#!/usr/bin/env bash # folio-upgrade.sh — déploie Folio à la demande (appelé par PHP via sudo). # # Usage : folio-upgrade.sh # # Installation sur chaque serveur : # sudo install -o root -m 750 folio-upgrade.sh /usr/local/bin/folio-upgrade.sh # # Autorisation sudo (sans mot de passe) : # echo "www-data ALL=(root) NOPASSWD: /usr/local/bin/folio-upgrade.sh" \ # | sudo tee /etc/sudoers.d/folio-upgrade # # ── Configuration (à adapter par site) ─────────────────────────────────────── APP_DIR=/var/www/lan.acegrp.abonnel-www REPO_URL=https://git.abonnel.fr/cedricAbonnel/folio.git # ────────────────────────────────────────────────────────────────────────────── BRANCH=${1:-main} ENV_FILE="$APP_DIR/.env" [ -f "$ENV_FILE" ] || { echo "ERREUR : $ENV_FILE introuvable"; exit 1; } DATA_DIR=$(grep -m1 '^DATA_PATH=' "$ENV_FILE" | cut -d= -f2- | tr -d '"'"'" | xargs) [ -n "$DATA_DIR" ] || { echo "ERREUR : DATA_PATH absent du .env"; exit 1; } LOG="$DATA_DIR/.upgrade-log" WORK_DIR=$(mktemp -d) trap 'rm -rf "$WORK_DIR"' EXIT { echo "=== $(date '+%Y-%m-%d %H:%M:%S') — démarrage ===" echo "Branche : $BRANCH" echo "" # 1. Sauvegarder .env avant de toucher APP_DIR cp "$ENV_FILE" "$WORK_DIR/.env.bak" || { echo "ERREUR : sauvegarde .env impossible"; exit 1; } # 2. Cloner dans un répertoire de travail (APP_DIR reste intact en cas d'échec du clone) git clone --depth=1 --branch "$BRANCH" "$REPO_URL" "$WORK_DIR/app" \ || { echo "ERREUR : git clone"; exit 1; } # 3. Déployer rm -rf "$APP_DIR" mv "$WORK_DIR/app" "$APP_DIR" # 4. Permissions (PHP-FPM tourne en www-data) chown -R www-data:www-data "$APP_DIR" chmod -R g+rwX,o= "$APP_DIR" # 5. Restaurer .env cp "$WORK_DIR/.env.bak" "$APP_DIR/.env" chown www-data:www-data "$APP_DIR/.env" chmod 640 "$APP_DIR/.env" cd "$APP_DIR" # 6. Dépendances Composer if command -v composer > /dev/null 2>&1; then sudo -u www-data composer install --no-dev --optimize-autoloader \ || echo "AVERTISSEMENT : composer install a échoué" else echo "AVERTISSEMENT : composer introuvable — dépendances non installées" fi # 7. Migrations SQL sudo -u www-data php database/migrate.php \ || echo "AVERTISSEMENT : migrations SQL — vérifier manuellement" # 8. Répertoire de sessions PHP mkdir -p "$APP_DIR/.sessions" chown www-data:www-data "$APP_DIR/.sessions" chmod 700 "$APP_DIR/.sessions" # 9. Autoriser git pour ce répertoire (accès multi-utilisateurs) git config --system --add safe.directory "$APP_DIR" 2>/dev/null || true echo "" echo "=== $(date '+%Y-%m-%d %H:%M:%S') — succès ===" } > "$LOG" 2>&1