docs : deployment.md — bouton Mettre à jour (sudoers) + flux trending
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
# 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 `<details>` 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=<période>` — parse les logs et écrit `DATA_PATH/_cache/trending_<période>.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
|
||||
```
|
||||
Reference in New Issue
Block a user