Đây là phiên bản cài đặt server tối giản, chủ yếu chỉ để chạy WordPress trên các VPS < 1 GB RAM, 1 vCore, nhưng vẫn đảm bảo tốc độ, chịu tải và độ mượt tốt cho thèng bibica.net (khi dùng cho các VPS nhiều vCore hoặc nhiều RAM hơn thì chỉ chỉnh sửa lại vài dòng cơ bản là đủ)
Lý do đầu tiên là mình mới biết tới Reinstall OS, tình cờ thấy bản Debian 12 chỉ dùng khoảng ~100 RAM khi vừa khởi tạo 😀 các OS khác chưa làm gì đã loanh quanh 150-200MB RAM, dùng Debian là đã tiết kiệm được 50-100MB RAM mà không cần phải làm gì rồi (muốn tiết kiệm hơn nữa thì có thể dùng Debian 11, chỉ dùng khoảng 60-70MB RAM khi vừa khởi tạo)
Tiếp theo mình chọn webserver Caddy, cấu hình domain rất ít, hỗ trợ sẵn SSL và HTTP/3, không phải tinh chỉnh gì cả, trên WordPress chạy ổn định và mượt mà 😀
PHP hiện tại dùng bản v7.4, vì các plugin đang có mặt ngoài trị trường, dùng PHP 8.2, đôi khi chạy lỗi, và mình không muốn mất thời gian cho mấy chuyện này, khi nào PHP 8.2 thông dụng thì đổi lại sau
Về hiệu năng, qua bài test loader.io, PHP 8.2 nhanh hơn khoảng 5% so với PHP 7.4, ở điều kiện 50 người cùng kết nối liên tục vào database, khi vài người truy cập thì gần như không có sự khác biệt
Để tối ưu về lượng RAM sử dụng MariaDB là sự lựa chọn dễ hiểu, nhưng chọn phiên bản nào thì hơi đắn đo, trong lúc google thì thấy AWS RDS cũng vừa cập nhập lên MariaDB 10.11, công ty tầm vóc thế giới, cần độ ổn định siêu cao cho khách hàng, họ còn tự tin lên hẳn 10.11, không có lý do gì người dùng cuối dùng bản cũ hơn =))
Sau khi bốc phét các kiểu 1 tràng ở trên, cấu hình mặc định LCMP minimal của thèng bibica.net như sau
- Debian 11/12
- Caddy v2.8.4
- PHP 7.4.33
- MariaDB 10.11.8
Cài đặt LCMP Minimal
Phần lớn đều dùng các thông số mặc định, chỉ thay đổi các thứ mà mình thấy thực sự có hiệu quả, khá tương đồng với bài cài đặt LCMP trước đây, ở bài cũ mình giải thích đầy đủ các câu lệnh cài đặt rồi, bạn nào thích có thể đọc qua, bài này mình chỉ đi ngắn gọn phần cài đặt, không giải thích thêm
- Cập nhập OS và khởi động lại VPS
sudo apt update && sudo apt upgrade -y && sudo reboot
- Cài đặt LCMP minimal (support x86_64, ARM64, IPv4)
sudo wget https://go.bibica.net/lcmp-minimal -O server.sh && sudo chmod +x server.sh && sudo ./server.sh
Cài đặt WordPress
1. Tạo file cấu hình Caddy WordPress
Thay example.com
bằng domain của bạn ở các đoạn code bên dưới
nano /etc/caddy/conf.d/example.com.conf
- Điền vào nội dung bên dưới
www.example.com { redir https://example.com{uri} } example.com { # Set this path to your site's directory. root * /var/www/example.com/htdocs # ssl cloudflare # tls /etc/ssl/example.com.pem /etc/ssl/example.com.key encode zstd gzip @disallowed { path /xmlrpc.php path /wp-content/uploads/*.php } rewrite @disallowed /index.php # Serve a PHP site through php-fpm php_fastcgi unix//run/php/php7.4-fpm.sock @static { file path *.css *.js *.ico *.woff *.woff2 } handle @static { header Cache-Control "public, max-age=31536000" } @static-img { file path *.gif *.jpg *.jpeg *.png *.svg *.webp *.avif } handle @static-img { header Cache-Control "public, max-age=31536000, immutable" } # Enable the static file server. file_server { precompressed zstd gzip index index.html } log { output file /var/log/caddy/ssl_access.log { roll_size 100mb roll_keep 3 roll_keep_for 7d } } }
Ctrl+O -> Enter -> Ctrl+X để save và exit.
- Khởi động lại Caddy
systemctl restart caddy
2. Cài đặt Wordpress
Thay example.com
bằng domain của bạn ở các đoạn code bên dưới
mkdir -p /var/www/example.com/htdocs cd /var/www/example.com/htdocs wp core download --allow-root wp core config --dbhost=localhost --dbname=wordpress_database_name_99999 --dbuser=wordpress_user_99999 --dbpass=password_pass_99999 --allow-root chown -R caddy:caddy /var/www/example.com/htdocs find . -type d -exec chmod 755 {} \; find . -type f -exec chmod 644 {} \;
Lúc này bạn có thể gõ domain example.com
vào trình duyệt để cài đặt tài khoản admin
3. Cài đặt Jetpack Photon (sử dụng trên domain api.example.com
)
Thay api.example.com
bằng domain của bạn ở các đoạn code bên dưới
nano /etc/caddy/conf.d/api.example.com.conf
- Điền vào nội dung bên dưới
api.example.com { # tls /etc/ssl/example.com.pem /etc/ssl/example.com.key handle_path /* { rewrite * /example.com/wp-content/uploads/{uri} reverse_proxy https://i0.wp.com { header_up Host {upstream_hostport} } } }
- Khởi động lại Caddy
systemctl restart caddy
Muốn tạo thêm trang khác thì chạy tuần tự lại các bước và tạo thêm database mới là được
# setup database db_pass_root="Thisisdbrootpassword" db_name="wordpress_database_name_new" db_user="wordpress_user_new" db_pass="password_pass_new" mysql -uroot -p${db_pass_root} -e "CREATE DATABASE ${db_name} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" mysql -uroot -p${db_pass_root} -e "GRANT ALL ON ${db_name}.* TO '${db_user}'@'localhost' IDENTIFIED BY '${db_pass}'"
VPS cấu hình cao
Mặc định cấu hình bản LCMP minimal dành cho các VPS < 1 GB RAM, 1 vCore, nếu bạn dùng trên VPS vCore nhiều hơn, RAM nhiều hơn, thì có thể sửa lại 1 chút
nano /etc/php/7.4/fpm/pool.d/www.conf
Sẽ thấy 2 dòng bên dưới
pm = dynamic pm.max_children = 6
- Đổi sang dùng
static
,pm.max_children
có thể set bằng hoặc x2 số lượng vCore đang có
pm = static pm.max_children = 4
Tiếp theo gõ tiếp
nano /etc/php/7.4/fpm/php.ini
Kéo xuống dưới sẽ thấy các thông tin liên quan tới Opcache cache
[opcache] opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=100000 opcache.max_wasted_percentage=10
- Trên WordPress, số lượng code PHP thường ít, để 128MB là đủ, bạn có thể quan sát qua các plugin như WP OPcache, nếu thấy dùng gần hết 100MB, VPS thừa RAM thì có thể tăng thêm
opcache.memory_consumption=256 opcache.interned_strings_buffer=16
- Chỉnh sửa xong thì cần reset lại PHP để các thay đổi có hiệu lực
systemctl restart php7.4-fpm
Trên VPS 4 vCore và 4GB RAM thường mình dùng cấu hình này, VPS 1 GB RAM thì dùng theo cài đặt mặc định
Speedtest kiểm tra cơ bản
Thử nghiệm trên VPS UpCloud – Developer plans – €4.5/mo chạy WordPress v6.6 mới nhất, theme mặc định, không dùng bất kì hình thức cache nào, domain sử dụng haproxy.tech
- OS Debian 11
- 1 CPU
- 1 GB RAM (849MB)
- 20 GB HDD
- Location: Singapore
Caddy hỗ trợ http/3 theo mặc định rất ổn định
Ở file cấu hình Caddy, mình ưu tiên nén các file tĩnh (.js .css) qua zstd, lý do là khi xem review, thấy mọi người khen zstd nén tốt hơn gzip một chút, không có nhiều ý nghĩa lắm
Thử nghiệm ở bài test loader.io khá cục súc với 100 kết nối liên tục mỗi giây, nó vẫn có thể hoàn thành bài test với tốc độ trung bình khoảng 6s, khá tương tự với Webinoly
Ưu và khuyết của LCMP minimal
LCMP minimal không khác gì so với phiên bản LCMP trước đây, chỉ đổi sang dùng Debian OS nên các câu lệnh, quản trị server quen thuộc, dùng ít RAM hơn, còn lại khá tương tự
Nếu bạn dùng bản LCMP minimal này thì mình đề xuất dùng thêm
- SSL từ Cloudflare
- Releem cấu hình thêm cho MySQL
- Monitor service PHP, Mysql, Nginx giúp tự khởi động lại dịch vụ nếu chẳng may lỗi xảy ra
Ưu và khuyết của LCMP minimal gần như là cùng song hành, do chỉ cài đặt các thứ tối thiểu, nên nó vô cùng thiếu tính năng, nếu không muốn nói là không có bất kì tính năng nào cả, muốn gì phải tự cài vào
Bù lại cho chuyện này, nó sẽ rất hiếm lỗi, cài đặt xong thì gần như không cần nhìn tới server nữa
Sau khi cài đặt đầy đủ các thứ như trên thì thèng bibica.net dùng loanh quanh ~700MB RAM ở VPS 4GB RAM, hoạt động nặng nhất là khi Simply Static Pro tạo file tĩnh và Duplicator Pro tạo backup trang, lượng RAM sử dụng có thể lên tới ~ 950MB
Trên VPS 1 GB RAM thì thường dùng khoảng 500MB, hoạt động nặng nhất là khi Simply Static Pro tạo file tĩnh và Duplicator Pro tạo backup trang, lượng RAM sử dụng loanh quanh ~ 550MB
MySQL sau khi được Releem tinh chỉnh trong 5-7 ngày, phần lớn sẽ kéo được MySQL Latency xuống dưới 2ms, cá nhân khá hài lòng với con số này
Sau 15-30 ngày, khi mọi cấu hình liên quan tới database ổn định hoàn toàn, bạn có thể tắt Releem đi cho nhẹ, đỡ các thao tác lưu check log ….
Tổng kết
Đây là bản cài đặt server mình khá hài lòng và đang dùng cho thèng bibica.net 😀 do chỉ cài đặt các thứ cốt lõi, nên thời gian cài đặt rất nhanh, khoảng 2,3 phút, cấu hình siêu đơn giản, nhẹ, mượt, đủ dùng trên các trang chạy WordPress dạng blog cơ bản 😀
Khá tự tin giới thiệu mọi người sử dụng bản cài đặt này 😀
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!