Sau một thời gian dài thiết lập WordPress trên nền OpenLiteSpeed server sử dụng Docker Compose, gần đây mình đã chuyển dần tất cả các website WordPress đang quản lý chuyển qua hoạt động trên nền Caddy Server.
https://thuanbui.me/caddy-server
Đó là lý do của bài viết hôm nay: hướng dẫn cách cài đặt WordPress + MariaDB chạy trên nền Caddy Server sử dụng Docker Compose.
I. Yêu cầu chuẩn bị
Để thực hiện theo thao tác trong bài, bạn cần chuẩn bị hệ thống như sau:
-
VPS cài đặt hệ điều hành Linux: CentOS / Debian / Ubuntu. Bạn cũng có thể cài đặt trên Windows / MacOS / Raspberry Pi, miễn là hệ điều hành hỗ trợ Docker.
-
VPS đã được cài đặt Docker và Docker Compose. Xem hướng dẫn ở đây.
-
VPS đã được cài đặt Caddy làm web server. Xem hướng dẫn ở đây.
II. Cài đặt WordPress
Tạo thư mục mới với tên gọi wordpress, sau đó tạo file compose.yml trong thư mục này
mkdir ~/wordpresscd ~/wordpressnano compose.ymlNhập vào nội dung sau
services: wordpress: image: wordpress:fpm-alpine container_name: wordpress restart: always depends_on: - db volumes: - ./html:/var/www/html - ./custom.ini:/usr/local/etc/php/conf.d/custom.ini env_file: .env
db: image: mariadb:10.11.6-jammy restart: always volumes: - ./mysql:/var/lib/mysql env_file: .envTạo thêm file .env
nano .envVà nhập vào nội dung sau, và nên thay đổi nội dung các thông số sau dấu = để tối ưu bảo mật.
## MYSQL ##MYSQL_USER=siteuserMYSQL_PASSWORD=sitepasswordMYSQL_DATABASE=wordpressMYSQL_ROOT_PASSWORD=rootpasswordKích hoạt WordPress
docker compose up -dIII. Cấu hình Caddy làm Reverse Proxy
Hướng dẫn trong phần này chỉ áp dụng khi bạn cài đặt Caddy bằng Docker theo hướng dẫn ở đây.
1. Kết nối Caddy vào cùng network với WordPress
Kiểm tra xem network hiện tại của container WordPress là gì bằng lệnh
docker container inspect wordpressỞ phần Networks ở cuối cùng, bạn sẽ thấy tên network wordpress_default
"Networks": { "wordpress_default": { "IPAMConfig": null, "Links": null, "Aliases": [ "wordpress", "336a69c38146" ], "MacAddress": "02:42:ac:1a:00:03", "NetworkID": "8a7f38c640194a8fe70dc0922f4120ee4c2d72a352ec63a3fb412da4e41c441a", "EndpointID": "27a946ef2774f455b70c3b062053aa93f30c12519af1f4b939a360c951e56899", "Gateway": "172.26.0.1", "IPAddress": "172.26.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "DriverOpts": null, "DNSNames": [ "wordpress", "336a69c38146" ] } } } }]Chỉnh sửa file compose.yml của Caddy, thêm đoạn sau vào cuối file. Mục đích nhằm kết nối container caddy vào cùng network với container wordpress
networks: default: name: wordpress_default external: true3. Khai báo volumes
Ngoài ra, cần chỉnh sửa lại phần volumes trong file compose.yml, thêm vào dòng sau
- ../wordpress/html:/var/www/htmlFile compose.yml sau khi chỉnh sửa sẽ giống như sau
services: caddy: image: caddy:2.7.6-alpine container_name: caddy restart: unless-stopped ports: - "80:80" - "443:443" - "443:443/udp" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./caddy_data:/data - ./caddy_config:/config - ../wordpress/html:/var/www/html
networks: default: name: wordpress_default external: true3. Cập nhật Caddyfile
Thêm đoạn sau vào Caddyfile, thay domain.com thành tên miền của bạn.
domain.com { root * /var/www/html encode zstd gzip
# Serve WordPress PHP files through php-fpm: php_fastcgi wordpress:9000
# Enable the static file server: file_server { precompressed gzip } header / { X-Frame-Options "SAMEORIGIN" X-Content-Type-Options "nosniff" }
}4. Khởi động lại Caddy
Khởi động lại Caddy bằng lệnh sau
docker compose up -d --force-recreateNếu tất cả trơn tru, bạn có thể truy cập vào địa chỉ https://domain.com để cài đặt WordPress.
Vậy là xong. Chúc bạn cài đặt thành công!
Nếu cảm thấy việc cài đặt thủ công quá rối rắm, bạn có thể tham khảo cài đặt WordPress bằng công cụ wordpress-caddy-docker theo hướng dẫn dưới đây