Tình cờ đọc được 1 bài viết về Docker SQLite WordPress của 1 tác giả người Trung Quốc, khá là thích, nên viết thành 1 bài giới thiệu và hướng dẫn cài đặt cho bạn nào quan tâm
Mình quan điểm dùng SQLite là bạn muốn tiết kiệm RAM, chạy trên các hệ thống 256-512MB RAM, cài trên docker nó không tối ưu cho ý tưởng này, nếu thích bạn có thể chạy qua docker, cài vào 1 phát xong luôn
Ở bài này mình cài đặt qua bản rút gọn của LCMP Minimal, sử dụng SQLite làm database, chủ yếu chỉ để chạy WordPress trên các VPS < 512 RAM, 1 vCore, cấu hình tùy chỉnh sẽ đơn giản hơn, trên docker mỗi lần cấu hình thêm sửa cái gì, google các lệnh ốm người luôn
Sử dụng thực tế thì mình thấy không có vấn đề gì với hiệu năng của SQLite, có lẽ trừ trường hợp trang của bạn có hàng triệu comment, vài chục ngàn bài viết, số lượng comment liên tục, thì hãy lo lắng hiệu năng có vấn đề, còn ở quy mô nhỏ hơn, tầm ngàn bài viết, SQLite cân thoải mái, thực tế lúc cài đặt nhiều sản phẩm khác nhau, mình có thấy vài người dùng SQLite làm database, dữ liệu lên tới vài chục GB, họ nói vẫn chạy phà phà 😀 mình cũng có thử chuyển hết bài viết, comment hiện tại trên thèng bibica.net sang bản SQLite này, thì thấy database dùng cỡ …. 10 MB
Ưu điểm:
- Không cần cài MySQL / MariaDB làm database, nên ăn tài nguyên hệ thống ít hơn, hạn chế các lỗi liên quan khi thiếu RAM, sập database ….
- Backup và restore cực kì đơn giản, chỉ cần copy nguyên thư mục gốc về, upload sang VPS mới là xong
Khuyết:
- Cấu hình thường khá phức tạp, có điều các tác giả viết plugin xử lý cả rồi, người dùng cuối down về chạy là được
- Plugin nào đó liên quan tới database chạy sẽ bị lỗi (Simply Static chẳng hạn)
- Hiệu năng có thể bị suy giảm ở các trang có lượng bài viết, bán hàng hay có lượng tương tác comment cực nhiều
Do đây là phiên bản rất tối giản, mình nghĩ nên cài trên Debian 11 là hợp lý nhất
Cấu hình VPS UpCloud – Developer plans – €4.5/mo
- OS Debian GNU/Linux 11 (Bullseye)
- Caddy v2.8.4
- PHP 7.4.33
- CPU: 1
- RAM: 1 GB
- HDD: 20 GB
- Băng thông: 1 TB
- Location: Singapore
Cài đặt LCMP Minimal (SQLite)
- 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 (SQLite)
sudo wget raw.githubusercontent.com/bibicadotnet/LCMP-Minimal/main/setup_sqlite.sh -O server.sh && sudo chmod +x server.sh && sudo ./server.sh
Cài đặt WordPress
Demo trên domain sqlite.bibica.net
, thay sqlite.bibica.net
bằng domain của bạn ở các đoạn code bên dưới
- Trỏ DNS về IP của VPS
1. Tạo file cấu hình Caddy WordPress
nano /etc/caddy/conf.d/sqlite.bibica.net.conf
- Điền vào nội dung bên dưới
www.sqlite.bibica.net { redir https://sqlite.bibica.net{uri} } sqlite.bibica.net { # Set this path to your site's directory. root * /var/www/sqlite.bibica.net/htdocs # ssl cloudflare # tls /etc/ssl/sqlite.bibica.net.pem /etc/ssl/sqlite.bibica.net.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 } } import wordpress_security }
Ctrl+O -> Enter -> Ctrl+X để save và exit.
- Khởi động lại Caddy
systemctl restart caddy
2. Cài đặt Wordpress
Thay sqlite.bibica.net
bằng domain của bạn ở các đoạn code bên dưới
mkdir -p /var/www/sqlite.bibica.net/htdocs cd /var/www/sqlite.bibica.net/htdocs wp core download --allow-root wget --no-check-certificate https://raw.githubusercontent.com/aaemnnosttv/wp-sqlite-db/master/src/db.php -O /var/www/sqlite.bibica.net/htdocs/wp-content/db.php mv /var/www/sqlite.bibica.net/htdocs/wp-config-sample.php /var/www/sqlite.bibica.net/htdocs/wp-config.php chown -R caddy:caddy /var/www/sqlite.bibica.net/htdocs find . -type d -exec chmod 755 {} \; find . -type f -exec chmod 644 {} \;
Lúc này bạn có thể gõ domain sqlite.bibica.net
vào trình duyệt để cài đặt tài khoản admin
Mặc định lúc này database của WordPress sẽ nằm trong thư mục /wp-content/database
Speedtest kiểm tra cơ bản
Để ổn định các thứ, mình sẽ reboot lại VPS 1 phát rồi kiểm tra vài bài test cơ bản
Do không dùng MySQL / MariaDB làm database, cài đặt xong WordPress chỉ dùng ~150 MB RAM
Chạy thử bài test 100 kết nối mỗi giây từ loader.io
Hiệu năng chịu tải tương tự như khi dùng MariaDB làm database, tốc độ trung bình ~ 6s
Mình có thử backup toàn bộ thèng bibica.net, thử nghiệm nhanh trên core của WordPress, các phần cơ bản chạy cực mượt, xem bài ở tình huống không cache gần như tức thời, hơi bất ngờ vì trên MariaDB mình phải tinh chỉnh lại khá nhiều thông số thì mới đạt tốc độ cài đặt mặc định của SQLite
Đôi vấn đề gặp phải là nếu bạn dùng 1 plugin nào đó cần kết nối vào database mà code hơi ngu như phần Archives, kiểu nó load các bài theo năm tháng, tính tổng các bài trong nằm … dữ liệu load ra hơi chậm 1 tẹo, phần này thì đơn giản kiếm plugin khác chạy là được, không có vấn đề gì đặc biệt
Kết luận
Trước đây thì mình khá rén hiệu năng của SQLite, mà sau khi dùng Artalk làm phần comment cho thèng bibica.net, chạy gần 1 năm nay, không gặp bất cứ vấn đề gì liên quan tới hiệu năng, nói chính xác hơn mình nghĩ khó có trang blog nào có thể chạm tới kịch trần giới hạn của SQLite, vì blog nó rất cơ bản, đa phần là xem bài, chưa kể phần lớn chúng ta sẽ cache qua Cloudflare hoặc 1 plugin bất kì thì thoải mái cả
Mình nghĩ SQLite làm database thoải mái, thậm chí là quá thừa ở phần lớn các nhu cầu 😀 tất nhiên thì vẫn chỉ nên dùng nó trên các trang blog cá nhân, còn làm cho khách, hay cơm gạo thì cứ chạy MySQL / MariaDB như thông thường cho nhàn, đỡ tốn thời gian đi xử lý các lỗi (nếu có)
Tổng thể hài lòng với hiệu năng của SQLite, có lẽ 1 thời gian nữa, khi WordPress chính thức hỗ trợ SQLite, mình sẽ chuyển sang dùng cho nhàn 😀
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ị!