292 lines
6.3 KiB
Markdown
292 lines
6.3 KiB
Markdown
# Installation & Setup
|
|
|
|
[← Zurück zur Hauptseite](../README.md)
|
|
|
|
## Voraussetzungen
|
|
|
|
- **Docker Desktop** (Windows/Mac) oder **Docker Engine + Docker Compose** (Linux)
|
|
- **Git**
|
|
- Mindestens 2GB freier RAM für Docker
|
|
- Ports 8080, 8081 und 3306 verfügbar
|
|
|
|
## Installations-Schritte
|
|
|
|
### 1. Repository klonen
|
|
|
|
```bash
|
|
git clone <repository-url>
|
|
cd immorechner
|
|
```
|
|
|
|
### 2. Docker-Container starten
|
|
|
|
```bash
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
Dieser Befehl:
|
|
- Baut das PHP 8.4 Image mit allen benötigten Extensions
|
|
- Startet MariaDB Container
|
|
- Startet phpMyAdmin Container
|
|
- Startet den Apache-Webserver
|
|
|
|
**Hinweis:** Der erste Build kann 5-10 Minuten dauern.
|
|
|
|
### 3. Dependencies installieren
|
|
|
|
```bash
|
|
docker-compose exec web composer install
|
|
```
|
|
|
|
### 4. Bundle-Assets installieren
|
|
|
|
```bash
|
|
docker-compose exec web php bin/console assets:install public --symlink --relative
|
|
```
|
|
|
|
Dieser Schritt ist wichtig für die Swagger UI (CSS, JS, Bilder).
|
|
|
|
### 5. Datenbank-Schema erstellen
|
|
|
|
```bash
|
|
docker-compose exec web php bin/console doctrine:migrations:migrate --no-interaction
|
|
```
|
|
|
|
Diese Migration erstellt:
|
|
- Users-Tabelle mit Passwort- und API-Key-Feldern
|
|
- Bundesländer-Tabelle (vorbefüllt mit allen 16 deutschen Bundesländern)
|
|
- Heizungstypen-Tabelle (vorbefüllt mit Ölheizung, Gasheizung, Wärmepumpe, Pelletheizung)
|
|
- Immobilien-Tabelle mit allen Relationen
|
|
|
|
### 6. Cache leeren
|
|
|
|
```bash
|
|
docker-compose exec web php bin/console cache:clear
|
|
```
|
|
|
|
## Überprüfung der Installation
|
|
|
|
### Anwendung testen
|
|
|
|
Öffnen Sie die folgenden URLs in Ihrem Browser:
|
|
|
|
1. **Frontend (Rechner):** http://localhost:8080
|
|
- Sie sollten den Immobilienrechner sehen
|
|
- Bundesländer-Dropdown sollte befüllt sein
|
|
- Heizungstypen-Dropdown sollte befüllt sein
|
|
|
|
2. **API-Dokumentation:** http://localhost:8080/api/docs.html
|
|
- Swagger UI sollte mit CSS/Styling laden
|
|
- Alle API-Endpunkte sollten sichtbar sein
|
|
|
|
3. **phpMyAdmin:** http://localhost:8081
|
|
- Server: `db`
|
|
- Benutzer: `root`
|
|
- Passwort: `root`
|
|
- Datenbank `immorechner` sollte existieren
|
|
|
|
### Datenbank überprüfen
|
|
|
|
```bash
|
|
# In Container einloggen
|
|
docker-compose exec db bash
|
|
|
|
# MariaDB-Client starten
|
|
mariadb -u root -proot immorechner
|
|
|
|
# Tabellen anzeigen
|
|
SHOW TABLES;
|
|
|
|
# Bundesländer überprüfen (sollte 16 Einträge haben)
|
|
SELECT COUNT(*) FROM bundeslaender;
|
|
|
|
# Heizungstypen überprüfen (sollte 4 Einträge haben)
|
|
SELECT COUNT(*) FROM heizungstypen;
|
|
|
|
# Beenden
|
|
EXIT;
|
|
```
|
|
|
|
## Erste Schritte nach der Installation
|
|
|
|
### 1. Testbenutzer anlegen
|
|
|
|
#### Via Frontend (Empfohlen)
|
|
|
|
1. Öffnen Sie http://localhost:8080/register
|
|
2. Registrieren Sie sich mit:
|
|
- Name: "Test User"
|
|
- E-Mail: "test@example.com"
|
|
- Passwort: "test123" (min. 6 Zeichen)
|
|
3. Nach der Registrierung werden Sie zum Login weitergeleitet
|
|
4. Melden Sie sich an
|
|
|
|
#### Via API
|
|
|
|
```bash
|
|
curl -X POST http://localhost:8080/api/users \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"name": "Test User",
|
|
"email": "test@example.com",
|
|
"role": "user"
|
|
}'
|
|
```
|
|
|
|
**Hinweis:** Die API-Response enthält den `apiKey`, den Sie für API-Anfragen benötigen.
|
|
|
|
### 2. Erste Immobilie berechnen
|
|
|
|
#### Via Frontend
|
|
|
|
1. Gehen Sie zu http://localhost:8080/
|
|
2. Füllen Sie das Formular aus (mindestens: Adresse, Kaufpreis, Wohnfläche)
|
|
3. Sehen Sie die Live-Berechnungen rechts
|
|
4. Optional: Klicken Sie auf "Link teilen" zum Teilen
|
|
5. Wenn angemeldet: Klicken Sie auf "Speichern"
|
|
|
|
#### Via API
|
|
|
|
```bash
|
|
# Ersetzen Sie YOUR_API_KEY mit dem API-Key aus Schritt 1
|
|
curl -X POST http://localhost:8080/api/immobilies \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-API-KEY: YOUR_API_KEY" \
|
|
-d '{
|
|
"verwalter": "/api/users/1",
|
|
"adresse": "Teststraße 123, 12345 Teststadt",
|
|
"wohnflaeche": 85,
|
|
"nutzflaeche": 15,
|
|
"zimmer": 3,
|
|
"typ": "wohnung",
|
|
"kaufpreis": 300000,
|
|
"bundesland": "/api/bundeslands/1"
|
|
}'
|
|
```
|
|
|
|
## Umgebungsvariablen anpassen
|
|
|
|
Die Datei `.env` enthält alle wichtigen Konfigurationen:
|
|
|
|
```env
|
|
# Symfony
|
|
APP_ENV=dev # Für Produktion: prod
|
|
APP_SECRET=<generiert> # Für Produktion: neu generieren
|
|
|
|
# Datenbank
|
|
DATABASE_URL="mysql://immorechner_user:immorechner_pass@db:3306/immorechner?serverVersion=mariadb-11.7.1&charset=utf8mb4"
|
|
|
|
# CORS (nur für API relevant)
|
|
CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
|
|
```
|
|
|
|
### Für Produktion
|
|
|
|
Erstellen Sie eine `.env.local` Datei (wird von Git ignoriert):
|
|
|
|
```env
|
|
APP_ENV=prod
|
|
APP_SECRET=<neue-generierte-secret-hier>
|
|
DATABASE_URL="mysql://prod_user:sichere_passwort@db-host:3306/prod_db?serverVersion=mariadb-11.7.1&charset=utf8mb4"
|
|
CORS_ALLOW_ORIGIN='^https?://(ihre-domain\.com)(:[0-9]+)?$'
|
|
```
|
|
|
|
## Ports anpassen
|
|
|
|
Falls die Standard-Ports bereits belegt sind, können Sie diese in `docker-compose.yml` ändern:
|
|
|
|
```yaml
|
|
services:
|
|
web:
|
|
ports:
|
|
- "8090:80" # Statt 8080:80
|
|
|
|
db:
|
|
ports:
|
|
- "3307:3306" # Statt 3306:3306
|
|
|
|
phpmyadmin:
|
|
ports:
|
|
- "8091:80" # Statt 8081:80
|
|
```
|
|
|
|
## Häufige Probleme bei der Installation
|
|
|
|
### Container starten nicht
|
|
|
|
```bash
|
|
# Container-Logs prüfen
|
|
docker-compose logs
|
|
|
|
# Spezifischen Container-Log prüfen
|
|
docker-compose logs web
|
|
docker-compose logs db
|
|
|
|
# Container-Status prüfen
|
|
docker ps -a
|
|
```
|
|
|
|
### "Permission Denied" Fehler
|
|
|
|
```bash
|
|
# Container neu bauen und Berechtigungen setzen
|
|
docker-compose down
|
|
docker-compose up -d --build
|
|
|
|
# Berechtigungen im Container setzen
|
|
docker-compose exec web chown -R www-data:www-data /var/www/html/var
|
|
```
|
|
|
|
### Datenbank-Verbindungsfehler
|
|
|
|
```bash
|
|
# Prüfen ob DB-Container läuft
|
|
docker ps | grep db
|
|
|
|
# DB-Logs prüfen
|
|
docker-compose logs db
|
|
|
|
# Warten bis DB bereit ist (kann 30-60 Sekunden dauern)
|
|
docker-compose exec web php bin/console doctrine:query:sql "SELECT 1"
|
|
```
|
|
|
|
### Composer-Fehler
|
|
|
|
```bash
|
|
# Composer Cache leeren
|
|
docker-compose exec web composer clear-cache
|
|
|
|
# Dependencies neu installieren
|
|
docker-compose exec web rm -rf vendor
|
|
docker-compose exec web composer install
|
|
```
|
|
|
|
## Deinstallation
|
|
|
|
### Nur Container stoppen
|
|
|
|
```bash
|
|
docker-compose down
|
|
```
|
|
|
|
### Container und Volumes löschen (Datenbank wird gelöscht!)
|
|
|
|
```bash
|
|
docker-compose down -v
|
|
```
|
|
|
|
### Alles entfernen (inkl. Images)
|
|
|
|
```bash
|
|
docker-compose down -v --rmi all
|
|
```
|
|
|
|
---
|
|
|
|
**Nächste Schritte:**
|
|
- [Features & Funktionalität](features.md) - Übersicht aller Funktionen
|
|
- [API-Dokumentation](api.md) - REST-API verwenden
|
|
- [Entwicklung](development.md) - Development-Workflow
|
|
|
|
[← Zurück zur Hauptseite](../README.md)
|