Refactor deployment process and update documentation
EK-DOS-WEB bauen und ausrollen / backend-pruefen (push) Failing after 2s
EK-DOS-WEB bauen und ausrollen / bauen-und-ausrollen (push) Skipped

- Removed nginx configuration file as it is no longer needed.
- Updated README.md to reflect changes in deployment structure.
- Enhanced DEPLOYMENT.md with detailed directory structure and user permissions.
- Added release.sh and rollback.sh scripts for managing deployments.
- Improved N8N.md to clarify file access and document handling.
- Adjusted health check and cache flushing procedures in deployment scripts.
This commit is contained in:
Kyle Müller
2026-09-06 22:41:04 +02:00
parent 7d82e807fc
commit 940b2d4767
7 changed files with 589 additions and 259 deletions
+60
View File
@@ -0,0 +1,60 @@
#!/usr/bin/env bash
#
# Auf die vorige Veröffentlichung zurückschalten.
#
# /var/www/ekdos/deploy/rollback.sh # eine zurück
# /var/www/ekdos/deploy/rollback.sh 2f9c1ab # auf eine bestimmte
# /var/www/ekdos/deploy/rollback.sh --list # zeigt, was vorrätig ist
#
# Es wird nur der Symlink getauscht und php-fpm neu geladen. Die alten
# Veröffentlichungen liegen vollständig da, ein Rückschritt dauert Sekunden.
#
# ACHTUNG: Datenbankmigrationen werden NICHT zurückgenommen. Hat die neue
# Fassung das Schema geändert, muss die alte damit umgehen können. Bei den
# bisherigen Migrationen (nur Tabellen anlegen) ist das der Fall.
set -euo pipefail
ROOT="${EKDOS_ROOT:-/var/www/ekdos}"
FPM_SERVICE="${EKDOS_FPM:-php8.5-fpm}"
HEALTH_URL="${EKDOS_HEALTH_URL:-http://127.0.0.1/api/health}"
step() { printf '\n\033[1m==> %s\033[0m\n' "$1"; }
fail() { printf '\033[31mFEHLER: %s\033[0m\n' "$1" >&2; exit 1; }
CURRENT="$(basename "$(readlink "$ROOT/current" 2>/dev/null || echo none)")"
if [ "${1:-}" = "--list" ]; then
echo "Vorrätige Veröffentlichungen (neueste zuerst):"
( cd "$ROOT/releases" && ls -1td -- */ | sed 's#/$##' ) | while read -r name; do
[ "$name" = "$CURRENT" ] && echo " * $name (aktiv)" || echo " $name"
done
exit 0
fi
TARGET="${1:-}"
if [ -z "$TARGET" ]; then
# Ohne Argument: der Eintrag, den release.sh beim letzten Umschalten notiert hat.
[ -f "$ROOT/previous" ] || fail "Keine vorige Veröffentlichung vermerkt. Auswahl zeigen mit: rollback.sh --list"
TARGET="$(basename "$(cat "$ROOT/previous")")"
fi
[ -d "$ROOT/releases/$TARGET" ] || fail "Die Veröffentlichung '$TARGET' gibt es nicht. Auswahl zeigen mit: rollback.sh --list"
[ "$TARGET" != "$CURRENT" ] || fail "'$TARGET' ist bereits aktiv."
step "Zurück von $CURRENT auf $TARGET"
ln -sfn "releases/$TARGET" "$ROOT/current.new"
mv -Tf "$ROOT/current.new" "$ROOT/current"
printf '%s\n' "$CURRENT" > "$ROOT/previous"
step "$FPM_SERVICE neu laden"
sudo systemctl reload "$FPM_SERVICE"
step "n8n-Cache verwerfen"
php "$ROOT/current/backend/bin/ekdos" cache:flush
step "Gesundheitsprüfung"
curl -fsS --max-time 5 "$HEALTH_URL" > /dev/null || fail "$HEALTH_URL antwortet nicht."
step "$TARGET ist wieder aktiv."