Virtual Host là gì?
Virtual host là một khái niệm liên quan đến máy chủ web. Nó cho phép bạn chạy nhiều trang web trên cùng một máy chủ vật lý thông qua việc sử dụng tên miền và địa chỉ IP khác nhau. Bằng cách sử dụng Virtual Host, bạn có thể chạy nhiều trang web trên cùng một máy chủ mà không phải lo lắng về việc chúng xung đột với nhau.
Cách tạo 2 website trên 1 host với Virtual Host
Cài đặt
Cài đặt Apache server
sudo apt-get update sudo apt-get install apache2Sau khi cài đặt thành công apache server thì thư mục làm việc với apache mặc định là
/var/www/html, giờ chúng ta cần tạo một folder chứa project demo của chúng ta ở đây mình đặt tên là myproject, sau đó tạo một file index.html trong myproject.com với nội dung đơn giản để chạy thử/var/www/myproject/index.html- Kết quả của mình sẽ như sau

- Kết quả của mình sẽ như sau
Tạo thư mục cho website
Tiếp theo, tạo hai thư mục riêng biệt cho từng website của bạn. Thư mục này sẽ chứa các tệp tin của website, bao gồm các file HTML, CSS, JavaScript và hình ảnh.
Cấu hình Virtual Host
Để cấu hình Virtual Host, bạn cần phải sửa đổi file cấu hình của máy chủ web. Trong ví dụ này, ta sử dụng Apache, file cấu hình của Apache được lưu trữ tại /etc/httpd/conf/httpd.conf trên hệ thống Linux.
Thêm các dòng sau vào cuối file cấu hình httpd.conf:
DocumentRoot /var/www/website1 ServerName www.website1.com DocumentRoot /var/www/website2 ServerName www.website2.com
Trong đó, website1.com và website2.com là tên miền của từng website mà bạn muốn tạo. Điều này cho phép máy chủ web biết khi nào phải hiển thị trang web nào dựa trên tên miền được yêu cầu.
Kích hoạt Virtual Host
Sau khi đã tạo Virtual Host, bạn cần kích hoạt nó bằng cách sử dụng lệnh sau:
sudo a2ensite myproject.conf
Sau khi lệnh này được thực hiện file myproject.conf sẽ được copy từ /etc/apache2/site-available/myproject.conf sang /etc/apache2/site-enable/myproject.conf
Restart apache server
sudo service apache2 restart
Bạn cần thay thế “yourdomain.com.conf” bằng tên tệp cấu hình Virtual Host mà bạn đã tạo.
Đăng ký DNS
- Việc khá quan trọng đó là bạn cần phải khai báo tất cả các tên miền bạn muốn dùng với Apache trong máy chủ DNS.
- Nếu bạn chỉ khai báo thoải mái các tên khác nhau trong .conf (hay apache.conf) mà trong máy chủ DNS không hề có thông tin của các tên thì người dùng sẽ không thấy được trang web của bạn.
- Ví dụ có một tên miền đã được đăng ký online nghĩa là sử dụng external network bạn đặt một tên như vậy thì khi truy cập vào tên miền đó request bạn gửi đi sẽ tới server online kia và trả lại trang web bạn không mong muốn, nhưng khi đăng ký DNS local thì việc sử dụng internal network khi truy cập vào tên miền của bạn nó sẽ tìm kiếm trong host local trước
- Mở file /etc/hosts và thêm vào một dòng như sau
yourdomain.com(ở đây là myproject.dev)sudo nano /etc/hosts
- Ok giờ bạn restart server apache và truy cập vào đường dẫn theo tên miền mà bạn đã config ở đây mình để là myproject.dev
Tạo trang web thứ hai
Bây giờ, bạn đã có thể tạo trang web thứ hai trên cùng một máy chủ bằng cách lặp lại các bước trên. Nhưng lần này, bạn cần sử dụng tên miền khác và đường dẫn khác cho DocumentRoot.
Khởi động lại Apache2
Cuối cùng, bạn cần khởi động lại Apache2 để áp dụng các thay đổi:
sudo service apache2 restart

