Refactor deployment process and update documentation
- 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:
@@ -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."
|
||||
Reference in New Issue
Block a user