Installa WordPress con Docker, Nginx, Apache con SSL. In questa guida imparerai come eseguire una configurazione ottimale delle prestazioni con Docker, Docker Compose, Nginx, Apache, PHP 8.1, MariaDB e Let's Encrypt per eseguire WordPress su Ubuntu 22.04.
Creeremo anche i volumi in modo che le modifiche o gli aggiornamenti vengano conservati durante il riavvio del contenitore.
Questa configurazione è testata su Google cloud con un'istanza che esegue il sistema operativo Ubuntu 22.04. Puoi anche effettuare questa configurazione in qualsiasi servizio cloud come AWS o Azure o DigitalOcean o qualsiasi server dedicato o VPS.
Prerequisiti
- Installa Docker su Ubuntu 22.04
- Installa Docker Compose su Ubuntu 22.04.
Assicurati di aver completato tutti i passaggi sopra menzionati
- Dominio puntato all'indirizzo IP del tuo server.
- Docker installato e configurato.
- Docker Compose installato e configurato.
Una volta che hai fatto tutti i prerequisiti, puoi procedere con l'installazione e la configurazione di WordPress.
Fase 1:crea una directory di progetto
SSH al tuo server e inizia creando una nuova directory di progetto denominata wp-project . Puoi anche nominarlo come preferisci.
mkdir wp-project
Passaggio 2:crea Docker Componi file YML
Ora naviga all'interno della directory del progetto e crea un nuovo file docker-compose.yml con la seguente configurazione.
cd wp-project
Crea un nuovo docker-compose.yml file.
nano docker-compose.yml
Copia l'intero contenuto qui sotto e incollalo nel file.
Assicurati di sostituire le variabili di ambiente menzionate di seguito.
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:
Premi CTRL-X seguito da Y e ENTER per salvare ed uscire dal file.
Ecco i dettagli della configurazione.
- versione :Componi la versione del file compatibile con Docker Engine. Puoi verificare la compatibilità qui.
- servizi :qui abbiamo 4 servizi denominati
wordpress,mariadb,nginxecertbot. - immagine :Usiamo l'ultima versione di WordPress con le immagini PHP 8.1, Apache, Mariadb, Nginx e Certbot disponibili nell'hub Docker.
- volumi :
wordpress:abbiamo configurato questa directory per essere sincronizzata con la directory che desideriamo utilizzare come web root all'interno del contenitore.conf:qui collocheremo il file di configurazione di Nginx da sincronizzare con la cartella Nginx conf.d predefinita all'interno del contenitore.cedtbot/conf:è qui che riceveremo il certificato SSL e questo verrà sincronizzato con la cartella che desideriamo all'interno del contenitore.ports:configura il container per l'ascolto sulle porte elencate.command:il comando utilizzato per ricevere il certificato SSL.
- ambiente :qui elenchiamo tutte le variabili d'ambiente disponibili per l'immagine di WordPress.
WORDPRESS_DB_HOST:qui stiamo usando il nome del servizio del contenitore MariaDB.WORDPRESS_DB_USER:Uguale a quello che abbiamo configurato nel servizio mariadb.WORDPRESS_DB_PASSWORD:Uguale a quello che abbiamo configurato nel servizio mariadb.WORDPRESS_DB_NAME:Uguale a quello che abbiamo configurato nel servizio mariadb.
Fase 3:Configura Nginx
Come da docker-compose.yml configurazione dobbiamo creare il default.conf file all'interno del nginx/conf directory.
Crea la directory oltre al tuo docker-compose.yml file per contenere il file di configurazione.
mkdir -p nginx/conf
Crea un file chiamato default.conf .
nano nginx/conf/default.conf
Posiziona le seguenti configurazioni, qui usiamo la configurazione del proxy inverso per il contenitore wordpress che esegue 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;
}
}
Premi CTRL-X seguito da Y e ENTER per salvare ed uscire dal file.
Ora hai la tua configurazione di composizione della finestra mobile e la tua configurazione di Nginx.
Passaggio 4:distribuisci WordPress con Docker Compose
Avvia i contenitori usando il seguente comando, riceverai i certificati SSL una volta avviati i contenitori.
docker-compose up -d
Una volta avviati tutti i contenitori, vedrai due directory aggiuntive certbot e wordpress creato insieme al tuo docker-compose.yml file.
La directory wordpress contiene tutto il codice sorgente del tuo sito Web WordPress.
La directory certbot contiene tutti i file relativi ai tuoi certificati SSL.
Per visualizzare i contenitori puoi eseguire il seguente comando.
docker-compose ps
Passaggio 5:configura Let's Encrypt SSL con Nginx
Dopo aver ricevuto il certificato Let's Encrypt SSL, puoi configurare HTTPS e impostare il reindirizzamento su HTTPS.
Modifica il default.conf e apportare le seguenti modifiche.
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;
}
}
Premi CTRL-X seguito da Y e ENTER per salvare ed uscire dal file.
Ora riavvia il servizio Nginx per caricare le nuove configurazioni.
docker-compose restart nginx
Ora puoi controllare il tuo nome di dominio dal tuo browser. Riceverai un reindirizzamento a HTTPS e vedrai la pagina di installazione di WordPress per completare l'installazione.
Impara le Tecniche avanzate di WordPress con questo corso facile da imparare ora.
Conclusione
Ora hai imparato come installare e configurare WordPress con Nginx, Apache, PHP 8.1, MariaDB e Let's Encrypt con Docker e Docker Compose su Ubuntu 22.04.
Grazie per il tuo tempo. In caso di problemi o feedback, si prega di lasciare un commento qui sotto.