feat(setup): Systemcheck und Upload-Paket fuer klassisches Webhosting
Auf Shared Hosting gibt es keine Kommandozeile - ohne Anzeige laesst sich dort nicht feststellen, ob etwa gd fehlt, die PHP-Version zu alt ist oder data/ nicht beschreibbar ist. Der Setup-Assistent prueft das jetzt und listet es auf; im Dashboard meldet sich die Pruefung spaeter nur noch, wenn etwas nicht stimmt. Fehlende Pflichtbausteine sind Fehler, fehlende Kuer (intl, imagick, cURL) nur Hinweise mit Angabe, was dadurch entfaellt. build-release.sh erzeugt das Upload-Paket: Abhaengigkeiten ohne Entwicklungspakete, ohne Tests und Docker-Dateien. Dabei faellt eine 16 MB grosse Schriftart aus endroid/qr-code weg, die ausschliesslich fuer Beschriftungen unter dem QR-Code gebraucht wird - die erzeugt diese Anwendung nicht. Das Paket schrumpft damit von 18 MB auf 1 MB. Sollte spaeter doch eine Beschriftung dazukommen, erkennt das Skript das und behaelt die Datei. Die Variante ohne eigenen Webroot (alles liegt im Domainverzeichnis, die .htaccess im Stammverzeichnis leitet nach public/ um) war bisher gebaut, aber nie erprobt. Sie ist jetzt gegen eine Hoster-Simulation getestet: Ersteinrichtung, Kurzlinks, Weiterleitung, QR-Codes, Statistik und die Sperren fuer src/, vendor/, data/ und .env.
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
#!/bin/sh
|
||||
# -------------------------------------------------------------
|
||||
# Erzeugt das Upload-Paket fuer klassisches Webhosting.
|
||||
#
|
||||
# Ergebnis: build/urlshort-qr-gen-release/ und build/urlshort-qr-gen.zip
|
||||
# Enthalten ist alles, was auf dem Server gebraucht wird - inklusive
|
||||
# vendor/ ohne Entwicklungspakete. Nicht enthalten sind Tests, Docker,
|
||||
# Git-Dateien und die eigene .env.
|
||||
#
|
||||
# Aufruf mit lokalem PHP und Composer (im Projektverzeichnis):
|
||||
# sh build-release.sh
|
||||
#
|
||||
# Ohne lokales PHP ueber das Anwendungs-Image - dieses bringt PHP samt
|
||||
# gd, intl und Composer mit (der schlanke composer:2 hat kein gd und
|
||||
# bricht deshalb an der Plattformpruefung ab):
|
||||
# docker compose build
|
||||
# docker run --rm -v "$PWD:/app" -w /app urlshort-qr-gen:latest sh build-release.sh
|
||||
# -------------------------------------------------------------
|
||||
set -eu
|
||||
|
||||
ROOT="$(pwd)"
|
||||
BUILD="$ROOT/build"
|
||||
TARGET="$BUILD/urlshort-qr-gen-release"
|
||||
|
||||
echo "==> Aufraeumen"
|
||||
rm -rf "$BUILD"
|
||||
mkdir -p "$TARGET"
|
||||
|
||||
echo "==> Dateien kopieren"
|
||||
for item in public src templates migrations composer.json composer.lock .env.example README.md .htaccess; do
|
||||
cp -R "$ROOT/$item" "$TARGET/"
|
||||
done
|
||||
|
||||
mkdir -p "$TARGET/data/uploads"
|
||||
cp "$ROOT/data/.htaccess" "$TARGET/data/.htaccess"
|
||||
: > "$TARGET/data/.gitkeep"
|
||||
|
||||
echo "==> Abhaengigkeiten ohne Entwicklungspakete installieren"
|
||||
cd "$TARGET"
|
||||
composer install --no-dev --optimize-autoloader --no-interaction --no-progress --quiet
|
||||
|
||||
# composer.lock wird auf dem Server nicht gebraucht, composer.json auch
|
||||
# nicht - beide sind ueber die .htaccess ohnehin gesperrt. Sie bleiben
|
||||
# liegen, damit sich das Paket spaeter aktualisieren laesst.
|
||||
|
||||
# endroid bringt eine 16 MB grosse Schriftart mit. Gebraucht wird sie
|
||||
# ausschliesslich fuer Beschriftungen UNTER dem QR-Code (Label) - diese
|
||||
# Anwendung erzeugt keine, der QrRenderer uebergibt dort immer null.
|
||||
# Ohne die Datei schrumpft der Upload von rund 18 MB auf gut 2 MB.
|
||||
# Sollte spaeter doch eine Beschriftung dazukommen, faellt das hier auf
|
||||
# und die Schriftart bleibt im Paket.
|
||||
echo "==> Ungenutzte Schriftart pruefen"
|
||||
if grep -rqE 'Endroid\\\\QrCode\\\\Label|new Label\(' "$TARGET/src" 2>/dev/null; then
|
||||
echo " Label wird verwendet - Schriftart bleibt erhalten."
|
||||
else
|
||||
rm -f "$TARGET/vendor/endroid/qr-code/assets/noto_sans.otf"
|
||||
echo " noto_sans.otf entfernt (wird nicht verwendet)."
|
||||
fi
|
||||
|
||||
echo "==> Archiv erzeugen"
|
||||
cd "$BUILD"
|
||||
if command -v zip >/dev/null 2>&1; then
|
||||
zip -rq urlshort-qr-gen.zip urlshort-qr-gen-release
|
||||
echo " build/urlshort-qr-gen.zip"
|
||||
else
|
||||
tar -czf urlshort-qr-gen.tar.gz urlshort-qr-gen-release
|
||||
echo " build/urlshort-qr-gen.tar.gz (kein zip vorhanden)"
|
||||
echo " Unter Windows laesst sich stattdessen ein ZIP erzeugen mit:"
|
||||
echo " Compress-Archive build/urlshort-qr-gen-release build/urlshort-qr-gen.zip"
|
||||
fi
|
||||
|
||||
echo "==> Fertig"
|
||||
echo " Verzeichnis: build/urlshort-qr-gen-release"
|
||||
echo " Dateien: $(find "$TARGET" -type f | wc -l)"
|
||||
echo " Groesse: $(du -sh "$TARGET" | cut -f1)"
|
||||
Reference in New Issue
Block a user