455 lines
8.8 KiB
Markdown
455 lines
8.8 KiB
Markdown
# Sterntours Laravel Projekt - Initialisierung & Setup
|
|
|
|
Diese Dokumentation beschreibt die Initialisierung und Einrichtung des Sterntours Laravel-Projekts.
|
|
|
|
## 📋 Inhaltsverzeichnis
|
|
|
|
1. [Voraussetzungen](#voraussetzungen)
|
|
2. [Schnellstart](#schnellstart)
|
|
3. [Manuelle Installation](#manuelle-installation)
|
|
4. [Projekt-Struktur](#projekt-struktur)
|
|
5. [Umgebungskonfiguration](#umgebungskonfiguration)
|
|
6. [Datenbanken](#datenbanken)
|
|
7. [Domains & Routing](#domains--routing)
|
|
8. [Häufige Befehle](#häufige-befehle)
|
|
9. [Fehlerbehebung](#fehlerbehebung)
|
|
|
|
---
|
|
|
|
## Voraussetzungen
|
|
|
|
Bevor du das Projekt initialisierst, stelle sicher, dass folgende Software installiert ist:
|
|
|
|
- **Docker Desktop** (Version 20.10+)
|
|
- [Download für macOS](https://www.docker.com/products/docker-desktop)
|
|
- [Download für Windows](https://www.docker.com/products/docker-desktop)
|
|
- [Download für Linux](https://docs.docker.com/engine/install/)
|
|
|
|
- **Composer** (Version 2.0+)
|
|
- [Installation Guide](https://getcomposer.org/download/)
|
|
|
|
- **Node.js & NPM** (Version 16+ empfohlen)
|
|
- [Download](https://nodejs.org/)
|
|
|
|
- **Git** (für Versionskontrolle)
|
|
- [Download](https://git-scm.com/)
|
|
|
|
---
|
|
|
|
## Schnellstart
|
|
|
|
Das Projekt kann mit einem einzigen Befehl initialisiert werden:
|
|
|
|
```bash
|
|
bash init.sh
|
|
```
|
|
|
|
Das Script führt automatisch alle notwendigen Schritte aus:
|
|
|
|
1. ✓ Prüft Docker-Installation
|
|
2. ✓ Erstellt `.env` Datei
|
|
3. ✓ Installiert Composer-Dependencies
|
|
4. ✓ Installiert NPM-Dependencies
|
|
5. ✓ Generiert Application Key
|
|
6. ✓ Erstellt Docker-Netzwerke
|
|
7. ✓ Startet Docker-Container
|
|
8. ✓ Führt Datenbank-Migrationen aus
|
|
9. ✓ Erstellt Storage-Links
|
|
10. ✓ Optimiert die Application
|
|
|
|
---
|
|
|
|
## Manuelle Installation
|
|
|
|
Falls du das Projekt manuell einrichten möchtest:
|
|
|
|
### 1. Repository klonen
|
|
|
|
```bash
|
|
git clone <repository-url> sterntours
|
|
cd sterntours
|
|
```
|
|
|
|
### 2. Umgebungsvariablen konfigurieren
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Bearbeite die `.env` Datei nach Bedarf (siehe [Umgebungskonfiguration](#umgebungskonfiguration)).
|
|
|
|
### 3. Dependencies installieren
|
|
|
|
```bash
|
|
# Composer Dependencies
|
|
composer install
|
|
|
|
# NPM Dependencies
|
|
npm install
|
|
```
|
|
|
|
### 4. Application Key generieren
|
|
|
|
```bash
|
|
php artisan key:generate
|
|
```
|
|
|
|
### 5. Docker Proxy-Netzwerk erstellen
|
|
|
|
```bash
|
|
docker network create proxy
|
|
```
|
|
|
|
### 6. Docker Container starten (Laravel Sail)
|
|
|
|
```bash
|
|
./vendor/bin/sail up -d
|
|
```
|
|
|
|
### 7. Datenbank migrieren
|
|
|
|
```bash
|
|
./vendor/bin/sail artisan migrate
|
|
```
|
|
|
|
### 8. Storage Links erstellen
|
|
|
|
```bash
|
|
./vendor/bin/sail artisan storage:link
|
|
```
|
|
|
|
### 9. Cache optimieren
|
|
|
|
```bash
|
|
./vendor/bin/sail artisan config:cache
|
|
./vendor/bin/sail artisan route:cache
|
|
./vendor/bin/sail artisan view:cache
|
|
```
|
|
|
|
---
|
|
|
|
## Projekt-Struktur
|
|
|
|
```
|
|
sterntours/
|
|
├── app/ # Application Code
|
|
│ ├── Console/ # Artisan Commands
|
|
│ ├── Http/ # Controllers, Middleware
|
|
│ ├── Models/ # Eloquent Models
|
|
│ ├── Services/ # Business Logic
|
|
│ └── Repositories/ # Data Access Layer
|
|
├── config/ # Konfigurationsdateien
|
|
├── database/ # Migrations, Seeds, Factories
|
|
├── public/ # Öffentliche Assets
|
|
├── resources/ # Views, Assets (Sass, JS)
|
|
├── routes/ # Route Definitionen
|
|
├── storage/ # Logs, Cache, Uploads
|
|
├── tests/ # Unit & Feature Tests
|
|
├── docker-compose.yml # Docker Setup
|
|
├── init.sh # Initialisierungsskript
|
|
└── INIT.md # Diese Datei
|
|
```
|
|
|
|
---
|
|
|
|
## Umgebungskonfiguration
|
|
|
|
### Wichtige .env Variablen
|
|
|
|
#### Haupt-Datenbank (CRM)
|
|
```env
|
|
DB_CONNECTION=mysql
|
|
DB_HOST=mysql
|
|
DB_PORT=3306
|
|
DB_DATABASE=stern_crm
|
|
DB_USERNAME=sail
|
|
DB_PASSWORD=password
|
|
```
|
|
|
|
#### Stern-Datenbank (Legacy)
|
|
```env
|
|
DB_CONNECTION_STERN=mysql
|
|
DB_HOST_STERN=mysql-stern
|
|
DB_PORT_STERN=3306
|
|
DB_DATABASE_STERN=stern_db
|
|
DB_USERNAME_STERN=sail
|
|
DB_PASSWORD_STERN=password
|
|
```
|
|
|
|
#### Mail-Konfiguration (Mailpit)
|
|
```env
|
|
MAIL_MAILER=smtp
|
|
MAIL_HOST=mailpit
|
|
MAIL_PORT=1025
|
|
MAIL_ENCRYPTION=null
|
|
```
|
|
|
|
#### Redis Cache
|
|
```env
|
|
REDIS_HOST=redis
|
|
REDIS_PASSWORD=null
|
|
REDIS_PORT=6379
|
|
```
|
|
|
|
---
|
|
|
|
## Datenbanken
|
|
|
|
Das Projekt verwendet **zwei separate MySQL-Datenbanken**:
|
|
|
|
### 1. stern_crm (Haupt-CRM)
|
|
- **Port:** 33064
|
|
- **Verwendung:** Haupt-Application, Kundenverwaltung
|
|
- **Host in Container:** mysql
|
|
|
|
### 2. stern_db (Legacy Datenbank)
|
|
- **Port:** 33065
|
|
- **Verwendung:** Alte Stern-Tours Daten
|
|
- **Host in Container:** mysql-stern
|
|
|
|
### Datenbankzugriff von außen
|
|
|
|
```bash
|
|
# CRM Datenbank
|
|
mysql -h 127.0.0.1 -P 33064 -u sail -p stern_crm
|
|
|
|
# Stern Datenbank
|
|
mysql -h 127.0.0.1 -P 33065 -u sail -p stern_db
|
|
```
|
|
|
|
---
|
|
|
|
## Domains & Routing
|
|
|
|
Das Projekt verwendet **Traefik** als Reverse Proxy und ist über folgende Domains erreichbar:
|
|
|
|
| Domain | Zweck | Port |
|
|
|--------|-------|------|
|
|
| `https://mein.sterntours.test` | Haupt-Application | 443 |
|
|
| `https://sterntours.test` | Alternative URL | 443 |
|
|
| `https://assets.sterntours.test` | Vite Dev-Server | 5173 |
|
|
| `https://sterntours-mail.test` | Mailpit Dashboard | 8025 |
|
|
|
|
### Hosts-Datei konfigurieren
|
|
|
|
Füge folgende Einträge zu deiner `/etc/hosts` (Linux/Mac) oder `C:\Windows\System32\drivers\etc\hosts` (Windows) hinzu:
|
|
|
|
```
|
|
127.0.0.1 mein.sterntours.test
|
|
127.0.0.1 sterntours.test
|
|
127.0.0.1 assets.sterntours.test
|
|
127.0.0.1 sterntours-mail.test
|
|
```
|
|
|
|
---
|
|
|
|
## Häufige Befehle
|
|
|
|
### Docker Container
|
|
|
|
```bash
|
|
# Container starten
|
|
./vendor/bin/sail up -d
|
|
|
|
# Container stoppen
|
|
./vendor/bin/sail down
|
|
|
|
# Container neu bauen
|
|
./vendor/bin/sail build --no-cache
|
|
|
|
# Logs anzeigen
|
|
./vendor/bin/sail logs -f
|
|
|
|
# Spezifischen Service anzeigen
|
|
./vendor/bin/sail logs mysql -f
|
|
```
|
|
|
|
### Artisan Befehle
|
|
|
|
```bash
|
|
# Migrationen ausführen
|
|
./vendor/bin/sail artisan migrate
|
|
|
|
# Migrationen zurücksetzen
|
|
./vendor/bin/sail artisan migrate:rollback
|
|
|
|
# Seeds ausführen
|
|
./vendor/bin/sail artisan db:seed
|
|
|
|
# Cache leeren
|
|
./vendor/bin/sail artisan cache:clear
|
|
./vendor/bin/sail artisan config:clear
|
|
./vendor/bin/sail artisan route:clear
|
|
./vendor/bin/sail artisan view:clear
|
|
|
|
# Cache optimieren
|
|
./vendor/bin/sail artisan config:cache
|
|
./vendor/bin/sail artisan route:cache
|
|
./vendor/bin/sail artisan view:cache
|
|
```
|
|
|
|
### Composer
|
|
|
|
```bash
|
|
# Packages installieren
|
|
./vendor/bin/sail composer install
|
|
|
|
# Package hinzufügen
|
|
./vendor/bin/sail composer require <package>
|
|
|
|
# Package entfernen
|
|
./vendor/bin/sail composer remove <package>
|
|
|
|
# Autoload aktualisieren
|
|
./vendor/bin/sail composer dump-autoload
|
|
```
|
|
|
|
### NPM / Assets
|
|
|
|
```bash
|
|
# Dependencies installieren
|
|
npm install
|
|
|
|
# Development Build
|
|
npm run dev
|
|
|
|
# Production Build
|
|
npm run prod
|
|
|
|
# Watch Mode
|
|
npm run watch
|
|
```
|
|
|
|
### Tests
|
|
|
|
```bash
|
|
# Alle Tests ausführen
|
|
./vendor/bin/sail test
|
|
|
|
# Spezifische Test-Datei
|
|
./vendor/bin/sail test tests/Feature/ExampleTest.php
|
|
|
|
# Mit Coverage
|
|
./vendor/bin/sail test --coverage
|
|
```
|
|
|
|
### Shell / SSH
|
|
|
|
```bash
|
|
# Shell im Container öffnen
|
|
./vendor/bin/sail shell
|
|
|
|
# Root Shell
|
|
./vendor/bin/sail root-shell
|
|
|
|
# MySQL Shell
|
|
./vendor/bin/sail mysql
|
|
|
|
# Redis CLI
|
|
./vendor/bin/sail redis
|
|
```
|
|
|
|
---
|
|
|
|
## Fehlerbehebung
|
|
|
|
### Problem: "Docker is not running"
|
|
|
|
**Lösung:** Starte Docker Desktop und warte, bis es vollständig gestartet ist.
|
|
|
|
```bash
|
|
# macOS/Linux
|
|
sudo systemctl start docker
|
|
|
|
# Windows
|
|
Starte Docker Desktop über das Startmenü
|
|
```
|
|
|
|
### Problem: "Port already in use"
|
|
|
|
**Lösung:** Prüfe, welche Ports belegt sind und ändere sie in der `.env` Datei:
|
|
|
|
```bash
|
|
# Ports prüfen
|
|
lsof -i :33064
|
|
lsof -i :33065
|
|
|
|
# In .env ändern
|
|
FORWARD_DB_PORT=33064
|
|
FORWARD_DB_PORT_STERN=33065
|
|
```
|
|
|
|
### Problem: "Network proxy not found"
|
|
|
|
**Lösung:** Erstelle das Traefik Proxy-Netzwerk manuell:
|
|
|
|
```bash
|
|
docker network create proxy
|
|
```
|
|
|
|
### Problem: "Permission denied" beim init.sh
|
|
|
|
**Lösung:** Mache das Script ausführbar:
|
|
|
|
```bash
|
|
chmod +x init.sh
|
|
./init.sh
|
|
```
|
|
|
|
### Problem: "Class not found"
|
|
|
|
**Lösung:** Regeneriere Composer Autoload:
|
|
|
|
```bash
|
|
./vendor/bin/sail composer dump-autoload
|
|
./vendor/bin/sail artisan clear-compiled
|
|
```
|
|
|
|
### Problem: "Migration failed"
|
|
|
|
**Lösung:** Prüfe Datenbankverbindung und setze zurück:
|
|
|
|
```bash
|
|
# Verbindung testen
|
|
./vendor/bin/sail artisan tinker
|
|
>>> DB::connection()->getPdo();
|
|
|
|
# Migrationen zurücksetzen
|
|
./vendor/bin/sail artisan migrate:fresh
|
|
```
|
|
|
|
### Problem: "Vite/Assets nicht geladen"
|
|
|
|
**Lösung:** Starte den Dev-Server:
|
|
|
|
```bash
|
|
npm run dev
|
|
# oder
|
|
npm run watch
|
|
```
|
|
|
|
---
|
|
|
|
## Support & Kontakt
|
|
|
|
Bei Fragen oder Problemen:
|
|
|
|
1. Prüfe die [Fehlerbehebung](#fehlerbehebung)
|
|
2. Prüfe die [Laravel Dokumentation](https://laravel.com/docs)
|
|
3. Prüfe die [Laravel Sail Dokumentation](https://laravel.com/docs/sail)
|
|
|
|
---
|
|
|
|
## Changelog
|
|
|
|
### Version 1.0.0 (2025-11-07)
|
|
- ✓ Initiales Setup-Script erstellt
|
|
- ✓ Dokumentation erstellt
|
|
- ✓ Docker Compose Konfiguration
|
|
- ✓ Dual-Datenbank Setup
|
|
- ✓ Traefik Routing konfiguriert
|
|
|
|
---
|
|
|
|
**Viel Erfolg mit dem Projekt! 🚀**
|
|
|