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.
76 lines
3.0 KiB
Bash
76 lines
3.0 KiB
Bash
#!/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)"
|