Files
webhosting/README.md
T
2026-10-21 20:56:06 +02:00

115 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PHP 8.5 Apache Docker-Umgebung
Vorkonfigurierte Docker-Umgebung auf Basis von `php:8.5-apache` inklusive selbstsigniertem SSL-Zertifikat, optimiertem OPcache und dynamischem Mail-Relay über `msmtp` (konfigurierbar per `.env`).
## Enthaltene Komponenten & Features
* **Webserver:** Apache 2 mit aktiviertem `mod_rewrite` und `mod_ssl`
* **PHP-Version:** PHP 8.5
* **Installierte PHP-Extensions:**
* `mysqli` (MySQL-Datenbanktreiber)
* `gd` (inkl. WebP- und PNG-Support)
* `imagick` (ImageMagick via PECL)
* `intl`, `zip`, `exif`
* `opcache` (im PHP-8.5-Kern integriert und über `/usr/local/etc/php/conf.d/opcache.ini` vorkonfiguriert)
* **Mail-Versand (`msmtp`):** Ersetzt das veraltete `ssmtp`. Die Konfiguration wird beim Container-Start automatisch aus den Umgebungsvariablen der `.env`-Datei generiert.
---
## Projektstruktur
```text
├── default
│ ├── docker-compose.yaml
│ └── .env
├── dockerfile
│ ├── Dockerfile
│ ├── php.ini
│ ├── apache2.conf
│ └── 000-default.conf
└── README.md
```
> **Hinweis:** Die Konfigurationsdateien (`php.ini`, `apache2.conf`, `000-default.conf`) müssen im Ordner `dockerfile/` liegen, damit der Build-Kontext beim Kopieren (`COPY`) darauf zugreifen kann. In der `default/docker-compose.yaml` verweist `build: ../dockerfile` auf dieses Verzeichnis.
---
## Installation & Erster Start
### 1. Repository klonen
```bash
git clone <REPOSITORY-URL>
cd <REPOSITORY-ORDNER>/default
```
### 2. `.env` konfigurieren
Passe die Datei `default/.env` mit deinen SMTP-Zugangsdaten an:
```env
SMTP_HOST=smtp.dein-provider.de
SMTP_PORT=587
SMTP_USER=dein-benutzername@example.com
SMTP_PASS='DeinGeheimesPasswort'
SMTP_FROM=noreply@example.com
SMTP_TLS=on
SMTP_STARTTLS=on
```
*(Bei Nutzung von Port `465` mit implizitem TLS muss `SMTP_STARTTLS=off` gesetzt werden).*
### 3. Container bauen und starten
Aus dem Verzeichnis `default/` heraus ausführen:
```bash
docker compose up -d --build
```
---
## Update
Je nachdem, was aktualisiert werden soll, gibt es drei Wege (alle Befehle werden im Ordner `default/` ausgeführt):
### 1. Nur `.env` oder `docker-compose.yaml` geändert (z. B. neues SMTP-Passwort)
Da `msmtp` die Konfiguration bei jedem Container-Start neu schreibt, ist **kein Neubau** des Images nötig. Es reicht, den Container neu zu erstellen:
```bash
docker compose up -d
```
### 2. Änderungen aus dem Git-Repository übernehmen (`Dockerfile` oder Configs)
Wenn Änderungen am `Dockerfile`, der `php.ini` oder den Apache-Configs über Git heruntergeladen wurden:
```bash
git pull
docker compose up -d --build
```
### 3. PHP-Basis-Image & Systempakete aktualisieren (Sicherheitsupdates)
Docker nutzt standardmäßig den lokalen Cache für `FROM php:8.5-apache` und `apt-get`. Um die neueste Patch-Version von PHP 8.5 und aktuelle Debian-Pakete zu erzwingen:
```bash
docker compose build --pull --no-cache
docker compose up -d
```
*Optional – Alte, nicht mehr genutzte Docker-Images nach einem Update aufräumen:*
```bash
docker image prune -f
```
---
## E-Mail-Versand testen & Logs prüfen
Um zu testen, ob der Mail-Versand über `msmtp` aus dem laufenden Container heraus funktioniert:
**1. Test-Mail über die PHP-CLI senden:**
```bash
docker compose exec php-apache-environment php -r "mail('empfaenger@example.com', 'Docker Test', 'Mailversand funktioniert!');"
```
**2. msmtp-Logbuch auslesen:**
```bash
docker compose exec php-apache-environment cat /var/log/msmtp.log
```
Endet der Log-Eintrag mit `exitcode=EX_OK`, wurde die E-Mail erfolgreich vom SMTP-Server angenommen.