# đ 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! đ**