166 lines
3.6 KiB
Markdown
166 lines
3.6 KiB
Markdown
# PHP Projekt Setup für Netcup
|
|
|
|
## Projektstruktur
|
|
|
|
Das Deployment erwartet diese Struktur in deinem Hauptprojekt:
|
|
|
|
```
|
|
dein-projekt/ # Hauptordner
|
|
├── ansible/ # Hier sind wir jetzt
|
|
│ └── netcup-simple-deploy/
|
|
├── docker/ # Docker-Konfiguration
|
|
│ ├── Dockerfile # (optional, wird sonst automatisch erstellt)
|
|
│ └── docker-compose.yml # (optional)
|
|
├── src/ # PHP Framework/Library Dateien
|
|
│ ├── classes/
|
|
│ ├── includes/
|
|
│ └── ...
|
|
├── public/ # Web-Root (öffentlich zugänglich)
|
|
│ ├── index.php # Haupteinstiegspunkt
|
|
│ ├── css/
|
|
│ ├── js/
|
|
│ ├── images/
|
|
│ └── ...
|
|
├── storage/ # (optional) Logs, Cache, etc.
|
|
├── cache/ # (optional) Cache-Dateien
|
|
├── logs/ # (optional) Log-Dateien
|
|
└── .env # (optional) Umgebungsvariablen
|
|
```
|
|
|
|
## Quick Setup
|
|
|
|
### 1. Konfiguration
|
|
```bash
|
|
cd ansible/netcup-simple-deploy
|
|
vim inventory/hosts.yml
|
|
```
|
|
|
|
**Ändere diese Werte:**
|
|
```yaml
|
|
ansible_host: DEINE-NETCUP-IP
|
|
domain: "deine-domain.com"
|
|
ssl_email: "deine@email.com"
|
|
local_app_path: "../.." # Zeigt auf dein Hauptprojekt
|
|
php_version: "8.2" # PHP Version
|
|
```
|
|
|
|
### 2. Deployment
|
|
```bash
|
|
make deploy
|
|
```
|
|
|
|
Das war's! Deine PHP-App läuft unter `https://deine-domain.com`
|
|
|
|
## Was passiert beim Deployment?
|
|
|
|
1. **Dateien übertragen:** `public/`, `src/`, `docker/` → Server
|
|
2. **Dockerfile erstellen:** Falls keins in `docker/` vorhanden
|
|
3. **Docker Container bauen:** PHP + Apache + deine App
|
|
4. **Nginx Proxy:** SSL-Termination und Weiterleitung
|
|
5. **SSL-Zertifikat:** Automatisch mit Let's Encrypt
|
|
|
|
## Für verschiedene PHP-Setups
|
|
|
|
### Eigenes Dockerfile verwenden
|
|
Lege dein Dockerfile in `docker/Dockerfile`:
|
|
```dockerfile
|
|
FROM php:8.2-apache
|
|
|
|
# Deine spezifischen PHP Extensions
|
|
RUN docker-php-ext-install pdo pdo_mysql
|
|
|
|
# Custom Apache Config
|
|
COPY docker/apache.conf /etc/apache2/sites-available/000-default.conf
|
|
|
|
# App Dateien
|
|
COPY public/ /var/www/html/
|
|
COPY src/ /var/www/src/
|
|
|
|
EXPOSE 80
|
|
```
|
|
|
|
### Mit Composer Dependencies
|
|
```dockerfile
|
|
FROM php:8.2-apache
|
|
|
|
# Composer installieren
|
|
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
|
|
|
# Dependencies installieren
|
|
COPY composer.json composer.lock /var/www/
|
|
WORKDIR /var/www
|
|
RUN composer install --no-dev --optimize-autoloader
|
|
|
|
# App kopieren
|
|
COPY public/ /var/www/html/
|
|
COPY src/ /var/www/src/
|
|
```
|
|
|
|
### Mit Database
|
|
Erweitere `inventory/hosts.yml`:
|
|
```yaml
|
|
app_env:
|
|
APP_ENV: "production"
|
|
DATABASE_HOST: "your-db-host"
|
|
DATABASE_NAME: "your-db-name"
|
|
DATABASE_USER: "your-db-user"
|
|
DATABASE_PASS: "your-db-password"
|
|
```
|
|
|
|
## Nützliche Befehle
|
|
|
|
```bash
|
|
# Logs anschauen
|
|
make logs
|
|
make error-logs
|
|
|
|
# Cache löschen
|
|
make clear-cache
|
|
|
|
# Permissions reparieren
|
|
make fix-permissions
|
|
|
|
# Composer auf Server ausführen
|
|
make composer-install
|
|
|
|
# Live logs verfolgen
|
|
make tail-logs
|
|
|
|
# SSH auf Server
|
|
make ssh
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### App lädt nicht?
|
|
```bash
|
|
# Apache Fehler-Logs prüfen
|
|
make error-logs
|
|
|
|
# Allgemeine Logs
|
|
make logs
|
|
|
|
# Container Status
|
|
make status
|
|
```
|
|
|
|
### Permissions-Probleme?
|
|
```bash
|
|
# Permissions reparieren
|
|
make fix-permissions
|
|
```
|
|
|
|
### Nach Code-Änderungen?
|
|
```bash
|
|
# Einfach neu deployen
|
|
make deploy
|
|
```
|
|
|
|
### Database-Verbindung?
|
|
```bash
|
|
# Umgebungsvariablen prüfen
|
|
ansible all -m shell -a "docker exec \$(docker ps -q | head -1) env | grep DATABASE"
|
|
```
|
|
|
|
Das Setup ist optimiert für deine bestehende Projektstruktur - keine Änderungen an deinem Code nötig! 🎉
|