Virtual Host là gì? Qui trình tạo vhost (website) trên Hosting & VPS

Trong bài này, chúng ta sẽ tìm hiểu khái niệm vhost- Virtual Host là gì, cũng như phương thức tạo vhost trên máy chủ nói chung, và hosting, vps nói riêng.

vhost- Virtual Host là gì

Khi tạo website trên máy chủ, tức là ta tạo vhost/ Virtual Host trên máy chủ đó, ứng với một domain nhất định mà chúng ta muốn dùng với website.

Đây là bài tiếp theo trong series Hướng dẫn Làm web WordPress chuyên nghiệp. Tìm hiểu về Virtual Hosting và Tạo vHost là bài tiếp theo sau khi bạn đã trỏ domain thành công ở bài trước:

Trỏ domain về Hosting/ VPS theo 3 cách dễ dàng nhất

Trước khi nói chi tiết về vhost, chúng ta cũng nên tìm hiểu các bước để chạy một website trên máy chủ.

Qui trình để chạy một website trên máy chủ

Để Website chạy được trên máy chủ (Servers), ta cần máy chủ sẵn sàng các phần mềm sau:

  • Hệ điều hành trên máy chủ web: có thể là Windows (Windows Server) hoặc Linux, nhưng phổ biến nhất vẫn là Linux (CentOS, Ubuntu, Debian,…).
  • Phần mềm vận hành Website trên máy chủ, gọi là Web Sever: ví dụ như Apache, Nginx hay IIS, các phần mềm này vận hành các phương thức để chạy nhiều website ứng với nhiều domain khác nhau trên cùng máy chủ – phương thức này gọi là Virtual Hosting.
  • Các phần mềm mã nguồn của Website và database: ví dụ với mã nguồn WordPress, ta cần sử dụng bộ đôi phần mềm PHP & MySQL hoặc PHP & MariaDB.

Architecture 1 vhost, virtual host, virtual host là gì, tạo vhost

Vậy:

Virtual Host là gì?

Virtual Host hay Virtual Hosting là một phương thức cấu hình server giúp chạy nhiều website ứng với domain khác nhau trên cùng một máy chủ.

Virtual Host được vận hành bởi các phần mềm chuyên dụng gọi là web server như Nginx/ Apache/ IIS, LiteSpeed, ….

Khi nói tạo website trên hosting, ta còn gọi là tạo vhost để hoạt động với một domain cụ thể.

vhost đối với một domain bao gồm một thư mục để chứa code website ứng với domain đó, và các cấu hình web server riêng (Nginx/ Apache Configuration) để vận hành hoạt động của website.

Ví dụ trên Hosting AZDIGI, dùng LiteSpeed Web Server, khi thêm domain, mỗi domain sẽ có riêng thư mục chứa code và mặc định sử dụng cấu hình thiết lập trên file cấu hình chung web server (có phần mở rộng .conf).

Nếu muốn tùy chỉnh cấu hình server riêng cho mỗi website, ta sẽ tạo file cấu hình riêng là .htaccess:

vhost trên AZDIGI

Khi chúng ta trỏ một domain (ví dụ wpvui.com) về hosting (shared hosting hoặc vps) thì chúng ta mới trỏ về IP của máy chủ (server) nhưng trên máy chủ có thể chứa nhiều website ứng với nhiều domain khác nhau (wpvui.com, vuihocweb.com, wpbanquyen.com).

Nếu chúng ta chưa tạo vhost cho website ứng với domain đó (wpvui.com) thì vẫn chưa thể truy cập website từ domain.

Việc tạo vhost trên máy chủ (hosting/vps) thường gọi là thêm domain vào máy chủ.

Thị phần các web server phổ biến nhất

Như vậy để tạo vhost, ta cần cài phần mềm webserver lên hệ điều hành của máy chủ.

Việc chọn web server nào tùy thuộc vào loại mã nguồn web mà ta sử dụng. Ví dụ:

  • Các ngôn ngữ PHP, Python, Perl, Ruby sẽ chạy trên web server Apache và Nginx, mới hơn là LiteSpeed Web Server.
  • Các ngôn ngữ độc quyền của Microsoft (.NET) thì thường chạy trên IIS – web server độc quyền của họ.
  • Mã nguồn Java thì chạy trên Apache Tomcat.
  • Mã Javscript thì chạy trên Node.js (đóng vai trò Web Sever).

Vì sự thống trị của PHP trong thị phần mã nguồn web (WordPress CMS có đóng góp rất lớn với 43% thị phần) nên Apache và Nginx là 2 web server phổ biến nhất.

Bảng thống kê được thực hiện vào cuối tháng 4/2023:

Thị phần WebServer

Ngoài Apache và Nginx, để chạy website dùng ngôn ngữ PHP & MySQL chúng ta còn có web server nổi tiếng khác là LiteSpeed Web Server (LSWS), thực chất LiteSpeed Web Server là một phiên bản cải tiến từ Apache bởi công ty LiteSpeed Technologies và nó là phần mềm trả phí:

  • Hiện nay, vì LiteSpeed Web Server nhiều ưu điểm hơn, lại hoạt động tương tự Apache và tương thích ngược với các hệ thống cũ dùng Apache nên đa số các dịch vụ shared hosting đều sử dụng LiteSpeed Web Server thay vì Apache chính gốc.
  • Nginx mạnh mẽ và bảo mật hơn Apache, nhưng cấu hình phức tạp hơn, nên các dịch vụ shared hosting thông thường không dùng, chỉ phổ biến trên các dịch vụ VPS và những dịch vụ Managed Hosting cao cấp như WordPress VIP, Kinsta, Cloudways,…

Lưu ý rằng CloudFlare Server không thực sự là web server như các cái khác, mà nó là nền tảng công nghệ triển khai trên dịch vụ Hosting & CDN trả phí cảu CloudFlare, có thể họ cũng vận hành bằng các web server khác nhưng trang bị thêm các công nghệ riêng.

Tìm hiểu các Web Stack phổ biến

Hiện nay, chúng ta có các gói phần mềm – bao gồm hệ điều hành + web server + mã nguồn + database hoạt động cùng nhau để triển khai hệ thống vận hành website hoàn chỉnh – gọi là stack.

LAMP/ LEMP Stack là gì?

Đối với các website dùng ngôn ngữ lập trình PHP, Python hay Perl, ta có các hệ thống phổ biến là LAMP Stack và LEMP Stack, ứng với web server là Apache hoặc Nginx:

  • LAMP Stack: ám chỉ hệ thống vận hành gồm Linux + Apache + MariaDB (MySQL) và PHP-FPM (PHP)/ Python/ Perl
  • LEMP Stack: hệ thống Linux + Nginx (Engine-X) + MariaDB + PHP-FPM/ Python/ Perl

WordPress và nhiền CMS phổ biến như Drupal, Joomla,… viết bằng PHP nên khi cài đặt chúng ta cũng thường triển khai một trong 2 cái này, trừ trường hợp các Shared Hosting có hỗ trợ LiteSpeed Web Server.

Chữ E trong LEMP Stack đại diện cho Nginx thay vì chữ N vì phần mềm Nginx được phát âm là Engine-X.

Không biết anh  Mút có tham gia sáng lập dự án này không?

Musk love X

 

MEAN/ MERN Stack là gì?

Nginx, Apache và các stack LEMP stack, LAMP stack sử dụng phổ biến cho các website dùng mã nguồn PHP, Python và Perl, trong đó WordPress chạy PHP.

Còn với các website dùng các ngôn ngữ lập trình web khác thì có các stack khác.

Ví dụ với Website và Web Application lập trình bằng Javascript hiện nay, phổ biến dùng MEAN hoặc MERN stack, trong đó Node.js đóng vai trò tương tự như Nginx, Apache (dù thực tế bản chất có một số khác biệt):

MEAN Stack và MERN Stack

MEAN stack gói giải pháp vận hành website mã nguồn JS, bao gồm các phần mềm:

MERN stack, khác MEAN stack ở chỗ dùng React.js thay vì AngularJS/Angular.

Nếu thay React.js bằng đối thủ Vue.js thì ta cũng có một stack rất phổ biến khác MEVN stack (MongoDB – Express.js – Vue.js – Node.js)

Ngoài các stacks trên, chúng ta còn có một số web stack khác cũng khá phổ biến như:

  • JAMStack: JAM viết tắt của Javascript, API và Markup (Markup là static site generator như Jekyll, Hugo hoặc Next.js). JAMStack là giải pháp cho Headless CMS, WPVUI sẽ giới thiệu riêng về Headless CMS ở một bài viết khác.
  • WAMP/ XAMP Stack: đây là các phần mềm được đóng gói từ các stack (Apache – MySQL – PHP)quen thuộc với web server Apache, giúp bạn chạy website trên localhost.

Sự thật không phải lúc nào cũng cần triển khai Website trên dựa theo các Stack và không phải ngôn ngữ nào cũng có giải pháp Stack riêng.

Dù vậy LAMP/ LEMP và MERN/ MEAN đang được sử dụng phổ biến do dễ dàng triển khai và được hỗ trợ rất mạnh, và cũng bởi vì ngôn ngữ PHP, Python và Javascript đang chiếm thị phần rất lớn trong tổng số websites toàn cầu.

Tiếp theo, ta sẽ tìm hiểu qui trình tạo vhost (website) trong 2 trường hợp phổ biến nhất là tạo vhost trên hosting và tạo vhost trên máy chủ ảo VPS.

Tạo vhost trên VPS

Ở đây WPVUI đề cập đến việc chạy web mã nguồn PHP, Python, Perl, nên sẽ chọn LEMP/ LAMP stack.

Để chạy website trên VPS, ta cần làm các bước:

  1. Cài hệ điều hành (HĐH) Linux (CentOS/ Rocky Linux/ Alma Linux hoặc Ubuntu, Debian), HĐH thường được chọn cài ngay khi chúng ta chọn khởi tạo gói VPS muốn dùng.
  2. Cài LAMP Stack hoặc LEMP Stack lên HĐH.
  3. Tạo Website trên LAMP/ LEMP Stack: nói đúng thuật ngữ người ta gọi là tạo vhost
  4. Trỏ domain về VPS (và cài chứng chỉ bảo mật SSL nếu cần).
  5. Upload mã nguồn vào thư mục chứa code trên VPS (thường là public_html hoặc ten_mien.com), tạo database (MySQL/ MariaDB) rồi khai báo database với mã nguồn và bắt đầu truy cập vào web qua tên miền để thiết lập cấu hình hoàn chỉnh cho website.

Việc cài LEMP/ LAMP stack rồi tạo vhost cho website trên VPS khá phức tạp vì cần tạo các cấu hình server với các file lệnh Linux & Nginx configuration/ Apache configuration.

Do đó, với người dùng phổ thông, phương pháp tối ưu nhất là dùng các chương trình hỗ trợ cài đặt và quản lý VPS từ A-Z, gọi là các shellscript, điển hình như CentminMod, EasyEngine, Webinoly hay ở VN phổ biến là VPSSIM (VPS Simple), HocVPS, LarVPS.

LarVPS

Các chương trình shellscript kể trên sẽ cài đặt mọi thứ cho bạn tự động, ví dụ để tạo vhost cho một website, bạn chỉ cần nhập tên domain rồi để shellscript hoàn tất mọi thứ. Chưa kể chúng còn hỗ trợ các tính năng mở rộng như cài và quản lý WordPress, chứng chỉ SSL, bảo mật nâng cao,…

Ở bài sau, WPVUI sẽ hướng dẫn bạn cách cài LEMP Stack, tạo Virtual Host, cài SSL, WordPress rất dễ dàng với LarVPS – shellscript quản lý VPS số 1 VN hiện nay.

Tạo vhost trên Hosting

Hosting ở đây đề cập đến Shared Hosting, ví dụ như AZDIGI, vHost, Hawkhost, Stablehost hay A2Hosting, SiteGround… là các loại hosting được sử dụng nhiều nhất cho WordPress và mã nguồn PHP.

Không phức tạp như VPS, shared hosting thường có sẵn các phần mềm cài đặt & quản lý máy chủ trên giao diện đồ hoạ – trực quan, gọi là Control Panel như Direct-Admin (DA), Plesk, hay phổ biến nhất là cPanel.

Thông thường, mua shared hosting thì cPanel đã được cài đặt sẵn, nên việc tạo website (vhost) cực kỳ đơn giản.

Tạo vhost trên cPanel

Các tính năng như tạo database (MySQL), cài WordPress, SSL, các tính năng nâng cao khác,… đều được tích hợp sẵn và người dùng chỉ cần một vài click để cấu hình xong.

Tính năng tạo vhost trên Hosting còn được gọi là tính năng thêm domain vào hosting. Có 3 trường hợp:

  1. Khi bạn mua hosting, nếu có khai báo tên miền dùng cho hosting đó (primary domain) thì nhà cung cấp sẽ tạo luôn vhost cho primary domain, chúng ta không cần tạo vhost cho primary domain nữa.
  2. Nếu hosting cho phép dùng nhiều domain, thì bạn có thể tạo vhost cho domain khác qua tính năng gọi là addon domain. Khi khai báo domain mới trong mục addon domain, thì vhost cũng được tạo luôn cho domain đó.
  3. Trên hosting thường cho phép bạn tạo thêm website ứng với tên miền con (sub-domain), nếu bạn khai báo thêm sub-domain trong mục Sub Domains thì vhost cho sub-domain cũng được tạo luôn.

Như vậy, khi thêm một domain vào hosting, thì vhost cho domain đó sẽ được tự động tạo cho bạn bởi các phần mềm Control Panel, bạn không cần làm gì thêm, chỉ cần trỏ domain về IP của hosting, và cài đặt mã nguồn cho website là xong.

Chúng ta sẽ nói chi tiết về cách tạo Website trên Hosting cPanel topic kế tiếp.

Tiếp theo là gì?

Sau khi tìm hiểu vhost/ Virtual Hosting, cũng như Web server, các Web Stack phổ biến, cách tạo VPS, hi vọng bài viết sẽ giúp bạn hiểu rõ cách thức hoạt động của website trên máy chủ.

Ở các bài tiếp theo, chúng ta sẽ thực hành cài đặt chứng chỉ bảo mật SSL cho website, cài đặt WordPress để có một website hoàn chỉnh, sau đó tiếp tục tùy chỉnh thiết kế, xây dựng tính năng cho các dự án website chuyên nghiệp.

Chúc thành công!

Scroll to Top