324 lines
6.3 KiB
Markdown
Executable File
324 lines
6.3 KiB
Markdown
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
|
|
```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
|
|
<Files "database.sqlite">
|
|
Order allow,deny
|
|
Deny from all
|
|
</Files>
|
|
```
|
|
|
|
### MySQL-spezifische Sicherheit
|
|
```apache
|
|
# .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
|
|
```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! 🎉**
|