Installieren Sie WordPress mit Docker, Nginx, Apache mit SSL. In diesem Leitfaden erfahren Sie, wie Sie mit Docker, Docker Compose, Nginx, Apache, PHP 8.1, MariaDB und Let’s Encrypt die beste Leistung einrichten, um WordPress unter Ubuntu 22.04 auszuführen.
Wir werden auch Volumes erstellen, damit die Änderungen oder Aktualisierungen beim Neustart des Containers erhalten bleiben.
Dieses Setup wird in Google Cloud mit einer Instanz getestet, auf der Ubuntu 22.04 OS ausgeführt wird. Sie können diese Einrichtung auch in beliebigen Cloud-Diensten wie AWS oder Azure oder DigitalOcean oder dedizierten oder VPS-Servern vornehmen.
Voraussetzungen
- Installieren Sie Docker unter Ubuntu 22.04
- Installieren Sie Docker Compose auf Ubuntu 22.04.
Bitte stellen Sie sicher, dass Sie alle oben genannten Schritte ausgeführt haben
- Domain verwies auf Ihre Server-IP-Adresse.
- Docker installiert und konfiguriert.
- Docker Compose installiert und konfiguriert.
Sobald Sie alle Voraussetzungen erfüllt haben, können Sie mit der Einrichtung und Konfiguration von WordPress fortfahren.
Schritt 1:Erstellen Sie ein Projektverzeichnis
Stellen Sie eine SSH-Verbindung zu Ihrem Server her und erstellen Sie zunächst ein neues Projektverzeichnis mit dem Namen wp-project
. Sie können es auch beliebig benennen.
mkdir wp-project
Schritt 2:Docker-Compose-YML-Datei erstellen
Navigieren Sie nun in das Projektverzeichnis und erstellen Sie eine neue docker-compose.yml-Datei mit der folgenden Konfiguration.
cd wp-project
Erstellen Sie einen neuen docker-compose.yml
Datei.
nano docker-compose.yml
Kopieren Sie den gesamten Inhalt unten und fügen Sie ihn in die Datei ein.
Stellen Sie sicher, dass Sie die unten aufgeführten Umgebungsvariablen ersetzen.
version: "3.9" services: wordpress: container_name: wordpress image: wordpress:php8.1-apache restart: always stdin_open: true tty: true environment: WORDPRESS_DB_HOST: mariadb WORDPRESS_DB_USER: db_user WORDPRESS_DB_PASSWORD: db_user_pass WORDPRESS_DB_NAME: db_name volumes: - wordpress_data:/var/www/html - ./wordpress:/var/www/html mariadb: container_name: mariadb image: mariadb restart: always environment: MYSQL_DATABASE: db_name MYSQL_USER: db_user MYSQL_PASSWORD: db_user_pass MYSQL_RANDOM_ROOT_PASSWORD: 'root_pass' volumes: - db_data:/var/lib/mysql nginx: container_name: nginx image: nginx:latest restart: unless-stopped ports: - 80:80 - 443:443 volumes: - ./nginx/conf:/etc/nginx/conf.d - ./certbot/conf:/etc/nginx/ssl - ./certbot/data:/var/www/html certbot: container_name: certbot image: certbot/certbot:latest command: certonly --webroot --webroot-path=/var/www/html --email [email protected] --agree-tos --no-eff-email -d domain.com -d www.domain.com volumes: - ./certbot/conf:/etc/letsencrypt - ./certbot/logs:/var/log/letsencrypt - ./certbot/data:/var/www/html volumes: db_data: wordpress_data:
Drücken Sie CTRL-X
gefolgt von Y
und ENTER
um die Datei zu speichern und zu beenden.
Hier sind die Konfigurationsdetails.
- Version :Dateiversion erstellen, die mit der Docker Engine kompatibel ist. Hier können Sie die Kompatibilität überprüfen.
- Dienste :Hier haben wir 4 Dienste mit dem Namen
wordpress
,mariadb
,nginx
undcertbot
. - Bild :Wir verwenden das neueste WordPress mit PHP 8.1, Apache-, Mariadb-, Nginx- und Certbot-Images, die im Docker-Hub verfügbar sind.
- Volumen :
wordpress
:Wir haben dieses Verzeichnis so konfiguriert, dass es mit dem Verzeichnis synchronisiert wird, das wir als Web-Root innerhalb des Containers verwenden möchten.conf
:Hier platzieren wir die Nginx-Konfigurationsdatei, die mit dem standardmäßigen Nginx-Ordner conf.d im Container synchronisiert werden soll.cedtbot/conf
:Hier erhalten wir das SSL-Zertifikat und dieses wird mit dem gewünschten Ordner im Container synchronisiert.ports
:Konfigurieren Sie den Container so, dass er die aufgelisteten Ports überwacht.command
:Der Befehl, der verwendet wird, um das SSL-Zertifikat zu erhalten.
- Umgebung :Hier listen wir alle Umgebungsvariablen auf, die für das WordPress-Image verfügbar sind.
WORDPRESS_DB_HOST
:Hier verwenden wir den Dienstnamen des MariaDB-Containers.WORDPRESS_DB_USER
:Dasselbe wie das, das wir im mariadb-Dienst konfiguriert haben.WORDPRESS_DB_PASSWORD
:Dasselbe wie das, das wir im mariadb-Dienst konfiguriert haben.WORDPRESS_DB_NAME
:Dasselbe wie das, das wir im mariadb-Dienst konfiguriert haben.
Schritt 3:Nginx konfigurieren
Gemäß docker-compose.yml
Konfiguration müssen wir den default.conf
erstellen Datei innerhalb des nginx/conf
Verzeichnis.
Erstellen Sie das Verzeichnis neben Ihrem docker-compose.yml
Datei zum Speichern der Konfigurationsdatei.
mkdir -p nginx/conf
Erstellen Sie eine Datei namens default.conf
.
nano nginx/conf/default.conf
Platzieren Sie die folgenden Konfigurationen, hier verwenden wir die Reverse-Proxy-Konfiguration für den WordPress-Container, auf dem Apache ausgeführt wird.
server { listen [::]:80; listen 80; server_name domain.com www.domain.com; root /var/www/html; index index.php; location ~ /.well-known/acme-challenge { allow all; root /var/www/html; } location / { try_files $uri @apache; } location ~ ^/.user.ini { deny all; } location ~* .(svg|svgz)$ { types {} default_type image/svg+xml; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location @apache { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~[^?]*/$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~ .php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~/. { deny all; access_log off; log_not_found off; } }
Drücken Sie CTRL-X
gefolgt von Y
und ENTER
um die Datei zu speichern und zu beenden.
Jetzt haben Sie Ihre Docker Compose-Konfiguration und Ihre Nginx-Konfiguration.
Schritt 4:WordPress mit Docker Compose bereitstellen
Starten Sie die Container mit dem folgenden Befehl, Sie erhalten die SSL-Zertifikate, sobald die Container gestartet sind.
docker-compose up -d
Sobald alle Container gestartet sind, sehen Sie zwei zusätzliche Verzeichnisse certbot
und wordpress
zusammen mit Ihrem docker-compose.yml
erstellt Datei.
Das Verzeichnis wordpress
enthält den gesamten Quellcode Ihrer WordPress-Website.
Das Verzeichnis certbot
enthält alle Dateien, die sich auf Ihre SSL-Zertifikate beziehen.
Um die Container anzuzeigen, können Sie den folgenden Befehl ausführen.
docker-compose ps
Schritt 5:Let’s Encrypt SSL mit Nginx konfigurieren
Nachdem Sie das SSL-Zertifikat von Let’s Encrypt erhalten haben, können Sie HTTPS konfigurieren und die Umleitung zu HTTPS einrichten.
Bearbeiten Sie den default.conf
und nehmen Sie die folgenden Änderungen vor.
nano nginx/conf/default.conf
server { listen [::]:80; listen 80; server_name domain.com www.domain; return 301 https://www.domain.com$request_uri; } server { listen [::]:443 ssl http2; listen 443 ssl http2; server_name domain.com; ssl_certificate /etc/nginx/ssl/live/domain.com/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/live/domain.com/privkey.pem; return 301 https://www.domain.com$request_uri; } server { listen [::]:443 ssl http2; listen 443 ssl http2; server_name www.domain.com; ssl_certificate /etc/nginx/ssl/live/domain.com/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/live/domain.com/privkey.pem; root /var/www/html; index index.php; location ~ /.well-known/acme-challenge { allow all; root /var/www/html; } location / { try_files $uri @apache; } location ~ ^/.user.ini { deny all; } location ~* .(svg|svgz)$ { types {} default_type image/svg+xml; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location @apache { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~[^?]*/$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~ .php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~/. { deny all; access_log off; log_not_found off; } }
Drücken Sie CTRL-X
gefolgt von Y
und ENTER
um die Datei zu speichern und zu beenden.
Starten Sie nun den Nginx-Dienst neu, um die neuen Konfigurationen zu laden.
docker-compose restart nginx
Jetzt können Sie Ihren Domainnamen in Ihrem Browser überprüfen. Sie erhalten eine Umleitung zu HTTPS und sehen die WordPress-Installationsseite, um die Installation abzuschließen.
Erlernen Sie die erweiterten Techniken von WordPress jetzt mit diesem einfach zu lernenden Kurs.
Schlussfolgerung
Jetzt haben Sie gelernt, wie Sie WordPress mit Nginx, Apache, PHP 8.1, MariaDB und Let’s Encrypt mit Docker und Docker Compose unter Ubuntu 22.04 installieren und einrichten.
Vielen Dank für Ihre Zeit. Wenn Sie auf ein Problem oder Feedback stoßen, hinterlassen Sie bitte unten einen Kommentar.