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,nginxundcertbot. - 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.