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
- Nainstalujte Docker na Ubuntu 22.04
- 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 example@unixlinux.online --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,nginxacertbot. - 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.