81 lines
4.1 KiB
Bash
81 lines
4.1 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
echo ""
|
|
echo "╔══════════════════════════════════════╗"
|
|
echo "║ Network-MGMT Startup ║"
|
|
echo "╚══════════════════════════════════════╝"
|
|
echo ""
|
|
|
|
cd /var/www/html
|
|
|
|
# ─── .env prüfen ───────────────────────────────────────────────────────────────
|
|
if [ ! -f ".env" ]; then
|
|
echo "⚠ .env fehlt — kopiere .env.example ..."
|
|
cp .env.example .env
|
|
fi
|
|
|
|
# ─── Auf Datenbank warten ──────────────────────────────────────────────────────
|
|
echo "▶ Warte auf MariaDB ..."
|
|
until php -r "
|
|
\$dsn = 'mysql:host=' . getenv('DB_HOST') . ';port=' . (getenv('DB_PORT') ?: 3306) . ';dbname=' . getenv('DB_DATABASE');
|
|
try {
|
|
new PDO(\$dsn, getenv('DB_USERNAME'), getenv('DB_PASSWORD'));
|
|
exit(0);
|
|
} catch (Exception \$e) {
|
|
exit(1);
|
|
}
|
|
" 2>/dev/null; do
|
|
echo " ... noch nicht bereit, warte 3s"
|
|
sleep 3
|
|
done
|
|
echo " ✓ Datenbank erreichbar"
|
|
|
|
# ─── Composer ──────────────────────────────────────────────────────────────────
|
|
if [ ! -d "vendor" ] || [ ! -f "vendor/autoload.php" ]; then
|
|
echo "▶ Composer: Abhängigkeiten installieren ..."
|
|
composer install --no-dev --optimize-autoloader --no-interaction --quiet
|
|
echo " ✓ fertig"
|
|
fi
|
|
|
|
# ─── Assets bauen ──────────────────────────────────────────────────────────────
|
|
if [ ! -d "public/build" ] && [ -f "package.json" ]; then
|
|
echo "▶ Node: Assets bauen ..."
|
|
npm ci --silent 2>/dev/null
|
|
npm run build 2>/dev/null
|
|
echo " ✓ fertig"
|
|
fi
|
|
|
|
# ─── App-Key ───────────────────────────────────────────────────────────────────
|
|
APP_KEY_VAL=$(grep "^APP_KEY=" .env | cut -d= -f2)
|
|
if [ -z "$APP_KEY_VAL" ] || [ "$APP_KEY_VAL" = "" ]; then
|
|
echo "▶ Generiere APP_KEY ..."
|
|
php artisan key:generate --no-interaction --force
|
|
fi
|
|
|
|
# ─── Storage-Link ──────────────────────────────────────────────────────────────
|
|
php artisan storage:link --no-interaction 2>/dev/null || true
|
|
|
|
# ─── Berechtigungen ────────────────────────────────────────────────────────────
|
|
chmod -R 775 storage bootstrap/cache
|
|
chown -R www-data:www-data storage bootstrap/cache 2>/dev/null || true
|
|
|
|
# ─── Migrationen ───────────────────────────────────────────────────────────────
|
|
echo "▶ Datenbank: Migrationen ausführen ..."
|
|
php artisan migrate --force --no-interaction
|
|
echo " ✓ fertig"
|
|
|
|
# ─── Cache ─────────────────────────────────────────────────────────────────────
|
|
echo "▶ Cache aufbauen ..."
|
|
php artisan config:cache --no-interaction 2>/dev/null
|
|
php artisan route:cache --no-interaction 2>/dev/null
|
|
php artisan view:cache --no-interaction 2>/dev/null
|
|
echo " ✓ fertig"
|
|
|
|
echo ""
|
|
echo "✓ Network-MGMT läuft auf Port 80"
|
|
echo ""
|
|
|
|
# ─── Supervisor starten (nginx + php-fpm + scheduler) ─────────────────────────
|
|
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
|