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.
Đó 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.
Mục Lục
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 ~/wordpress
cd ~/wordpress
nano compose.yml
Code language: Bash (bash)
Nhậ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: .env
Code language: YAML (yaml)
Tạo thêm file .env
nano .env
Code language: CSS (css)
Và 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=siteuser
MYSQL_PASSWORD=sitepassword
MYSQL_DATABASE=wordpress
MYSQL_ROOT_PASSWORD=rootpassword
Code language: Shell Session (shell)
Kích hoạt WordPress
docker compose up -d
Code language: Nginx (nginx)
III. 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
Code language: Nginx (nginx)
Ở 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"
]
}
}
}
}
]
Code language: JavaScript (javascript)
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: true
Code language: YAML (yaml)
3. 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/html
Code language: JavaScript (javascript)
File 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: true
Code language: YAML (yaml)
3. 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"
}
}
Code language: PHP (php)
4. Khởi động lại Caddy
Khởi động lại Caddy bằng lệnh sau
docker compose up -d --force-recreate
Code language: Nginx (nginx)
Nế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
Cảm ơn anh đã chia sẻ!! Có cái này làm và cấu hình tiện hơn bao nhiêu, và có nhiều cái bảo mật cho wordpress mà đến giờ e mới thấy.
Tuy nhiên cho em hỏi chút, e đã cài đặt caddy sẵn làm cấu hình reverse proxy rồi, giờ chỉ muốn cài thêm wordpress, mariadb, và phpmyadmin chạy trên nên caddy có sẵn, a có thể hướng dẫn sơ qua được không ạ!!!
E vô chỉnh lại file compose.yml. Bỏ Caddy ra khỏi đó, sau đó copy cấu hình của Caddy trong đó qua Caddy đang chạy.
Cho e hỏi Caddy em đang cài trên server khác thì có chạy được không hay buộc phải cài Caddy và WordPress trên cùng một nơi ạ. Như thế thì e phải chuyển toàn bộ cấu hình Caddy qua đây
Theo thiết lập trong bài thì bắt buộc Caddy phải chạy trên cùng network với WordPress nên bắt buộc Caddy phải nằm trên cùng server nha. Nằm khác server thì phải cấu hình overlay network rắc rối hơn rất nhiều.