GNU/Linux >> Linux Esercitazione >  >> Linux

Installa WordPress con Docker Compose, Nginx, Apache con SSL

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

  1. Installa Docker su Ubuntu 22.04
  2. 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 , nginx e certbot .
  • 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.


Linux
  1. Come installare WordPress con Nginx su Ubuntu 18.04

  2. Come installare WordPress con Docker su Ubuntu

  3. Installa ModSecurity con Apache in un Docker Container

  4. Installa WordPress su Linux con Apache

  5. Come installare Apache 2.4.2 da Source su CentOS 6.2 con SSL

Installa WordPress con Nginx su Ubuntu 18.04

Come installare WordPress su CentOS 7.1 con Apache

Installa WordPress con Docker su Ubuntu 20.04

Come installare Apache Tomcat 10 su Ubuntu 20.04 con Nginx

Installa e usa Docker Compose con Docker su Ubuntu 22.04

Come installare Apache Tomcat 10 su Ubuntu 22.04 con Nginx