weitere Bearibeitung

This commit is contained in:
2026-06-17 16:45:14 +02:00
parent 06645f1e9c
commit 1891ec0a51
38 changed files with 2720 additions and 109 deletions
+149
View File
@@ -0,0 +1,149 @@
#!/usr/bin/env bash
set -euo pipefail
# Netcup Deployment Script für Kaffeekasse SaaS
# Dieses Skript bereitet das Deployment für Netcup Webspace vor
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
BUILD_DIR="$ROOT_DIR/build"
STAMP="$(date +%Y%m%d-%H%M%S)"
RELEASE_NAME="kaffeekasse-saas-$STAMP"
RELEASE_FILE="$BUILD_DIR/$RELEASE_NAME.tar.gz"
# Farben für Output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}=== Netcup Deployment Vorbereitung ===${NC}"
echo "Release: $RELEASE_NAME"
echo "Ziel: $RELEASE_FILE"
echo
# Prüfe ob .env.netcup existiert
if [ ! -f "$ROOT_DIR/.env.netcup" ]; then
echo -e "${RED}Fehler: .env.netcup nicht gefunden!${NC}"
echo "Bitte erstellen Sie zuerst eine .env.netcup Datei basierend auf .env.example"
exit 1
fi
# Erstelle Build-Verzeichnis
mkdir -p "$BUILD_DIR"
echo -e "${YELLOW}1. Erstelle Release-Paket...${NC}"
# Erstelle Release mit allen notwendigen Dateien
tar \
--exclude=".git" \
--exclude=".env" \
--exclude=".env.example" \
--exclude="build" \
--exclude="storage/cache/*" \
--exclude="storage/logs/*" \
--exclude="storage/uploads/*" \
--exclude="storage/database.sqlite" \
--exclude="storage/test.sqlite" \
--exclude="debug_pdo.php" \
--exclude="*_test.php" \
--exclude="router_test.php" \
--exclude="bootstrap_test.php" \
-czf "$RELEASE_FILE" \
-C "$ROOT_DIR" .
echo -e "${GREEN}✓ Release-Paket erstellt: $RELEASE_FILE${NC}"
# Erstelle Deployment-Anweisungen
INSTRUCTIONS_FILE="$BUILD_DIR/$RELEASE_NAME-deployment-instructions.txt"
cat > "$INSTRUCTIONS_FILE" << EOF
=== Netcup Deployment Anweisungen für $RELEASE_NAME ===
1. VORBEREITUNG IN NETCUP WCP/PLESK:
- Domain/Subdomain anlegen
- Document Root auf /apps/kaffeekasse/current/public setzen
- MySQL Datenbank und User anlegen
- PHP Version auf 8.3 oder 8.4 setzen
2. UPLOAD:
- $RELEASE_NAME.tar.gz per FTPES/SFTP nach /apps/kaffeekasse/ hochladen
- Entpacken: tar -xzf $RELEASE_NAME.tar.gz
- Umbenennen: mv kaffeekasse-saas-* current
3. KONFIGURATION:
- .env.netcup als .env in /apps/kaffeekasse/current/ kopieren
- Anpassen der Werte in .env:
* APP_URL=https://ihre-domain.tld
* APP_KEY=32-stelliger-zufälliger-schlüssel
* DB_NAME, DB_USER, DB_PASS entsprechend MySQL-Setup
* MAIL_FROM, MAIL_REPLY_TO entsprechend Domain
* RFID_SHARED_SECRET=sicherer-zufälliger-wert
4. INSTALLATION:
- Browser-Installer: https://ihre-domain.tld/install
- ODER manuell: /usr/local/php83/bin/php /apps/kaffeekasse/current/bin/migrate.php
5. CRON-JOBS EINRICHTEN:
- Alle 5 Minuten: /usr/local/php83/bin/php /apps/kaffeekasse/current/bin/cron.php
- Täglich: /usr/local/php83/bin/php /apps/kaffeekasse/current/bin/healthcheck.php
6. SSL/HTTPS:
- Let's Encrypt Zertifikat in WCP aktivieren
- HTTPS erzwingen
7. TESTS:
- Startseite aufrufen
- Admin-Login testen (/admin/login)
- Mandant anlegen und testen
- Healthcheck ausführen
Weitere Details: siehe docs/go-live-checklist-netcup.md
EOF
echo -e "${GREEN}✓ Deployment-Anweisungen erstellt: $INSTRUCTIONS_FILE${NC}"
# Erstelle .htaccess Backup-Info
HTACCESS_INFO="$BUILD_DIR/$RELEASE_NAME-htaccess-info.txt"
cat > "$HTACCESS_INFO" << EOF
=== .htaccess Konfiguration für Netcup ===
Die mitgelieferte public/.htaccess sollte auf Netcup funktionieren.
Falls Probleme auftreten, hier die wichtigsten Einstellungen:
1. URL Rewriting:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
2. Sicherheit:
- Zugriff auf .env, .git, etc. blockiert
- PHP-Dateien außerhalb public/ nicht erreichbar
3. Bei Problemen:
- Prüfen ob mod_rewrite aktiviert ist
- AllowOverride All in Apache-Konfiguration
- Bei Fehlern: Apache Error Log prüfen
Die aktuelle .htaccess ist bereits im Release enthalten.
EOF
echo -e "${GREEN}✓ .htaccess Info erstellt: $HTACCESS_INFO${NC}"
# Zeige Zusammenfassung
echo
echo -e "${BLUE}=== Deployment bereit ===${NC}"
echo -e "Release-Paket: ${GREEN}$RELEASE_FILE${NC}"
echo -e "Anweisungen: ${GREEN}$INSTRUCTIONS_FILE${NC}"
echo -e "Größe: ${GREEN}$(du -h "$RELEASE_FILE" | cut -f1)${NC}"
echo
echo -e "${YELLOW}Nächste Schritte:${NC}"
echo "1. Release-Paket nach Netcup hochladen"
echo "2. .env.netcup anpassen und als .env hochladen"
echo "3. Deployment-Anweisungen befolgen"
echo "4. Go-Live Checkliste abarbeiten (docs/go-live-checklist-netcup.md)"
echo
echo -e "${GREEN}Deployment-Vorbereitung abgeschlossen!${NC}"