Ich habe bereits schon hier eine Anleitung geschrieben, wie ihr WordPress innerhalb weniger Minuten betreiben könnt. Nun zeige ich euch, wie ihr WordPress zusammen mit Redis betreiben könnt.
Datum | Änderungen |
---|---|
21.02.2023 | Erstellung dieser Anleitung |
29.05.2023 | Anpassung an neue Traefik Anleitung |
0. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
1. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/wordpress/{database,app}
2. Docker Compose anlegen
Nun legen wir die eigentliche Docker Datei an. Hierfür habe ich mir die offizielle WordPress Compose genommen und diese abgeändert für Traefik.
nano /opt/containers/wordpress/docker-compose.yml
Inhalt
version: '3.1' services: wordpress: image: wordpress restart: unless-stopped container_name: wordpress environment: WORDPRESS_DB_HOST: wordpress-db WORDPRESS_DB_USER: exampleuser ## Hier Benutzer eingeben ## WORDPRESS_DB_PASSWORD: examplepass ## Hier Passwort eingeben ## WORDPRESS_DB_NAME: wordpress volumes: - ./app:/var/www/html labels: - "traefik.enable=true" - "traefik.http.routers.wordpress.entrypoints=websecure" - "traefik.http.routers.wordpress.rule=Host(`wordpress.euredomain.de`)" - "traefik.http.routers.wordpress.middlewares=default@file" - "traefik.http.routers.wordpress.tls=true" - "traefik.http.routers.wordpress.tls.certresolver=http_resolver" - "traefik.http.routers.wordpress.service=wordpress" - "traefik.http.services.wordpress.loadbalancer.server.port=80" - "traefik.docker.network=proxy" networks: - proxy - default wordpress-db: image: mariadb:10.6-focal container_name: wordpress-db restart: unless-stopped environment: MYSQL_DATABASE: wordpress MYSQL_USER: exampleuser ## Hier selben Benutzer eingeben ## MYSQL_PASSWORD: examplepass ## Hier selbes Passwort eingeben ## MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - ./database:/var/lib/mysql networks: - default wordpress-redis: image: redis:alpine container_name: wordpress-redis restart: unless-stopped networks: - default networks: proxy: external: true
Notwendige Anpassungen:
- MySQL Passwort ändern
- MySQL User ändern
- eure Domain bei Traefik anpassen („wordpress.euredomain.de“)
Wenn ihr WordPress auf eurer “Hauptdomain” haben wollt, so gebt ihr folgendes ein:
"traefik.http.routers.wordpress.rule=Host(`www.euredomain.de`,`euredomain.de`)"
3. WordPress starten
WordPress startet ihr wie gewohnt mit folgendem Befehl:
docker compose -f /opt/containers/wordpress/docker-compose.yml up -d
4. WordPress einrichten
Wenn ihr nun auf “wordpress.euredomain.de” geht, dann solltet ihr direkt zur Konfiguration kommen. Hier könnt ihr dann eure Sprache wählen sowie einen Administrator Benutzer erstellen.
5. Redis konfigurieren
5.1 wp-config.php anpassen
Dazu öffnet ihr folgende Datei in euer Linux Konsole:
nano /opt/containers/wordpress/app/wp-config.php
Hier fügt ihr folgende beiden Zeilen ein:
define( 'WP_REDIS_HOST', 'wordpress-redis' ); define( 'WP_REDIS_PORT', 6379 );
Dies sieht bei mir so aus:
5.2 WordPress Redis Plugin installieren
Nun installieren wir uns folgendes Plugin unter WordPress: Redis Object Cache
Nach der Installation aktiviert ihr das Plugin und sollet dann folgendes sehen. Hier müsst ihr nur auf “Object-Zwischenspeicher aktivieren” klicken.
Nun sollte alles grün werden.
6. Absichern mit CrowdSec
Nachdem ihr WordPress installiert habt, könnt ihr dies mit CrowdSec noch zusätzlich absichern. Wie ihr das innerhalb weniger Minuten macht, könnt ihr hier lesen.
7. Quellen
https://hub.docker.com/_/wordpress
Hallo Christian
Als Tipp: Die DB und das OS im Container haben ja eine Lebensdauer und die Installation eines CMS ist häufig auf einen langen Betrieb mit mehr oder wenig Änderungen bei den allermeisten Nutzern ausgelegt. Daher würde ich vorschlagen, den Tag der mariadb Version auf mariadb:10.11.6-jammy anzupassen. Das Docker Image geht vermutlich erst 2027 bis 2028 EoL – vermutlich, da MariaDB und Ubuntu keine vollständig vergleichbares Support Modell und Lebensdauer bieten.
Siehe für MariaDB hier: https://mariadb.com/kb/en/mariadb-server-release-dates/
und Ubuntu hier: https://wiki.ubuntu.com/Releases
Beste Grüsse
Alex
Also ich muss sagen, das WP it redis wesentlich langsamer läuft, als mit dem standard cache
This config does not work with crowdsec and traefik if you use the root domain. (In my case, this is d**ko.gov.ua). If you deploy it on a subdomain, for example, wp.d**ko.gov.ua, then everything works. And for me the root domain is important 🙁
Hallo, ich habe im Dasboard unter Website-Zustand, 2 Fehlermeldungen Fehler: cURL error 28: Connection timed out after 10001 milliseconds (http_request_failed) und REST-API-Antwort: (http_request_failed) cURL error 28: Connection timed out after 10001 milliseconds. Jemand eine Idee wie ich die fehler beheben könnte?