Ultimate Multisite 101
Ultimate Multisite là một plugin WordPress Multisite cho phép bạn cung cấp dịch vụ WaaS (Websites as a Service - Website dưới dạng Dịch vụ) cho khách hàng. Trước khi đi sâu tìm hiểu cách Ultimate Multisite có thể hỗ trợ doanh nghiệp và khách hàng của bạn, chúng ta cần nắm được một số kiến thức nền tảng.
WordPress Multisite
Hầu hết chúng ta đều quen thuộc với cách cài đặt WordPress thông thường. Bạn có thể tạo trang web thông qua bảng điều khiển của nhà cung cấp hosting hoặc, nếu muốn thử thách hơn, tự thiết lập máy chủ web và cơ sở dữ liệu mới, tải các file core về và bắt đầu quá trình cài đặt.
Cách này hoạt động tốt với hàng triệu trang WordPress trên toàn thế giới, nhưng từ góc nhìn của một agency hoặc nhà cung cấp hosting, hãy cùng bàn về vấn đề số lượng.
Việc tạo một trang WordPress hay thậm chí cả trăm trang qua bảng điều khiển tự động khá đơn giản, nhưng vấn đề bắt đầu xuất hiện khi phải quản lý các trang này. Nếu không quản lý, bạn sẽ trở thành mục tiêu hàng đầu cho malware. Còn nếu quản lý thì đòi hỏi nhiều công sức và nguồn lực. Dù có các công cụ bên ngoài và plugin hỗ trợ việc quản trị WordPress, nhưng việc khách hàng vẫn có quyền truy cập quản trị đồng nghĩa với việc mọi nỗ lực đó có thể dễ dàng bị vô hiệu hóa.
Trong core của mình, WordPress cung cấp một tính năng có tên đơn giản là 'Multisite', ra đời từ năm 2010 cùng với WordPress 3.0. Kể từ đó, tính năng này đã trải qua nhiều lần cập nhật để bổ sung tính năng mới và tăng cường bảo mật.
Về cơ bản, WordPress multisite có thể hiểu như sau: Một trường đại học duy trì một bản cài đặt WordPress duy nhất, nhưng mỗi khoa lại có trang WordPress riêng của mình.
Để hiểu rõ hơn, hãy cùng tìm hiểu một số thuật ngữ cơ bản không chỉ có trong tài liệu Ultimate Multisite mà còn được sử dụng rộng rãi trong cộng đồng WordPress.
Mạng lưới (Network)
Trong WordPress, mạng multisite là nơi nhiều subsite có thể được quản lý từ một dashboard duy nhất. Mặc dù cách tạo mạng multisite khác nhau tùy theo nhà cung cấp hosting, kết quả cuối cùng thường là một vài directive bổ sung trong file wp-config.php để WordPress biết rằng nó đang hoạt động ở chế độ đặc biệt này.
Có một số điểm khác biệt rõ rệt giữa mạng multisite và cài đặt WordPress độc lập mà chúng ta sẽ thảo luận ngắn gọn.
Subdomain và Subdirectory
Một trong những quyết định đầu tiên bạn cần đưa ra là cài đặt multisite sẽ hoạt động với subdirectory hay subdomain. Ultimate Multisite hoạt động tốt với cả hai lựa chọn, nhưng có một số khác biệt về kiến trúc giữa hai cấu hình này.
Với cấu hình subdirectory, các site trong mạng sẽ kế thừa đường dẫn dựa trên tên miền chính. Ví dụ, một site có tên 'site1' sẽ có URL đầy đủ là https://domain.com/site1. Với cấu hình subdomain, site sẽ có subdomain riêng được tạo từ tên miền chính. Vì vậy, site có tên 'site1' sẽ có URL đầy đủ là https://site1.domain.com/.
Cả hai lựa chọn đều hoàn toàn hợp lệ, việc sử dụng subdomain có một số ưu điểm nhưng cũng đòi hỏi nhiều suy nghĩ và lập kế hoạch hơn về kiến trúc.
Về DNS, việc sử dụng subdirectory khá đơn giản. Vì các site trong mạng chỉ là các đường dẫn con của đường dẫn gốc, chỉ cần một bản ghi tên miền duy nhất cho tên miền chính. Với subdomain, thách thức phức tạp hơn một chút, đòi hỏi phải có bản ghi CNAME riêng cho từng site hoặc một bản ghi wildcard (*) trong DNS.
Một vấn đề cần cân nhắc nữa là SSL và việc cấp phát cũng như sử dụng chứng chỉ SSL. Với cấu hình subdirectory, có thể sử dụng một chứng chỉ tên miền đơn vì các site trong mạng chỉ là các đường dẫn của tên miền chính. Do đó, chứng chỉ cho domain.com sẽ cung cấp SSL đầy đủ cho https://domain.com/site1, https://domain.com/site2, v.v.
Với cấu hình subdomain, việc sử dụng chứng chỉ SSL wildcard là một trong những lựa chọn phổ biến nhất. Loại chứng chỉ SSL này cung cấp mã hóa cho tên miền và các subdomain của nó. Vì vậy, chứng chỉ SSL wildcard sẽ cung cấp mã hóa cho https://site1.domain.com, https://site2.domain.com và cả https://domain.com.
Mặc dù có các lựa chọn khác, chúng thường bị giới hạn về phạm vi và ứng dụng, đồng thời đòi hỏi cấu hình và cân nhắc thêm về tính phù hợp.
Plugin và Theme
WordPress cho đi thì cũng lấy lại, ít nhất là từ góc nhìn của khách hàng. Trong cài đặt WordPress độc lập, nếu quản trị viên site cài đặt một plugin xấu hoặc không cập nhật trang web, nạn nhân và người chịu hậu quả duy nhất chính là họ. Tuy nhiên, khi quản trị viên site cài đặt một plugin xấu trên cài đặt multisite, mọi site trong mạng đều trở thành nạn nhân.
Vì lý do này, khi được cấu hình là multisite, WordPress loại bỏ quyền cài đặt plugin và theme của quản trị viên site và chuyển quyền này cho quản trị viên mạng hoặc vai trò 'super admin' mới được tạo. Vai trò đặc quyền này sau đó có thể quyết định có cho phép quản trị viên của các site trong mạng xem hoặc truy cập menu plugin trong dashboard của họ hay không, và nếu có, liệu các quyền đó có bao gồm việc kích hoạt hoặc vô hiệu hóa plugin hay không.
Ở mức độ này, quản trị viên mạng chịu trách nhiệm cài đặt plugin và theme vào mạng và ủy quyền sử dụng các plugin và theme này cho các site trong mạng. Quản trị viên site không thể cài đặt plugin và theme hoặc truy cập plugin và theme không được gán cho site của họ.
Người dùng và Quản trị viên
Trong WordPress Multisite, tất cả các site trong mạng chia sẻ cùng một cơ sở dữ liệu và do đó chia sẻ cùng người dùng, vai trò và quyền hạn. Cách hiểu phù hợp nhất là tất cả người dùng đều là thành viên của mạng chứ không phải của một site cụ thể.
Với sự hiểu biết này, có thể không mong muốn cho phép tạo người dùng và vì lý do này, WordPress Multisite loại bỏ quyền này của quản trị viên site và chuyển cho quản trị viên mạng. Đến lượt mình, quản trị viên mạng có thể ủy quyền cần thiết cho quản trị viên site để cho phép họ tạo tài khoản người dùng cho site của mình.
Nhắc lại điều trên, mặc dù các tài khoản người dùng có vẻ như liên quan đến site nhưng thực tế chúng được phân bổ cho mạng và do đó phải là duy nhất trong toàn mạng. Có thể có trường hợp tên người dùng không khả dụng để đăng ký vì lý do này.
Mặc dù không phải là khái niệm xa lạ trong các hệ thống doanh nghiệp, việc đăng ký và xác thực người dùng từ một nguồn duy nhất này thường là khái niệm khó hiểu đối với những người quen với cài đặt WordPress độc lập, nơi việc quản lý người dùng đơn giản hơn nhiều.
Media
Trong khi các site trong mạng chia sẻ một cơ sở dữ liệu duy nhất trong WordPress Multisite, chúng duy trì các đường dẫn riêng biệt trên hệ thống file cho các file media.
Vị trí WordPress chuẩn (wp-content/uploads) vẫn được giữ nguyên; tuy nhiên, đường dẫn của nó được thay đổi để phản ánh ID duy nhất của site trong mạng. Do đó, các file media cho một site trong mạng sẽ xuất hiện dưới dạng wp-contents/uploads/site/[id].
Permalink
Chúng ta đã đề cập trước đó rằng có những ưu điểm rõ rệt của cấu hình subdomain so với subdirectory và đây chính là điểm khác biệt: đường dẫn.
Trong cấu hình subdirectory, site chính (site đầu tiên được tạo khi thiết lập mạng) và các subsite trong mạng phải chia sẻ cùng đường dẫn từ tên miền. Điều này có thể gây ra nhiều xung đột.
Đối với bài viết, một đường dẫn bắt buộc /blog/ được thêm vào site chính để tránh xung đột với các site trong mạng. Điều này có nghĩa là các permalink đẹp như 'Post name' sẽ được hiển thị dưới dạng domain.name/blog/post-name/
Trong cấu hình subdomain, hành động này không cần thiết vì mỗi site trong mạng được hưởng lợi từ việc tách biệt tên miền hoàn toàn và do đó không cần dựa vào một đường dẫn duy nhất. Thay vào đó, chúng duy trì các đường dẫn riêng biệt dựa trên subdomain của mình.