# Déploiement et mise à jour ## Mise à jour via le bouton admin L'interface d'administration propose un bouton **Mettre à jour** (onglet Dashboard). Il appelle `sudo /usr/local/bin/folio-upgrade.sh` depuis PHP (`www-data`) et exécute la séquence complète : 1. Sauvegarde du `.env` 2. `git clone --depth=1` dans un répertoire temporaire 3. Remplacement atomique du répertoire applicatif 4. `chown -R www-data:www-data` + `chmod g+rwX,o=` 5. Restauration du `.env` 6. `composer install --no-dev --optimize-autoloader` 7. `php database/migrate.php` (migrations SQL) 8. Création de `.sessions/` avec les bons droits 9. `git config --system --add safe.directory` ### Pré-requis serveur (à faire une fois) ```bash # 1. Installer le script (copié depuis le dépôt) sudo install -o root -m 750 /var/www/mon-site/scripts/server/folio-upgrade.sh \ /usr/local/bin/folio-upgrade.sh # 2. Adapter APP_DIR et REPO_URL en tête du script sudo nano /usr/local/bin/folio-upgrade.sh # 3. Créer la règle sudoers (www-data sans mot de passe) echo "www-data ALL=(root) NOPASSWD: /usr/local/bin/folio-upgrade.sh" \ | sudo tee /etc/sudoers.d/folio-upgrade sudo chmod 440 /etc/sudoers.d/folio-upgrade # 4. Vérifier la syntaxe sudoers sudo visudo -c ``` Variables à configurer dans le script : | Variable | Exemple | |---|---| | `APP_DIR` | `/var/www/lan.acegrp.abonnel-www` | | `REPO_URL` | `https://git.abonnel.fr/cedricAbonnel/folio.git` | > **Sans cette configuration**, le bouton retourne : > `sudo: a terminal is required to read the password` ### Fonctionnement du cache de mise à jour Le résultat de la dernière mise à jour est conservé dans `DATA_PATH/.upgrade-log` et affiché en `
` dans l'admin. --- ## Mise à jour manuelle Si le bouton admin n'est pas configuré ou si une mise à jour d'urgence est nécessaire : ```bash # Sauvegarde du .env cp /var/www/mon-site/.env /tmp/.env.bak # Clone fresh sudo rm -rf /var/www/mon-site sudo git clone --depth=1 https://git.abonnel.fr/cedricAbonnel/folio.git /var/www/mon-site # Permissions sudo chown -R www-data:www-data /var/www/mon-site sudo chmod -R g+rwX,o= /var/www/mon-site # Restaurer .env cp /tmp/.env.bak /var/www/mon-site/.env # Dépendances et migrations cd /var/www/mon-site composer install --no-dev --optimize-autoloader php database/migrate.php # Répertoire de sessions sudo mkdir -p /var/www/mon-site/.sessions sudo chown www-data:www-data /var/www/mon-site/.sessions sudo chmod 700 /var/www/mon-site/.sessions # Autoriser git (accès multi-utilisateurs) sudo git config --system --add safe.directory /var/www/mon-site ``` --- ## Flux RSS des tendances (`/trending`) Le flux RSS des articles les plus consultés est alimenté par `TrendingParser` qui lit les logs Apache. - **Source** : `GET /trending?period=` — parse les logs et écrit `DATA_PATH/_cache/trending_.json` - **Consommateurs** (lecture seule du cache) : page d'accueil (rubrique "Meilleures audiences") et `/tendances` ### Périodes disponibles | Paramètre | Fenêtre | Cache TTL | |---|---|---| | `10m` | 10 min | 2 min | | `20m` | 20 min | 4 min | | `30m` | 30 min | 6 min | | `1h` | 1 heure | 12 min | | `8h` | 8 heures | 96 min | | `1d` | 24 heures | 5 h | | `7d` | 7 jours | 8 h | | `14d` | 14 jours | 8 h | | `30d` | 30 jours | 8 h | | `1y` | 1 an | 8 h | ### Prérequis `www-data` doit appartenir au groupe `adm` pour lire `/var/log/apache2/` : ```bash sudo usermod -aG adm www-data ```