Déploiement : ne plus effacer les rapports GoAccess, ne plus sauter le restart
Trois défauts vus en déployant la création de dossier en production. Le rsync --delete emportait goaccess.html et goaccess.json, générés sur le serveur chaque nuit — la même famille que #51 et #48, jamais refermée. Le dry-run les montrait en suppression. L'unit systemd était cherchée à ../../infra/services/, chemin relatif qui visait org.alpinux.owni/infra quand le dépôt y vivait encore ; depuis le déménagement il pointe dans le vide. Il passe par INFRA_DIR, surchargeable. Surtout, cette copie d'unit et le redémarrage partageaient un bloc set -e : l'unit introuvable a emporté le restart. Le script s'est arrêté après avoir copié les fichiers, le service a continué de servir le code de juillet. Les deux sont maintenant séparés — le restart a lieu même sans dépôt infra. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KtgiPNG3inkbM8k7suMtjL
This commit is contained in:
parent
bd4f4c62ae
commit
8655c250ec
2 changed files with 35 additions and 9 deletions
|
|
@ -1,11 +1,16 @@
|
|||
# Changelog — Alpinux Static
|
||||
|
||||
## [2.1.0] — 2026-09-05
|
||||
## [2.1.0] — 2026-09-20
|
||||
|
||||
### Ajouté
|
||||
- **Parcourir** : bouton « 📁 Nouveau dossier » à droite du fil d'Ariane — saisie en ligne (Entrée pour valider, Échap pour annuler), le dossier est créé dans le répertoire affiché
|
||||
- Nouveau endpoint `POST /mkdir` : réservé aux admins, nom nettoyé par `secure_filename`, refus des noms réservés/cachés, des traversées de chemin et des doublons (409)
|
||||
|
||||
### Corrigé
|
||||
- **Déploiement** : `goaccess.html` et `goaccess.json` exclus du rsync `--delete` — les rapports GoAccess générés sur le serveur ne sont plus effacés à chaque déploiement (même famille que #51 et #48)
|
||||
- **Déploiement** : l'unit systemd était cherchée dans `infra/` par un chemin relatif, cassé depuis que le dépôt a quitté `org.alpinux.owni/` — résolu via `INFRA_DIR`, surchargeable
|
||||
- **Déploiement** : le redémarrage du service est désormais séparé de la copie de l'unit. Ils étaient dans le même bloc `set -e` : une unit introuvable emportait le restart, et le déploiement se terminait avec les fichiers à jour mais l'ancien code toujours en mémoire
|
||||
|
||||
---
|
||||
|
||||
## [2.0.0] — 2026-05-06
|
||||
|
|
|
|||
|
|
@ -23,7 +23,10 @@ source "$ENV_FILE"
|
|||
|
||||
REMOTE_HOST="${STATIC_HOST:?Variable STATIC_HOST manquante dans .env}"
|
||||
REMOTE_DEST="/opt/static-cdn"
|
||||
SERVICE_FILE="$SCRIPT_DIR/../../infra/services/static-cdn.service"
|
||||
# L'unit systemd vit dans le dépôt alpinux-infra, à côté de celui-ci.
|
||||
# Surchargeable : INFRA_DIR=/chemin/vers/infra ./deploy-app.sh
|
||||
INFRA_DIR="${INFRA_DIR:-$SCRIPT_DIR/../../org.alpinux.owni/infra}"
|
||||
SERVICE_FILE="$INFRA_DIR/services/static-cdn.service"
|
||||
|
||||
DRY_RUN=false
|
||||
for arg in "$@"; do
|
||||
|
|
@ -38,11 +41,14 @@ echo ""
|
|||
|
||||
# ── 1. Rsync de l'app ────────────────────────────────────────────────
|
||||
echo -e "${CYAN}[1/4] Synchronisation des fichiers…${RESET}"
|
||||
# Tout ce que le serveur produit lui-même doit être exclu du --delete, sinon
|
||||
# un déploiement l'efface : rapports GoAccess, IPs ignorées, cache RIPE.
|
||||
RSYNC_OPTS=(-rlcz --delete --human-readable
|
||||
--exclude='.env' --exclude='__pycache__/' --exclude='*.pyc'
|
||||
--exclude='venv/' --exclude='.env.example'
|
||||
--exclude='ignored_ips.json'
|
||||
--exclude='as_cache/')
|
||||
--exclude='as_cache/'
|
||||
--exclude='goaccess.html' --exclude='goaccess.json')
|
||||
|
||||
if $DRY_RUN; then
|
||||
rsync --dry-run --itemize-changes "${RSYNC_OPTS[@]}" "$APP_DIR/" "$REMOTE_HOST:$REMOTE_DEST/"
|
||||
|
|
@ -92,14 +98,29 @@ fi
|
|||
|
||||
# ── 4. Service systemd ───────────────────────────────────────────────
|
||||
echo -e "${CYAN}[4/4] Déploiement du service systemd…${RESET}"
|
||||
scp "$SERVICE_FILE" "$REMOTE_HOST:/tmp/static-cdn.service"
|
||||
|
||||
# L'unit change rarement ; le redémarrage doit avoir lieu à chaque fois. Les
|
||||
# séparer évite qu'un dépôt infra introuvable emporte silencieusement le restart
|
||||
# et laisse l'ancien code tourner en mémoire alors que les fichiers sont à jour.
|
||||
if [ -f "$SERVICE_FILE" ]; then
|
||||
scp "$SERVICE_FILE" "$REMOTE_HOST:/tmp/static-cdn.service"
|
||||
ssh "$REMOTE_HOST" bash <<'ENDSSH'
|
||||
set -e
|
||||
sudo mkdir -p /var/log/static-cdn
|
||||
sudo chown static-cdn:static-cdn /var/log/static-cdn
|
||||
sudo cp /tmp/static-cdn.service /etc/systemd/system/static-cdn.service
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable static-cdn
|
||||
ENDSSH
|
||||
echo -e " ${GREEN}✓ Unit systemd à jour${RESET}"
|
||||
else
|
||||
echo -e " ${RED}Unit introuvable : $SERVICE_FILE${RESET}"
|
||||
echo " L'unit déjà installée sur le serveur est conservée."
|
||||
echo " Pour la redéployer : INFRA_DIR=<chemin vers infra> $0"
|
||||
fi
|
||||
|
||||
ssh "$REMOTE_HOST" bash <<'ENDSSH'
|
||||
set -e
|
||||
sudo mkdir -p /var/log/static-cdn
|
||||
sudo chown static-cdn:static-cdn /var/log/static-cdn
|
||||
sudo cp /tmp/static-cdn.service /etc/systemd/system/static-cdn.service
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable static-cdn
|
||||
if systemctl is-active --quiet static-cdn; then
|
||||
sudo systemctl restart static-cdn
|
||||
echo "Service redémarré."
|
||||
|
|
|
|||
Loading…
Reference in a new issue