# 🚀 NeoNail DB - Deployment Guide ## 📋 Schnellstart (5 Minuten) ### Option A: SQLite (Einfacher - Empfohlen) - ✅ Keine MySQL-Installation nötig - ✅ Einfache Datei-basierte Datenbank - ✅ Perfekt fĂŒr kleinere bis mittlere Anwendungen - ✅ Einfaches Backup (nur eine Datei) ### Option B: MySQL/MariaDB - ✅ FĂŒr grĂ¶ĂŸere Anwendungen - ✅ Mehrere gleichzeitige Benutzer - ✅ Erweiterte Datenbank-Features --- ## đŸ—„ïž SQLite Deployment (Empfohlen) ### 1. Webspace vorbereiten - PHP 8.1+ installiert - SQLite3 PHP-Erweiterung aktiviert - Composer verfĂŒgbar (falls möglich) ### 2. .env fĂŒr SQLite konfigurieren ```env APP_ENV=production APP_DEBUG=false APP_URL=https://ihre-domain.de # SQLite Konfiguration DB_CONNECTION=sqlite DB_DATABASE=/path/to/database.sqlite # DB_HOST, DB_PORT, DB_USERNAME, DB_PASSWORD nicht nötig! ``` ### 3. SQLite-Datenbank erstellen ```bash # Auf dem Server: touch database.sqlite chmod 664 database.sqlite chown www-data:www-data database.sqlite # Falls verfĂŒgbar ``` ### 4. Deployment ausfĂŒhren ```bash composer install --optimize-autoloader --no-dev php artisan migrate --force php artisan storage:link php artisan config:cache ``` ### 5. Admin-User erstellen ```bash php artisan tinker ``` ```php use App\Models\User; User::create([ 'name' => 'Admin', 'email' => 'admin@neonail.com', 'password' => bcrypt('ihr_sicheres_passwort') ]); ``` ## đŸ—„ïž MySQL/MariaDB Deployment ### 1. Webspace vorbereiten - PHP 8.1+ installiert - MySQL/MariaDB Datenbank erstellt - Composer verfĂŒgbar (falls möglich) ### 2. Dateien hochladen ```bash # Alle Dateien außer: # - node_modules/ (falls vorhanden) # - vendor/ (wird auf Server installiert) # - .git/ (nicht nötig) ``` ### 3. .env konfigurieren ```env APP_ENV=production APP_DEBUG=false APP_URL=https://ihre-domain.de DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=ihre_datenbank DB_USERNAME=ihr_username DB_PASSWORD=ihr_passwort ``` ### 4. Deployment ausfĂŒhren ```bash # Falls SSH verfĂŒgbar: chmod +x deploy.sh ./deploy.sh # Oder manuell: composer install --optimize-autoloader --no-dev php artisan storage:link php artisan migrate --force php artisan config:cache ``` ### 5. Admin-User erstellen ```bash php artisan tinker ``` ```php use App\Models\User; User::create([ 'name' => 'Admin', 'email' => 'admin@neonail.com', 'password' => bcrypt('ihr_sicheres_passwort') ]); ``` ## 🔧 Detaillierte Anleitung ### SQLite vs MySQL Vergleich | Feature | SQLite | MySQL | |---------|--------|-------| | Installation | ✅ Einfach | ❌ Komplexer | | Konfiguration | ✅ Minimal | ❌ Mehr Aufwand | | Backup | ✅ Eine Datei | ❌ Dump nötig | | Performance | ✅ Gut (klein/mittel) | ✅ Sehr gut (groß) | | Gleichzeitige User | ✅ Bis ~100 | ✅ Unbegrenzt | | Wartung | ✅ Minimal | ❌ RegelmĂ€ĂŸig | ### Voraussetzungen prĂŒfen **SQLite PHP-Erweiterungen:** ```bash php -m | grep -E "(sqlite3|pdo_sqlite)" ``` **MySQL PHP-Erweiterungen:** ```bash php -m | grep -E "(mysql|pdo_mysql)" ``` **Composer installieren (falls nicht verfĂŒgbar):** ```bash curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer ``` ### Datei-Struktur (SQLite) ``` public_html/ ├── public/ # Web-Root ├── storage/ # Schreibrechte erforderlich ├── bootstrap/cache/ # Schreibrechte erforderlich ├── database.sqlite # SQLite-Datenbank └── .env # Konfiguration ``` ### Datei-Struktur (MySQL) ``` public_html/ ├── public/ # Web-Root ├── storage/ # Schreibrechte erforderlich ├── bootstrap/cache/ # Schreibrechte erforderlich └── .env # Konfiguration ``` ### Berechtigungen (SQLite) ```bash chmod -R 755 storage/ chmod -R 755 bootstrap/cache/ chmod 664 database.sqlite chmod 644 .env ``` ### Berechtigungen (MySQL) ```bash chmod -R 755 storage/ chmod -R 755 bootstrap/cache/ chmod 644 .env ``` ## đŸ›Ąïž Sicherheit ### Wichtige Einstellungen - `APP_DEBUG=false` in Produktion - Starke Passwörter verwenden - HTTPS aktivieren - `.env` nicht öffentlich zugĂ€nglich ### SQLite-spezifische Sicherheit ```apache # .htaccess - SQLite-Datei schĂŒtzen Order allow,deny Deny from all ``` ### MySQL-spezifische Sicherheit ```apache # .htaccess bereits konfiguriert # ZusĂ€tzliche Sicherheit: Order allow,deny Deny from all ``` ## đŸ“± Mobile Optimierung ### PWA-Features (optional) - Manifest.json hinzufĂŒgen - Service Worker fĂŒr Offline-FunktionalitĂ€t - App-Icons erstellen ### Performance - Bilder komprimieren - CDN fĂŒr statische Assets - Browser-Caching aktivieren ## 🔄 Backup-Strategie ### SQLite Backup ```bash #!/bin/bash # backup_sqlite.sh DATE=$(date +%Y%m%d_%H%M%S) cp database.sqlite backup_sqlite_$DATE.sqlite tar -czf storage_backup_$DATE.tar.gz storage/ ``` ### MySQL Backup ```bash #!/bin/bash # backup_mysql.sh DATE=$(date +%Y%m%d_%H%M%S) mysqldump -u username -p database > backup_mysql_$DATE.sql tar -czf storage_backup_$DATE.tar.gz storage/ ``` ### Cron-Job (tĂ€glich) ```bash 0 2 * * * /path/to/backup_sqlite.sh ``` ## 🐛 Troubleshooting ### SQLite-spezifische Probleme **1. "Database is locked"** ```bash chmod 664 database.sqlite chown www-data:www-data database.sqlite ``` **2. "SQLite3 not found"** ```bash # PHP-Erweiterung aktivieren php -m | grep sqlite ``` **3. Berechtigungsfehler** ```bash chmod 664 database.sqlite chmod -R 755 storage/ ``` ### MySQL-spezifische Probleme **1. "Class not found" Fehler** ```bash composer dump-autoload ``` **2. Berechtigungsfehler** ```bash chmod -R 755 storage/ chmod -R 755 bootstrap/cache/ ``` **3. Datenbank-Verbindung** - Host, Port, Credentials prĂŒfen - MySQL-Service lĂ€uft **4. Bilder werden nicht angezeigt** ```bash php artisan storage:link ``` ### Logs prĂŒfen ```bash tail -f storage/logs/laravel.log ``` ## 📞 Support Bei Problemen: 1. Logs prĂŒfen (`storage/logs/laravel.log`) 2. Debug-Modus temporĂ€r aktivieren 3. Browser-Entwicklertools prĂŒfen 4. Server-Error-Logs prĂŒfen ## 🎯 Nach dem Deployment ### Testen - [ ] Login funktioniert - [ ] Neuen Lack erstellen - [ ] Bild-Upload funktioniert - [ ] Mobile-Ansicht prĂŒfen - [ ] Admin-Funktionen testen ### Monitoring - Server-Ressourcen ĂŒberwachen - Datenbank-Performance prĂŒfen - User-Feedback sammeln --- **Viel Erfolg beim Deployment! 🎉**