API updadte
This commit is contained in:
291
docs/installation.md
Normal file
291
docs/installation.md
Normal file
@@ -0,0 +1,291 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user