Merge branch 'main' of ssh://git.dsit.me:222/sandrodach/webhosting
This commit is contained in:
commit
28c4a686f7
1 file changed
+115
@@ -0,0 +1,115 @@
|
||||
# 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.
|
||||
Reference in new issue
Block a user