WordPress là nền tảng CMS phổ biến nhất hiện nay, và việc triển khai WordPress bằng Docker giúp dễ dàng quản lý, di chuyển và mở rộng hệ thống. Trong bài viết này, KDATA sẽ hướng dẫn bạn cài đặt WordPress trên Docker Compose kết hợp với Nginx, Apache, MariaDB và Let’s Encrypt SSL trên Ubuntu 22.04. Đây là một cấu hình tối ưu, đảm bảo hiệu suất và bảo mật cao.
Yêu cầu hệ thống
Trước khi tiến hành cài đặt, bạn cần đảm bảo máy chủ của mình đáp ứng các điều kiện sau:
- Cài đặt Docker trên Ubuntu 22.04.
- Cài đặt Docker Compose trên Ubuntu 22.04.
- Domain đã trỏ về IP máy chủ.
Nếu đã đáp ứng đủ các yêu cầu trên, chúng ta sẽ tiến hành triển khai WordPress với Docker.
Cài đặt WordPress với Docker Compose
Bước 1: Tạo thư mục chứa dự án
SSH vào máy chủ và tạo thư mục chứa dự án:
cd /home
mkdir wp-project
cd wp-project
Bước 2: Tạo file docker-compose.yml
Tạo một file mới có tên docker-compose.yml
và thêm nội dung sau:
version: "3.9"
services:
wordpress:
container_name: wordpress
image: wordpress:php8.1-apache
restart: always
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
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 your-email@domain.com --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:
Thay thế domain.com
và your-email@domain.com
bằng thông tin của bạn.
Bước 3: Cấu hình Nginx
Tạo thư mục chứa file cấu hình:
mkdir -p nginx/conf
nano nginx/conf/default.conf
Thêm nội dung sau vào default.conf
:
server {
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 @apache {
proxy_pass //wordpress:80;
}
}
Lưu ý thay domain.com
bằng domain của bạn.
Bước 4: Triển khai WordPress với Docker Compose
Chạy lệnh sau để khởi động các containers:
docker-compose up -d
Kiểm tra trạng thái:
docker-compose ps
Nếu tất cả containers hoạt động, bạn đã cài đặt thành công.
Bước 5: Cấu hình Let’s Encrypt SSL
Mở file default.conf
:
nano nginx/conf/default.conf
Thêm đoạn sau để chuyển hướng HTTP sang HTTPS:
server {
listen 80;
server_name domain.com www.domain.com;
return 301 //domain.com$request_uri;
}
server {
listen 443 ssl;
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 //www.domain.com$request_uri;
}
Cuối cùng, khởi động lại Nginx:
docker-compose restart nginx
Kết luận
Bạn đã hoàn tất việc cài đặt WordPress với Docker, Nginx, Apache và SSL. Hệ thống này giúp bạn dễ dàng quản lý và bảo mật website. Nếu có bất kỳ vấn đề gì, hãy liên hệ KDATA để được hỗ trợ.
Câu hỏi thường gặp (FAQs)
1. Tại sao nên sử dụng Docker để cài đặt WordPress?
Docker giúp triển khai nhanh chóng, dễ dàng quản lý và di chuyển giữa các máy chủ.
2. Tôi có thể sử dụng MySQL thay vì MariaDB không?
Có, bạn chỉ cần thay đổi image MariaDB thành MySQL trong docker-compose.yml
.
3. Làm thế nào để cập nhật WordPress khi dùng Docker?
Chạy lệnh sau để cập nhật:
docker-compose pull wordpress
docker-compose up -d
4. Làm thế nào để sao lưu dữ liệu WordPress khi sử dụng Docker?
Bạn có thể sao lưu thư mục wordpress_data
và db_data
bằng lệnh docker volume
hoặc rsync.
5. Làm sao để kiểm tra logs của container?
Sử dụng lệnh:
docker logs wordpress -f
Nếu bạn cần hỗ trợ chuyên sâu hơn, hãy liên hệ ngay với KDATA.