Thiết kế một bash script để quản lý cài đặt nhiều trang WordPress trên một VPS trên nền Caddy Web Server: Một số đề xuất chức năng & kiểm soát chất lượng

CLI dòng lệnh thực hiện trên terminal VPS, qua web như noVNC hoặc qua phần mềm chuyên như PuTTY.

Đối tượng: người dùng VPS, có hiểu biết kỹ thuật cơ bản nhưng không quá chuyên sâu về kỹ thuật.

Tính năng:

  • Cài WordPress nhanh trên Caddy.
  • Cài được nhiều trang WordPress trên cùng VPS.
  • Tùy chọn có-www hoặc không-www trong địa chỉ web (chứ không chỉ mặc định là không-www).
  • Xóa một trang WordPress, phải xóa cả thư mục web và database.
  • Thêm người dùng sFTP, tùy chọn quản lý toàn bộ website trên VPS (tiện lợi nếu người dùng là chủ toàn bộ các trang) hoặc chỉ khoanh vùng trong một website cụ thể (bảo mật nếu người dùng phân quyền cho ai đó khác chỉ một trang cụ thể mà họ có quyền).
  • Xóa người dùng sFTP.

Mục tiêu:

  • Dễ dùng, hạn chế hiểu lầm, hạn chế lỗi đầu vào của người dùng (ví dụ nhập địa chỉ trang khi cài đặt là https://example.com thì phải hiểu được là example.com).
  • Dễ điều chỉnh nếu có sơ suất (ví dụ cài dạng www.example.com nhưng sau đó muốn chuyển về dạng example.com).
  • Ngăn chặn tuyệt đối các hành động sơ suất có tính chất phá hủy dữ liệu không thể khôi phục được, ví dụ xóa nhầm trang, xóa toàn bộ dữ liệu của cả VPS.
  • Luôn kèm cảnh bảo rõ ràng để người dùng hiểu hành động, nhất là các tác vụ liên quan đến hành vi xóa. Luôn đề xuất backup dữ liệu & nhắc nhở hỏi lại trước yêu cầu xóa dữ liệu.
  • Các thông báo hỗ trợ cần rõ ràng, dễ hiểu, sử dụng màu chữ linh hoạt để người dùng dễ nhận biết.

Các vấn đề cần lưu ý:

  • Phiên bản PHP người dùng muốn có thể khác phiên bản mặc định chương trình cài => Có cần phát triển tính năng tùy chọn phiên bản PHP mà người dùng muốn?
  • Phải làm gì khi người dùng muốn chuyển phiên bản PHP hiện tại đang dùng sang phiên bản khác?
  • MariaDB đang là mặc định, liệu có thể sử dụng MySQL?
  • Vấn đề liên quan đến duy trì chất lượng của bản cài khi Caddy Web Server cập nhật. PHP cập nhật. Khi có các cập nhật quan trọng, hoặc khi người dùng muốn cập nhật thì bash script xử lý thế nào?

Hiệu suất:

  • Không phải vấn đề trọng tâm của bash script này, nó chủ yếu hướng đến tính đơn giản khi cài đặt & giảm mức độ phụ thuộc cao vào các panel đồ họa hoặc các CLI khó dùng.
  • Chỉ có các cơ chế hiệu suất cơ bản mặc định liên quan đến cache file tĩnh thông qua Caddyfile.
  • Cơ chế đảm bảo hiệu suất sau này phụ thuộc vào nhu cầu người dùng nhưng hướng đến các công cụ đơn giản đủ mạnh như các plugin Cache Enabler, hoặc Cache Rules của Cloudflare.
  • Xem xét một plugin tối ưu ảnh mạnh và miễn phí như nội dung hỗ trợ để người dùng tự triển khai, ví dụ plugin EWWW.
  • Có thể triển khai thêm OxiPNG, một công cụ dòng lệnh mạnh để tối ưu ảnh PNG không mất chất lượng, tuy nhiên đây không phải trọng tâm, và cũng không phải là một phần của chương trình => Có thể là yếu tố phụ trợ thêm cho người dùng có nhu cầu.
  • Xem xét thêm cài đặt cho Redis cache, vốn khá dễ cài (nhưng cấu hình chuẩn cũng không quá dễ => cần tìm hiểu kỹ). Redis cache có thể rất hữu ích trên các trang có mức độ động cao (truy cập lớn, thường cập nhật nội dung, hoặc có giỏ hàng).

Triển khai:

  • Tập trung vào các tính năng lõi, cơ bản trước;
  • Đảm bảo hoạt động ổn định, kiểm soát lỗi chặt;
  • Các tính năng phụ trợ như tối ưu ảnh, redis cache, cache enabler, cache rules chỉ triển khai khi chức năng lõi được đảm bảo;
  • Xem xét các vấn đề bảo mật tiềm ẩn liên quan đến VPS, Caddy Web Server, WordPress. Đây phải là vấn đề trọng tâm cần quan tâm sau khi tính năng lõi hoàn thiện.

Kiểm soát chất lượng:

  • Kiểm tra thử trên nhiều môi trường VPS;
  • Kiểm tra thử trên nhiều phiên bản PHP;
  • Kiểm tra thử trên các phiên bản Ubuntu LTS chính (2 bản gần nhất);
  • Kiểm thử với lỗi demo đa dạng, với giả định là người dùng có thể thao tác sai nghiêm trọng (không giả định là họ làm chuẩn ngay từ đầu);
  • Kiểm thử các nhiệm vụ quan trọng: backup, khôi phục dữ liệu.

Viết một bình luận