Chúng ta đã học cách cài trang WordPress lần đầu trên Caddy Web Server, việc cài trang thứ hai sẽ đơn giản hơn vì chúng ta đã cấu trúc trang đầu chuẩn, và sẽ không cần phải cài lại những phần đã cài (php, mariadb, caddy web server).
A. Tạo bảng database mới
MariaDB thì quản lý chung, nhưng mỗi trang web có database riêng.
1. Vào MariaDB
sudo mariadb
2. Tạo database
Bắt buộc tên bảng cơ sở dữ liệu, người dùng, mật khẩu phải khác với thông tin ở website đầu. Tên bảng cơ sở dữ liệu phải khác vì lý do kỹ thuật (không thể trùng nhau), user & pass phải khác vì lý do bảo mật.
CREATE DATABASE wordpress_hi_caddy DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser_hi_caddy'@'localhost' IDENTIFIED BY 'pass_db_hi_caddy';
GRANT ALL PRIVILEGES ON wordpress_hi_caddy.* TO 'wpuser_hi_caddy'@'localhost';
FLUSH PRIVILEGES;
EXIT;
B. Tải và cài đặt WordPress
1. Tạo biến
Thay example.com bằng tên miền thứ hai của bạn.
DOMAIN="example.com"
2. Tạo thư mục chứa mã nguồn của website thứ hai
sudo mkdir -p /var/www/$DOMAIN/public_html
3. Tạo thư mục chứa log lỗi và phân quyền
sudo mkdir -p /var/www/$DOMAIN/logs && sudo chown -R caddy:caddy /var/www/$DOMAIN/logs
4. Di chuyển vào thư mục web
cd /var/www/$DOMAIN
5. Tải file cài WordPress về và giải nén, xóa file nén sau khi giải nén
sudo curl -LO https://wordpress.org/latest.tar.gz && sudo tar xzvf latest.tar.gz -C /var/www/$DOMAIN/public_html --strip-components=1 && sudo rm latest.tar.gz
6. Phân quyền
WP_ROOT="/var/www/$DOMAIN/public_html"
PARENT_DIR="/var/www/$DOMAIN"
WP_OWNER="www-data"
WP_GROUP="www-data"
sudo chown -R $WP_OWNER:$WP_GROUP $WP_ROOT && sudo chown $WP_OWNER:$WP_GROUP $PARENT_DIR && sudo find $WP_ROOT -type d -exec chmod 755 {} \; && sudo find $WP_ROOT -type f -exec chmod 644 {} \; && sudo chmod +x /var/www
C. Cấu hình Caddy
1. Sửa file Caddyfile
sudo nano /etc/caddy/Caddyfile
2. Nhập thêm nội dung vào cuối file
Nếu như lần đầu chúng ta xóa hết nội dung cũ, thì lần thứ hai chúng ta chỉ bổ sung thêm nội dung cho file Caddyfile. Nhớ thay example.com bằng tên miền thứ hai của bạn (có 5 vị trí cần thay thế).
# 1. Chuyen huong www ve non-www
www.example.com {
redir https://example.com{uri} permanent
}
# 2. Cau hinh chinh
example.com {
root * /var/www/example.com/public_html
encode zstd gzip
# --- Cai tien 1: Log: De sua loi khi can ---
log {
output file /var/www/example.com/logs/access.log {
roll_size 10mb
roll_keep 10
}
}
# PHP FastCGI
php_fastcgi unix//run/php/php8.3-fpm.sock
# File Server
file_server
# Tang gioi han upload
request_body {
max_size 50MB
}
# --- Cai tien 2: SECURITY HEADERS (bao mat trinh duyet) ---
header {
# chong lai clickjacking (nguoi khac nhung web cua ban vao iframe)
X-Frame-Options "SAMEORIGIN"
# chong lai MIME sniffing
X-Content-Type-Options "nosniff"
# bao ma XSS co ban
X-XSS-Protection "1; mode=block"
# Ep trinh duyet chi dung HTTPS (HSTS), cai nay la tuy chon
# Mac dinh tat, muon bat thi bo dau # phia truoc Strict-Transport-Security...
# Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
}
# --- Cai tien 3: Cache nang cao ---
# Nhom 1: CSS va JS (Cache 1 tuan - 604800s)
# Danh cho truong hop hay sua giao dien, code
@code_assets {
file
path *.css *.js
}
header @code_assets Cache-Control "public, max-age=604800"
# Nhom 2: Image, Font, Icon (Cache 1 nam - 31536000s)
# Nhung file nay rat it khi thay doi noi dung, nen de lau toi da
@media_assets {
file
path *.ico *.gif *.jpg *.jpeg *.png *.svg *.woff *.woff2 *.webp
}
header @media_assets Cache-Control "public, max-age=31536000"
# --- Cai tien 4: chan file mo rong (bao mat file nhay cam) ---
@forbidden {
# chan thuc thi PHP o noi khong can thiet
path /wp-content/uploads/*.php
path /wp-includes/*.php
# chan file cau hinh & file ma nguon he thong
path /wp-config.php
path /.htaccess
path /.git
path /.env
path *.sql
path *.bak
}
respond @forbidden 404
}
Nhấn tổ hợp phím Ctrl + O rồi Enter để lưu, nhấn tổ hợp phím Ctrl + X để thoát.
3. Khởi động lại Caddy
Nhớ khởi động lại, nếu không thì các cài đặt không được áp dụng, và bạn cũng không cài được WordPress
sudo systemctl reload caddy
4. Cài WordPress
Truy cập tên miền của bạn rồi cài như hướng dẫn ở bài đầu, chỉ khác là lần này sẽ là các tên database, user và pass mới.
–
Thành công:
5. Bảo vệ wp-config.php
Nhớ thay example.com bằng tên miền thứ hai của bạn.
WP_CONFIG="/var/www/example.com/public_html/wp-config.php"
if [ -f "$WP_CONFIG" ]; then
sudo chmod 640 $WP_CONFIG
fi
