Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "CNTT" các nội dung bạn quan tâm.

16. Quản lý nhiều website trên cùng một server

ICT

1. Vì sao quản lý nhiều website dễ trở thành “thảm họa”?

Ban đầu, server chỉ có:

  • 1 website

  • 1 domain

  • 1 cấu hình

Nhưng theo thời gian:

  • Thêm website mới

  • Thêm subdomain

  • Thêm môi trường staging

  • Thêm CMS khác nhau

Nếu không có cách tổ chức ngay từ đầu, hệ thống rất dễ rơi vào tình trạng:

  • Cấu hình chồng chéo

  • Nhầm domain – nhầm thư mục

  • Debug sai site

  • Sửa site này làm ảnh hưởng site khác

Bài này giúp bạn quản lý nhiều website mà không biến server thành mớ hỗn độn.


2. Nguyên tắc quản lý nhiều website trên một server

Trong loạt bài này, chúng ta áp dụng các nguyên tắc:

  1. Mỗi website là một đơn vị độc lập

  2. Không chia sẻ thư mục source

  3. Không chia sẻ database

  4. Có log riêng

  5. Có quy ước đặt tên thống nhất

Nguyên tắc:

Sự cố của một website không được ảnh hưởng website khác.


3. Tổ chức thư mục cho nhiều website

3.1. Cấu trúc thư mục khuyến nghị

Mỗi website:

  • Có thư mục riêng

  • Không dùng chung


3.2. Quy ước đặt tên thư mục

  • Dùng chữ thường

  • Không dấu, không khoảng trắng

  • Phản ánh đúng domain hoặc vai trò

Ví dụ:

  • congvan

  • cntt-it

  • site1-staging


4. Tổ chức cấu hình Nginx cho nhiều website

4.1. Mỗi website → một file cấu hình

Không gộp nhiều site vào một file.

Chỉ làm trong tình huống đặc biệt và bạn biết rõ đang làm gì cũng như có kinh nghiệm về việc này:


4.2. Kích hoạt có chọn lọc

Site nào chưa dùng:

  • Không enable

  • Không ảnh hưởng hệ thống


5. Quản lý log theo từng website

5.1. Log riêng là bắt buộc

Trong mỗi server block:

Lợi ích:

  • Debug nhanh

  • Không lẫn log giữa các site

  • Phân tích truy cập dễ dàng


5.2. Log rotation

Ubuntu có sẵn logrotate cho Nginx, nhưng cần:

  • Kiểm tra định kỳ

  • Đảm bảo không làm đầy disk


6. Quản lý domain và subdomain

6.1. Một domain – nhiều website

Ví dụ:

  • cntt.it

  • blog.cntt.it

  • staging.cntt.it

Mỗi domain/subdomain:

  • Là một virtual host riêng

  • Không dùng chung cấu hình


6.2. Tránh cấu hình wildcard thiếu kiểm soát

Không nên dùng:

server_name *.domain.com;

trong production nếu không có lý do rõ ràng.


7. Quản lý database theo website

Nguyên tắc:

  • Mỗi website → một database

  • Mỗi database → một user riêng

Không dùng chung database cho nhiều site.

Điều này giúp:

  • Backup riêng

  • Restore riêng

  • Không lộ dữ liệu chéo


8. Quản lý quyền truy cập theo website

  • Web server (www-data) chỉ có quyền cần thiết

  • Không dùng chung user hệ thống cho mọi site

  • Có thể dùng group để quản lý nhiều site cùng nhóm

Nguyên tắc:

Phân quyền theo website, không theo tiện lợi.


9. Quản lý môi trường staging / test

Khi có staging:

  • Tách domain rõ ràng:

    • staging.domain.com

  • Tách thư mục

  • Tách database

  • Có thể tắt index trên search engine

Không dùng staging chung với live.


10. Checklist quản lý nhiều website an toàn

  •  Thư mục riêng cho từng site

  •  File cấu hình Nginx riêng

  •  Log riêng

  •  Database riêng

  •  Quy ước đặt tên thống nhất

  •  Không chia sẻ tài nguyên không cần thiết


11. Những sai lầm phổ biến khi quản lý nhiều website

  • Dùng chung thư mục cho nhiều site

  • Dùng chung database

  • Không có log riêng

  • Copy cấu hình nhưng quên đổi tên

Những lỗi này:

Không gây sự cố ngay, nhưng gây hậu quả lớn khi hệ thống lớn lên.


12. Bài tiếp theo

Trong Bài 17, chúng ta sẽ bước sang phần tối ưu nền tảng web server:

Tối ưu Nginx cơ bản: worker, buffer, gzip

Bài này sẽ giúp:

  • Nginx hoạt động ổn định hơn

  • Không cần tối ưu phức tạp

  • Phù hợp production