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 Show 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 BẮT ĐẦU điều kiện tiên quyết
Hãy chắc chắn rằng bạn đã hoàn thành tất cả các bước được đề cập ở trên
Khi bạn đã hoàn thành tất cả các điều kiện tiên quyết, bạn có thể tiến hành thiết lập và định cấu hình WordPress Bước 1. Tạo một thư mục dự ánSSH đến máy chủ của bạn và bắt đầu bằng cách tạo một thư mục dự án mới có tên cd wp-project2. Bạn cũng có thể đặt tên cho nó bất cứ điều gì bạn cần mkdir wp-project Bước 2. Tạo Docker Soạn tệp YMLBây giờ điều hướng bên trong thư mục dự án và tạo một docker-compose mới. yml với cấu hình sau cd wp-project Tạo một tệp cd wp-project3 mới nano docker-compose.yml Copy toàn bộ nội dung bên dưới dán vào file Đảm bảo thay thế các biến môi trường được đề cập bên dưới 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: 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
Bước 3. Định cấu hình NginxTheo 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 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; } } 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 ComposeBắ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 NginxKhi 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.conf cd 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ậnBâ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 |