6.3 KiB
Executable File
6.3 KiB
Executable File
🚀 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
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
# Auf dem Server:
touch database.sqlite
chmod 664 database.sqlite
chown www-data:www-data database.sqlite # Falls verfügbar
4. Deployment ausführen
composer install --optimize-autoloader --no-dev
php artisan migrate --force
php artisan storage:link
php artisan config:cache
5. Admin-User erstellen
php artisan tinker
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
# Alle Dateien außer:
# - node_modules/ (falls vorhanden)
# - vendor/ (wird auf Server installiert)
# - .git/ (nicht nötig)
3. .env konfigurieren
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
# 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
php artisan tinker
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:
php -m | grep -E "(sqlite3|pdo_sqlite)"
MySQL PHP-Erweiterungen:
php -m | grep -E "(mysql|pdo_mysql)"
Composer installieren (falls nicht verfügbar):
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)
chmod -R 755 storage/
chmod -R 755 bootstrap/cache/
chmod 664 database.sqlite
chmod 644 .env
Berechtigungen (MySQL)
chmod -R 755 storage/
chmod -R 755 bootstrap/cache/
chmod 644 .env
🛡️ Sicherheit
Wichtige Einstellungen
APP_DEBUG=falsein Produktion- Starke Passwörter verwenden
- HTTPS aktivieren
.envnicht öffentlich zugänglich
SQLite-spezifische Sicherheit
# .htaccess - SQLite-Datei schützen
<Files "database.sqlite">
Order allow,deny
Deny from all
</Files>
MySQL-spezifische Sicherheit
# .htaccess bereits konfiguriert
# Zusätzliche Sicherheit:
<Files ".env">
Order allow,deny
Deny from all
</Files>
📱 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
#!/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
#!/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)
0 2 * * * /path/to/backup_sqlite.sh
🐛 Troubleshooting
SQLite-spezifische Probleme
1. "Database is locked"
chmod 664 database.sqlite
chown www-data:www-data database.sqlite
2. "SQLite3 not found"
# PHP-Erweiterung aktivieren
php -m | grep sqlite
3. Berechtigungsfehler
chmod 664 database.sqlite
chmod -R 755 storage/
MySQL-spezifische Probleme
1. "Class not found" Fehler
composer dump-autoload
2. Berechtigungsfehler
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
php artisan storage:link
Logs prüfen
tail -f storage/logs/laravel.log
📞 Support
Bei Problemen:
- Logs prüfen (
storage/logs/laravel.log) - Debug-Modus temporär aktivieren
- Browser-Entwicklertools prüfen
- 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! 🎉