Files
folio/docs/deployment.md

3.4 KiB

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)

# 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 :

# 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

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/ :

sudo usermod -aG adm www-data