GNU/Linux >> Znalost Linux >  >> Linux

Nainstalujte WordPress s Docker Compose, Nginx, Apache s SSL

Nainstalujte WordPress s Docker, Nginx, Apache s SSL. V této příručce se naučíte, jak nastavit nejlepší výkon pomocí Docker, Docker Compose, Nginx, Apache, PHP 8.1, MariaDB a Let’s Encrypt pro spuštění WordPressu na Ubuntu 22.04.

Vytvoříme také svazky, aby byly změny nebo aktualizace zachovány i při restartování kontejneru.

Toto nastavení je testováno v cloudu Google s instancí s operačním systémem Ubuntu 22.04. Toto nastavení můžete také provést v jakékoli cloudové službě, jako je AWS nebo Azure nebo DigitalOcean, nebo na jakýchkoli vyhrazených serverech nebo serverech VPS.

Předpoklady

  1. Nainstalujte Docker na Ubuntu 22.04
  2. Nainstalujte Docker Compose na Ubuntu 22.04.

Ujistěte se, že jste provedli všechny výše uvedené kroky

  • Doména ukazuje na IP adresu vašeho serveru.
  • Docker nainstalován a nakonfigurován.
  • Docker Compose je nainstalován a nakonfigurován.

Jakmile budete mít všechny předpoklady hotové, můžete pokračovat v nastavení a konfiguraci WordPressu.

Krok 1:Vytvořte adresář projektu

SSH na váš server a začněte vytvořením nového adresáře projektu s názvem wp-project . Můžete jej také pojmenovat, jak potřebujete.

mkdir wp-project

Krok 2:Vytvořte soubor YML Docker Compose

Nyní přejděte do adresáře projektu a vytvořte nový soubor docker-compose.yml s následující konfigurací.

cd wp-project

Vytvořte nový docker-compose.yml soubor.

nano docker-compose.yml

Zkopírujte celý obsah níže a vložte jej do souboru.

Ujistěte se, že jste nahradili níže uvedené proměnné prostředí.

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:

Stiskněte CTRL-X následuje Y a ENTER pro uložení a ukončení souboru.

Zde jsou podrobnosti o konfiguraci.

  • verze :Vytvořte verzi souboru, která je kompatibilní s Docker Engine. Kompatibilitu můžete zkontrolovat zde.
  • služby :zde máme 4 služby s názvem wordpress , mariadb , nginx a certbot .
  • obrázek :Používáme nejnovější WordPress s PHP 8.1, obrázky Apache, Mariadb, Nginx a Certbot dostupné v centru Docker.
  • svazky :
    • wordpress :tento adresář jsme nakonfigurovali tak, aby byl synchronizován s adresářem, který chceme použít jako webový kořen uvnitř kontejneru.
    • conf :zde do kontejneru umístíme konfigurační soubor Nginx, který se má synchronizovat s výchozí složkou Nginx conf.d.
    • cedtbot/conf :zde obdržíme certifikát SSL a ten bude synchronizován se složkou, kterou si přejeme vložit do kontejneru.
    • ports :nakonfigurujte kontejner tak, aby naslouchal uvedeným portům.
    • command :příkaz používaný k přijetí certifikátu SSL.
  • životní prostředí :zde uvádíme všechny proměnné prostředí, které jsou dostupné pro obrázek WordPress.
    • WORDPRESS_DB_HOST :Zde používáme název služby kontejneru MariaDB.
    • WORDPRESS_DB_USER :Stejný jako ten, který jsme nakonfigurovali ve službě mariadb.
    • WORDPRESS_DB_PASSWORD :Stejný jako ten, který jsme nakonfigurovali ve službě mariadb.
    • WORDPRESS_DB_NAME :Stejný jako ten, který jsme nakonfigurovali ve službě mariadb.

Krok 3:Nakonfigurujte Nginx

Podle docker-compose.yml konfiguraci potřebujeme k vytvoření default.conf soubor uvnitř nginx/conf adresář.

Vytvořte adresář vedle vašeho docker-compose.yml soubor pro uložení konfiguračního souboru.

mkdir -p nginx/conf

Vytvořte soubor s názvem default.conf .

nano nginx/conf/default.conf

Umístěte následující konfigurace, zde používáme reverzní konfiguraci proxy pro kontejner wordpress se systémem 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;
    }
} 

Stiskněte CTRL-X následuje Y a ENTER pro uložení a ukončení souboru.

Nyní máte konfiguraci sestavování dockeru a konfiguraci Nginx.

Krok 4:Nasaďte WordPress s Docker Compose

Spusťte kontejnery pomocí následujícího příkazu, certifikáty SSL obdržíte, jakmile budou kontejnery spuštěny.

docker-compose up -d

Po spuštění všech kontejnerů uvidíte dva další adresáře certbot a wordpress vytvořené spolu s vaším docker-compose.yml soubor.

Adresář wordpress obsahuje veškerý zdrojový kód vašeho webu WordPress.

Adresář certbot obsahuje všechny soubory související s vašimi certifikáty SSL.

Chcete-li zobrazit kontejnery, můžete provést následující příkaz.

docker-compose ps

Krok 5:Nakonfigurujte Let's Encrypt SSL pomocí Nginx

Jakmile jste obdrželi certifikát Let’s Encrypt SSL, můžete nakonfigurovat HTTPS a nastavit přesměrování na HTTPS.

Upravte default.conf a proveďte následující změny.

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;
    }
} 

Stiskněte CTRL-X následuje Y a ENTER pro uložení a ukončení souboru.

Nyní restartujte službu Nginx, aby se načetly nové konfigurace.

docker-compose restart nginx

Nyní můžete zkontrolovat název domény z vašeho prohlížeče. Dostanete přesměrování na HTTPS a zobrazí se vám instalační stránka WordPress pro dokončení instalace.

Naučte se nejpokročilejší techniky WordPress s tímto snadno naučitelným kurzem.

Závěr

Nyní jste se naučili, jak nainstalovat a nastavit WordPress s Nginx, Apache, PHP 8.1, MariaDB a Let’s Encrypt with Docker a Docker Compose na Ubuntu 22.04.

Díky za váš čas. Pokud narazíte na jakýkoli problém nebo zpětnou vazbu, zanechte prosím komentář níže.


Linux
  1. Jak nainstalovat WordPress s Dockerem na Ubuntu

  2. Nainstalujte ModSecurity s Apache v kontejneru Docker

  3. Nainstalujte WordPress na Linux pomocí Apache

  1. Jak nainstalovat WordPress s Nginx na Ubuntu 18.04

  2. Jak nainstalovat WordPress s Apache na Ubuntu 18.04

  3. Jak nainstalovat Apache 2.4.2 ze zdroje na CentOS 6.2 s SSL

  1. Jak nainstalovat WordPress s Nginx na CentOS 7

  2. Jak nainstalovat WordPress s Apache na CentOS 7

  3. Jak nainstalovat WordPress s Nginx na AlmaLinux 8