Urre wordpress nginx docker-compose image

Ngày nay, gần một nửa trong số 1 triệu trang web hàng đầu trên internet sử dụng WordPress CMS (Hệ thống quản lý nội dung). WordPress có rất nhiều tính năng và rất dễ sử dụng ngay cả đối với người dùng không có kỹ thuật, điều này khiến nó trở thành giải pháp CMS cho nhiều người. Tuy nhiên, thiết lập một trang web với WordPress trong máy chủ VPS hoặc máy chủ Đám mây có thể là một nhiệm vụ khá khó khăn đối với cả người dùng không có kỹ thuật cũng như kỹ thuật. Chúng ta sẽ học cách làm điều đó trong bài viết này

Cài đặt WordPress với Docker, Nginx, Apache với SSL. Trong hướng dẫn này, bạn sẽ tìm hiểu cách thiết lập hiệu suất tốt nhất với Docker, Docker Compose, Nginx, Apache, PHP 8. 1, MariaDB và Let's Encrypt để chạy WordPress trên Ubuntu 22. 04

Chúng tôi cũng sẽ tạo các khối để các thay đổi hoặc cập nhật sẽ được giữ nguyên trong khi khởi động lại vùng chứa

Thiết lập này được thử nghiệm trên đám mây của Google với phiên bản chạy Ubuntu 22. 04 HĐH. Bạn cũng có thể thực hiện thiết lập này trong bất kỳ dịch vụ đám mây nào như AWS hoặc Azure hoặc DigitalOcean hoặc bất kỳ máy chủ chuyên dụng hoặc VPS nào

[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:

Nhấn cd wp-project4 theo sau là cd wp-project5 và cd wp-project6 để lưu và thoát tệp

Sau đây là chi tiết cấu hình

  • phiên bản. Soạn phiên bản tệp tương thích với Docker Engine. Bạn có thể kiểm tra tính tương thích tại đây
  • dịch vụ. ở đây chúng tôi có 4 dịch vụ có tên là cd wp-project7, cd wp-project8, cd wp-project9 và nano docker-compose.yml0
  • hình ảnh. Chúng tôi sử dụng WordPress mới nhất với PHP 8. 1, hình ảnh Apache, Mariadb, Nginx và Certbot có sẵn trong trung tâm Docker
  • tập
    • cd wp-project7. chúng tôi đã định cấu hình thư mục này để được đồng bộ hóa với thư mục mà chúng tôi muốn sử dụng làm gốc web bên trong vùng chứa
    • nano docker-compose.yml2. ở đây chúng tôi sẽ đặt tệp cấu hình Nginx được đồng bộ hóa với Nginx conf mặc định. d thư mục bên trong container
    • nano docker-compose.yml3. đây là nơi chúng tôi sẽ nhận chứng chỉ SSL và chứng chỉ này sẽ được đồng bộ hóa với thư mục chúng tôi muốn bên trong vùng chứa
    • nano docker-compose.yml4. định cấu hình vùng chứa để lắng nghe các cổng được liệt kê
    • nano docker-compose.yml5. lệnh được sử dụng để nhận chứng chỉ SSL
  • Môi trường. ở đây chúng tôi liệt kê tất cả các biến môi trường có sẵn cho hình ảnh WordPress
    • nano docker-compose.yml6. Ở đây chúng tôi đang sử dụng tên dịch vụ của bộ chứa MariaDB
    • nano docker-compose.yml7. Giống như dịch vụ chúng tôi đã định cấu hình trong dịch vụ mariadb
    • nano docker-compose.yml8. Giống như dịch vụ chúng tôi đã định cấu hình trong dịch vụ mariadb
    • nano docker-compose.yml9. Giống như dịch vụ chúng tôi đã định cấu hình trong dịch vụ mariadb

Bước 3. Định cấu hình Nginx

Theo cấu hình cd wp-project3, chúng ta cần tạo tệp 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:1 bên trong thư mục 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:2

Tạo thư mục bên cạnh tệp cd wp-project3 của bạn để chứa tệp cấu hình

mkdir -p nginx/conf

Tạo một tệp có tên 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:1

nano nginx/conf/default.conf

Đặt các cấu hình sau, ở đây chúng tôi sử dụng cấu hình proxy ngược để chứa wordpress chạy 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 //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 //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 //wordpress:80;     }     location ~/. {         deny all;         access_log off;         log_not_found off;     } }

Nhấn cd wp-project4 theo sau là cd wp-project5 và cd wp-project6 để lưu và thoát tệp

Bây giờ bạn đã có cấu hình soạn thảo docker và cấu hình Nginx của mình

Bước 4. Triển khai WordPress với Docker Compose

Bắt đầu các vùng chứa bằng lệnh sau, bạn sẽ nhận được chứng chỉ SSL sau khi các vùng chứa được khởi động

docker-compose up -d

Sau khi tất cả các vùng chứa được khởi động, bạn sẽ thấy hai thư mục bổ sung nano docker-compose.yml0 và cd wp-project7 được tạo cùng với tệp cd wp-project3 của bạn

Thư mục cd wp-project7 chứa tất cả mã nguồn trang web WordPress của bạn

Thư mục nano docker-compose.yml0 chứa tất cả các tệp liên quan đến chứng chỉ SSL của bạn

Để xem các thùng chứa, bạn có thể thực hiện lệnh sau

docker-compose ps

Bước 5. Cấu hình Let's Encrypt SSL với Nginx

Khi bạn đã nhận được chứng chỉ Let's Encrypt SSL, bạn có thể định cấu hình HTTPS và thiết lập chuyển hướng sang HTTPS

Chỉnh sửa 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:1 và thực hiện các thay đổi sau

nano nginx/conf/default.confcd wp-project0

Nhấn cd wp-project4 theo sau là cd wp-project5 và cd wp-project6 để lưu và thoát tệp

Bây giờ hãy khởi động lại dịch vụ Nginx để tải các cấu hình mới

cd wp-project1

Bây giờ bạn có thể kiểm tra tên miền của mình từ trình duyệt. Bạn sẽ nhận được chuyển hướng đến HTTPS và bạn sẽ thấy trang cài đặt WordPress để hoàn tất cài đặt

Tìm hiểu các Kỹ thuật nâng cao nhất của WordPress với khóa học dễ học này ngay bây giờ

Phần kết luận

Bây giờ bạn đã học cách cài đặt và thiết lập WordPress với Nginx, Apache, PHP 8. 1, MariaDB và Let's Encrypt with Docker và Docker Compose trên Ubuntu 22. 04

Chủ đề