Installez WordPress avec Docker, Nginx, Apache avec SSL . Dans ce guide, vous allez apprendre à faire une meilleure configuration de performance avec Docker, Docker Compose, Nginx, Apache, PHP 8.1, MariaDB et Let's Encrypt pour exécuter WordPress sur Ubuntu 22.04.
Nous créerons également des volumes afin que les modifications ou les mises à jour soient conservées lors du redémarrage du conteneur.
Cette configuration est testée sur Google Cloud avec une instance exécutant le système d'exploitation Ubuntu 22.04. Vous pouvez également effectuer cette configuration dans n'importe quel service cloud comme AWS ou Azure ou DigitalOcean ou n'importe quel serveur dédié ou VPS.
Prérequis
- Installer Docker sur Ubuntu 22.04
- Installez Docker Compose sur Ubuntu 22.04.
Veuillez vous assurer que vous avez terminé toutes les étapes mentionnées ci-dessus
- Le domaine pointe vers l'adresse IP de votre serveur.
- Docker installé et configuré.
- Docker Compose installé et configuré.
Une fois que vous avez rempli toutes les conditions préalables, vous pouvez procéder à l'installation et à la configuration de WordPress.
Étape 1 :Créer un répertoire de projet
Connectez-vous en SSH à votre serveur et commencez par créer un nouveau répertoire de projet nommé wp-project
. Vous pouvez également lui donner le nom dont vous avez besoin.
mkdir wp-project
Étape 2 :Créer un fichier Docker Compose YML
Naviguez maintenant dans le répertoire du projet et créez un nouveau fichier docker-compose.yml avec la configuration suivante.
cd wp-project
Créer un nouveau docker-compose.yml
fichier.
nano docker-compose.yml
Copiez tout le contenu ci-dessous et collez-le dans le fichier.
Assurez-vous de remplacer les variables d'environnement mentionnées ci-dessous.
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:
Tapez CTRL-X
suivi de Y
et ENTER
pour enregistrer et quitter le fichier.
Voici les détails de configuration.
- version :version du fichier Compose compatible avec le moteur Docker. Vous pouvez vérifier la compatibilité ici.
- services :ici nous avons 4 services nommés
wordpress
,mariadb
,nginx
etcertbot
. - image :Nous utilisons la dernière version de WordPress avec les images PHP 8.1, Apache, Mariadb, Nginx et Certbot disponibles dans le hub Docker.
- volumes :
wordpress
:nous avons configuré ce répertoire pour qu'il soit synchronisé avec le répertoire que nous souhaitons utiliser comme racine Web dans le conteneur.conf
:ici, nous allons placer le fichier de configuration Nginx à synchroniser avec le dossier Nginx conf.d par défaut à l'intérieur du conteneur.cedtbot/conf
:c'est là que nous recevrons le certificat SSL et celui-ci sera synchronisé avec le dossier que nous souhaitons à l'intérieur du conteneur.ports
:configurez le conteneur pour qu'il écoute les ports répertoriés.command
:la commande utilisée pour recevoir le certificat SSL.
- environnement :nous listons ici toutes les variables d'environnement disponibles pour l'image WordPress.
WORDPRESS_DB_HOST
:Ici, nous utilisons le nom de service du conteneur MariaDB.WORDPRESS_DB_USER
:Identique à celui que nous avons configuré dans le service mariadb.WORDPRESS_DB_PASSWORD
:Identique à celui que nous avons configuré dans le service mariadb.WORDPRESS_DB_NAME
:Identique à celui que nous avons configuré dans le service mariadb.
Étape 3 :Configurer Nginx
Selon le docker-compose.yml
configuration dont nous avons besoin pour créer le default.conf
fichier à l'intérieur du nginx/conf
répertoire.
Créez le répertoire en plus de votre docker-compose.yml
fichier pour contenir le fichier de configuration.
mkdir -p nginx/conf
Créez un fichier nommé default.conf
.
nano nginx/conf/default.conf
Placez les configurations suivantes, ici nous utilisons la configuration du proxy inverse pour le conteneur wordpress exécutant Apache.
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; } }
Tapez CTRL-X
suivi de Y
et ENTER
pour enregistrer et quitter le fichier.
Vous avez maintenant votre configuration docker compose et votre configuration Nginx.
Étape 4 :Déployez WordPress avec Docker Compose
Démarrez les conteneurs à l'aide de la commande suivante, vous recevrez les certificats SSL une fois les conteneurs démarrés.
docker-compose up -d
Une fois tous les conteneurs démarrés, vous verrez deux répertoires supplémentaires certbot
et wordpress
créé avec votre docker-compose.yml
fichier.
Le répertoire wordpress
contient tout le code source de votre site Web WordPress.
Le répertoire certbot
contient tous les fichiers liés à vos certificats SSL.
Pour afficher les conteneurs, vous pouvez exécuter la commande suivante.
docker-compose ps
Étape 5 :Configurer Let's Encrypt SSL avec Nginx
Comme vous avez reçu le certificat SSL Let's Encrypt, vous pouvez configurer HTTPS et configurer la redirection vers HTTPS.
Modifiez le default.conf
et apportez les modifications suivantes.
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; } }
Tapez CTRL-X
suivi de Y
et ENTER
pour enregistrer et quitter le fichier.
Redémarrez maintenant le service Nginx pour charger les nouvelles configurations.
docker-compose restart nginx
Vous pouvez maintenant vérifier votre nom de domaine depuis votre navigateur. Vous obtiendrez une redirection vers HTTPS et vous verrez la page d'installation de WordPress pour terminer l'installation.
Apprenez les techniques avancées de WordPress avec ce cours facile à apprendre maintenant.
Conclusion
Vous avez maintenant appris à installer et à configurer WordPress avec Nginx, Apache, PHP 8.1, MariaDB et Let's Encrypt avec Docker et Docker Compose sur Ubuntu 22.04.
Merci pour votre temps. Si vous rencontrez un problème ou des commentaires, veuillez laisser un commentaire ci-dessous.