@
Skripte nach bin/ und lib/ umstrukturiert + WSL-Log-Analyse Alle .bat-Skripte liegen jetzt in bin/, alle .py in lib/, .env(.example) in bin/. setenv.bat setzt IWZ_* (inkl. IWZ_ENV) und PYTHONPATH; die Launcher rufen setenv, aktivieren die .venv falls vorhanden und starten das zugehoerige lib/-Skript. Die Python-Skripte lesen die .env ueber IWZ_ENV (Fallback bin/.env). Neu: Nutzungsanalyse per GoAccess (analyze.py/.bat) - laedt die IONOS-Access-Logs per SFTP (paramiko) und erzeugt einen HTML-Report. GoAccess laeuft ueber WSL (GOACCESS_MODE=wsl, Pfad-Uebersetzung nach /mnt/c). install_py.bat prueft WSL+GoAccess und zeigt sonst den Installationsweg. Doku in doc/analyse.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> @
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# Kopieren nach .env und mit echten Werten befuellen.
|
||||
# .env ist in .gitignore eingetragen und wird NICHT eingecheckt.
|
||||
|
||||
# Storage Zone -> Access-Tab im Bunny.net Dashboard
|
||||
BUNNY_STORAGE_ZONE=iwz-ferienwohnungen
|
||||
BUNNY_STORAGE_HOST=storage.bunnycdn.com
|
||||
BUNNY_STORAGE_PASSWORD=
|
||||
|
||||
# Pull Zone -> CDN -> Security-Tab im Bunny.net Dashboard (Token Authentication)
|
||||
BUNNY_PULL_ZONE_URL=https://iwz-ferienwohnungen.b-cdn.net
|
||||
BUNNY_AUTH_KEY=
|
||||
|
||||
# Account-API-Key fuer den CDN-Cache-Purge nach dem Deploy.
|
||||
# Dashboard -> oben rechts auf den Namen -> Account -> API -> "API Key".
|
||||
# ACHTUNG: nicht der BUNNY_AUTH_KEY oben, sondern der Account-weite API-Key!
|
||||
BUNNY_API_KEY=
|
||||
|
||||
# --- Nutzungsanalyse (analyze.py) ------------------------------------------
|
||||
# SFTP-Zugang zu IONOS (gleiche Zugangsdaten wie im IONOS-Kundenbereich / SFTP).
|
||||
IONOS_SFTP_HOST=
|
||||
IONOS_SFTP_PORT=22
|
||||
IONOS_SFTP_USER=
|
||||
IONOS_SFTP_PASSWORD=
|
||||
# Ordner mit den Access-Logs auf dem Server (im Screenshot: /logs).
|
||||
IONOS_LOGS_DIR=/logs
|
||||
|
||||
# GoAccess-Aufruf:
|
||||
# GOACCESS_MODE=wsl -> GoAccess laeuft in der WSL (empfohlen, Standard).
|
||||
# Installation: bin\install_py.bat prueft WSL+GoAccess
|
||||
# und zeigt sonst die Installationsbefehle.
|
||||
# GOACCESS_MODE=exe -> nativer Windows-Build; dann GOACCESS_EXE auf die
|
||||
# goaccess.exe setzen (Download: https://goaccess.io/download).
|
||||
GOACCESS_MODE=wsl
|
||||
GOACCESS_EXE=goaccess
|
||||
|
||||
# Apache-Logformat. IONOS nutzt i.d.R. das Combined Log Format.
|
||||
# Falls der Report leer bleibt -> siehe doc/analyse.md (Format anpassen).
|
||||
LOG_FORMAT=COMBINED
|
||||
@@ -0,0 +1,20 @@
|
||||
@echo off
|
||||
REM ================================================================
|
||||
REM SPS_SKEL - Python Virtual Environment aktivieren
|
||||
REM ================================================================
|
||||
|
||||
call "%~dp0setenv.bat"
|
||||
|
||||
if not exist "%IWZ%\.venv" (
|
||||
echo FEHLER: Virtual environment nicht gefunden.
|
||||
echo Bitte zuerst bin\install_py.bat ausfuehren.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
call "%IWZ%\.venv\Scripts\activate.bat"
|
||||
echo Virtuelle Umgebung aktiviert.
|
||||
echo Python-Version:
|
||||
python --version
|
||||
echo.
|
||||
echo Installierte Pakete:
|
||||
pip list
|
||||
@@ -0,0 +1,26 @@
|
||||
@echo off
|
||||
REM ================================================================
|
||||
REM IWZ Ferienwohnungen - Nutzungsanalyse (IONOS-Logs + GoAccess)
|
||||
REM ================================================================
|
||||
REM Aufruf:
|
||||
REM bin\analyze.bat Logs laden + Report bauen + oeffnen
|
||||
REM bin\analyze.bat --no-download nur neu auswerten (schon geladene Logs)
|
||||
REM ================================================================
|
||||
setlocal
|
||||
|
||||
call "%~dp0setenv.bat" >nul
|
||||
|
||||
REM Virtuelle Umgebung nutzen, falls vorhanden (paramiko liegt dort)
|
||||
if exist "%IWZ%\.venv\Scripts\activate.bat" (
|
||||
call "%IWZ%\.venv\Scripts\activate.bat"
|
||||
)
|
||||
|
||||
set "PY=py"
|
||||
py --version >nul 2>&1 || set "PY=python"
|
||||
|
||||
cd /d "%IWZ%"
|
||||
"%PY%" "%IWZ_LIB%\analyze.py" %*
|
||||
set "RC=%ERRORLEVEL%"
|
||||
|
||||
if not "%RC%"=="0" pause
|
||||
endlocal & exit /b %RC%
|
||||
@@ -0,0 +1,26 @@
|
||||
@echo off
|
||||
REM ================================================================
|
||||
REM IWZ Ferienwohnungen - Deploy (nur geaenderte Dateien)
|
||||
REM ================================================================
|
||||
setlocal
|
||||
|
||||
call "%~dp0setenv.bat" >nul
|
||||
|
||||
REM Virtuelle Umgebung nutzen, falls vorhanden (paramiko etc. liegen dort)
|
||||
if exist "%IWZ%\.venv\Scripts\activate.bat" (
|
||||
call "%IWZ%\.venv\Scripts\activate.bat"
|
||||
)
|
||||
|
||||
set "PY=py"
|
||||
py --version >nul 2>&1 || set "PY=python"
|
||||
|
||||
echo.
|
||||
echo === IWZ Ferienwohnungen - Deploy (nur Aenderungen) ===
|
||||
echo.
|
||||
|
||||
cd /d "%IWZ%"
|
||||
"%PY%" "%IWZ_LIB%\deploy_lastdiff.py" %*
|
||||
set "RC=%ERRORLEVEL%"
|
||||
|
||||
if not "%RC%"=="0" pause
|
||||
endlocal & exit /b %RC%
|
||||
@@ -0,0 +1,29 @@
|
||||
@echo off
|
||||
REM ================================================================
|
||||
REM IWZ Ferienwohnungen - Deploy (Vollupload nach Bunny.net)
|
||||
REM ================================================================
|
||||
setlocal
|
||||
|
||||
REM Umgebung setzen (IWZ, IWZ_LIB, IWZ_ENV, PYTHONPATH ...)
|
||||
call "%~dp0setenv.bat" >nul
|
||||
|
||||
REM Virtuelle Umgebung nutzen, falls vorhanden (paramiko etc. liegen dort)
|
||||
if exist "%IWZ%\.venv\Scripts\activate.bat" (
|
||||
call "%IWZ%\.venv\Scripts\activate.bat"
|
||||
)
|
||||
|
||||
REM Python-Interpreter bestimmen (py-Launcher bevorzugt, sonst python)
|
||||
set "PY=py"
|
||||
py --version >nul 2>&1 || set "PY=python"
|
||||
|
||||
echo.
|
||||
echo === IWZ Ferienwohnungen - Deploy ===
|
||||
echo.
|
||||
|
||||
REM Aus dem Projekt-Root heraus bauen (hugo + public liegen dort)
|
||||
cd /d "%IWZ%"
|
||||
"%PY%" "%IWZ_LIB%\deploy.py" %*
|
||||
set "RC=%ERRORLEVEL%"
|
||||
|
||||
if not "%RC%"=="0" pause
|
||||
endlocal & exit /b %RC%
|
||||
@@ -0,0 +1,7 @@
|
||||
@echo off
|
||||
REM ================================================================
|
||||
REM IWZ Ferienwohnungen - Shell mit gesetzten Umgebungsvariablen oeffnen
|
||||
REM ================================================================
|
||||
|
||||
call "%~dp0setenv.bat"
|
||||
start cmd /k "echo IWZ Umgebung aktiv. && echo IWZ=%IWZ%"
|
||||
@@ -0,0 +1,54 @@
|
||||
@echo off
|
||||
REM ================================================================
|
||||
REM IWZ - Python Virtual Environment einrichten
|
||||
REM ================================================================
|
||||
|
||||
call "%~dp0setenv.bat"
|
||||
|
||||
if not exist "%IWZ%\.venv" (
|
||||
echo Initialisiere Python virtual environment...
|
||||
py -m venv "%IWZ%\.venv" --upgrade-deps
|
||||
echo Erfolgreich.
|
||||
|
||||
call "%IWZ%\.venv\Scripts\activate.bat"
|
||||
echo Installiere erforderliche Python Packages...
|
||||
pip install -r "%IWZ%\requirements.txt" -q
|
||||
echo Erfolgreich.
|
||||
deactivate
|
||||
) else (
|
||||
echo Erforderliche Python Packages bereits installiert!
|
||||
)
|
||||
|
||||
echo.
|
||||
echo ================================================================
|
||||
echo Pruefe Nutzungsanalyse-Voraussetzungen (WSL + GoAccess)
|
||||
echo ================================================================
|
||||
|
||||
REM 1) Ist WSL verfuegbar?
|
||||
where wsl >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo [FEHLT] WSL ist nicht installiert.
|
||||
echo So einrichten ^(einmalig, PowerShell als Administrator^):
|
||||
echo wsl --install
|
||||
echo Danach Windows neu starten und die Ubuntu-Ersteinrichtung
|
||||
echo ^(Benutzername/Passwort^) durchlaufen. Anschliessend GoAccess
|
||||
echo wie unten installieren.
|
||||
goto :wsl_done
|
||||
)
|
||||
echo [OK] WSL gefunden.
|
||||
|
||||
REM 2) Ist GoAccess in der WSL installiert?
|
||||
wsl -e bash -lc "command -v goaccess >/dev/null 2>&1"
|
||||
if errorlevel 1 (
|
||||
echo [FEHLT] GoAccess ist in der WSL nicht installiert.
|
||||
echo So installieren:
|
||||
echo wsl -e sudo apt update
|
||||
echo wsl -e sudo apt install -y goaccess
|
||||
echo ^(fragt einmalig nach dem WSL-sudo-Passwort^)
|
||||
) else (
|
||||
for /f "delims=" %%V in ('wsl -e bash -lc "goaccess --version ^| head -1"') do set "GA_VER=%%V"
|
||||
echo [OK] GoAccess in der WSL: %GA_VER%
|
||||
)
|
||||
|
||||
:wsl_done
|
||||
echo ================================================================
|
||||
@@ -0,0 +1,27 @@
|
||||
@echo off
|
||||
REM ================================================================
|
||||
REM Ferienwohnungen Wolframm - Vorschau-Link erzeugen
|
||||
REM ================================================================
|
||||
setlocal
|
||||
|
||||
call "%~dp0setenv.bat" >nul
|
||||
|
||||
REM Virtuelle Umgebung nutzen, falls vorhanden
|
||||
if exist "%IWZ%\.venv\Scripts\activate.bat" (
|
||||
call "%IWZ%\.venv\Scripts\activate.bat"
|
||||
)
|
||||
|
||||
set "PY=py"
|
||||
py --version >nul 2>&1 || set "PY=python"
|
||||
|
||||
echo.
|
||||
echo === Ferienwohnungen Wolframm - Vorschau-Link erzeugen ===
|
||||
|
||||
cd /d "%IWZ%"
|
||||
"%PY%" "%IWZ_LIB%\preview_link.py" %*
|
||||
|
||||
echo.
|
||||
echo Link oben markieren und mit Strg+C kopieren.
|
||||
echo.
|
||||
endlocal
|
||||
cmd /k
|
||||
@@ -0,0 +1,77 @@
|
||||
@echo off
|
||||
|
||||
REM ================================================================
|
||||
REM IWZ Ferienwohnungen - Umgebungsvariablen Setup
|
||||
REM ================================================================
|
||||
|
||||
if defined IWZ_BIN (
|
||||
echo IWZ Umgebung bereits gesetzt.
|
||||
goto :show
|
||||
)
|
||||
|
||||
echo Setting up environment variables for IWZ ...
|
||||
|
||||
REM Basis-Projektpfad (Ordner ueber bin\)
|
||||
set "IWZ=%~dp0.."
|
||||
if "%IWZ:~-6%"=="bin\.." set "IWZ=%IWZ:~0,-6%"
|
||||
if "%IWZ:~-1%"=="\" set "IWZ=%IWZ:~0,-1%"
|
||||
|
||||
REM Pfade fuer verschiedene Komponenten
|
||||
set "IWZ_BIN=%IWZ%\bin"
|
||||
set "IWZ_LIB=%IWZ%\lib"
|
||||
set "IWZ_DOC=%IWZ%\doc"
|
||||
set "IWZ_CONTENT=%IWZ%\content"
|
||||
set "IWZ_LAYOUTS=%IWZ%\layouts"
|
||||
set "IWZ_STATIC=%IWZ%\static"
|
||||
set "IWZ_PUBLIC=%IWZ%\public"
|
||||
set "IWZ_LOGS=%IWZ%\logs"
|
||||
set "IWZ_RESULTS=%IWZ%\results"
|
||||
|
||||
REM Pfad zur .env (liegt jetzt in bin\). Die Python-Skripte lesen IWZ_ENV.
|
||||
set "IWZ_ENV=%IWZ_BIN%\.env"
|
||||
|
||||
REM Python-Pfad erweitern (nur wenn noch nicht vorhanden)
|
||||
echo %PYTHONPATH% | find /i "%IWZ_LIB%" >nul
|
||||
if errorlevel 1 (
|
||||
set "PYTHONPATH=%IWZ_LIB%;%PYTHONPATH%"
|
||||
)
|
||||
|
||||
REM Ordner erstellen falls sie nicht existieren
|
||||
if not exist "%IWZ_BIN%" mkdir "%IWZ_BIN%"
|
||||
if not exist "%IWZ_LIB%" mkdir "%IWZ_LIB%"
|
||||
if not exist "%IWZ_LOGS%" mkdir "%IWZ_LOGS%"
|
||||
if not exist "%IWZ_RESULTS%" mkdir "%IWZ_RESULTS%"
|
||||
|
||||
REM Optional dauerhaft in der Registry setzen: bin\setenv.bat --persist
|
||||
if /i "%1"=="--persist" (
|
||||
echo Setze Umgebungsvariablen dauerhaft in der Registry ^(setx^)...
|
||||
setx IWZ "%IWZ%" >nul
|
||||
setx IWZ_BIN "%IWZ_BIN%" >nul
|
||||
setx IWZ_LIB "%IWZ_LIB%" >nul
|
||||
setx IWZ_ENV "%IWZ_ENV%" >nul
|
||||
echo Dauerhaft gesetzt. Gilt fuer alle neuen Prozesse.
|
||||
)
|
||||
|
||||
REM Umgebungsvariablen anzeigen
|
||||
:show
|
||||
echo.
|
||||
echo ================================================================
|
||||
echo IWZ ENVIRONMENT SETUP COMPLETE
|
||||
echo ================================================================
|
||||
echo IWZ = %IWZ%
|
||||
echo IWZ_BIN = %IWZ_BIN%
|
||||
echo IWZ_LIB = %IWZ_LIB%
|
||||
echo IWZ_DOC = %IWZ_DOC%
|
||||
echo IWZ_CONTENT = %IWZ_CONTENT%
|
||||
echo IWZ_LAYOUTS = %IWZ_LAYOUTS%
|
||||
echo IWZ_STATIC = %IWZ_STATIC%
|
||||
echo IWZ_PUBLIC = %IWZ_PUBLIC%
|
||||
echo IWZ_LOGS = %IWZ_LOGS%
|
||||
echo IWZ_RESULTS = %IWZ_RESULTS%
|
||||
echo IWZ_ENV = %IWZ_ENV%
|
||||
echo PYTHONPATH = %PYTHONPATH%
|
||||
echo ================================================================
|
||||
echo.
|
||||
|
||||
REM Optionally keep window open
|
||||
if "%1"=="--keep-open" pause
|
||||
Reference in New Issue
Block a user