Cấu hình Virtual Host trong XAMPP chạy nhiều domain
Cấu hình virtual Host trong XAMPP nhằm mục tiêu giúp các bạn chạy nhiều web site trên cùng một máy chủ. Nhiều website trên 1 máy chủ sẽ tiết kiệm nguồn tài nguyên máy chủ và nhân lực quản trị cho công ty, doanh nghiệp của các bạn.
Các bài hướng dẫn cấu hình để trỏ domain về host đã có nhiều trên mạng nên cũng không khó khăn gì. Vấn đề ở đây là nếu bạn có 2 trang web khác nhau và giả như bạn cũng đang có 1 web server trong tay. Có cách nào để cho 2 website đó cùng chạy trên 1 server? Không lẽ dựng thêm để mỗi web chạy trên 1 server riêng?
Khái niệm Virtual Host chính là một cách thức cấu hình trong Apache. Nó cho phép nhiều domain cùng chạy trên một máy chủ. Giả thiết là các bạn đã cài đặt xong, vận hành được ít nhất 01 website trên host của các bạn rồi. Điều này để đảm bảo loại trừ các lỗi khác ngoài phạm vi bài viết. Nhiều tác động cùng lúc khiến cho các bạn khó kiểm soát. Cần kiểm soát tốt tình hình thay đổi của máy chủ sau mỗi bước tác động vào. Khi máy chủ đang vậnhành tốt thì vấn đề là làm sao add thêm các website khác vào nữa mà thôi.
Các giả định:
- Bạn đã có các domain website_01.com và website_02.net được đăng ký và trỏ DNS cho các domain đó về máy chủ của bạn.
- Thư mục cài đặt XAMPP trên máy tính dùng làm máy chủ: D:\XAMPP
- website thứ nhất: Tên web: website_01.com Thư mục chứa bộ nguồn tương ứng trên máy chủ: D:/XAMPP/HTDOCS/website1
- website thứ hai: Tên web: website_02.net Thư mục chứa bộ nguồn tương ứng trên máy chủ: D:/XAMPP/HTDOCS/website2
Bước 1: Tác động lên cấu hình trong file httpd.conf
Mở file D:/XAMPP/apache/conf/httpd.conf (bằng Notepad++ hoặc 1 trình soạn thảo đơn giản nào khác)
Nhấn Ctrl+F (tìm kiếm), tìm và xóa dấu # trước dòng:
Include conf/extra/httpd-vhosts.conf
giải thích: Lệnh Include này để load các cấu hình config từ một file khác vào trong file httpd.conf, ở đây là load các cấu hình chứa trong file httpd-vhosts.conf vào file httpd.conf hiện tại. Dấu # đặt trước mỗi lệnh sẽ vô hiệu hóa lệnh đó, xóa dấu # sẽ kích hoạt lệnh.
Bước 2: Tác động lên cấu hình trong file httpd-vhosts.conf
mở tệp tin D:/XAMPP/apache/conf/extra/httpd-vhosts.conf
copy đoạn code bên dưới và paste vào trong file httpd-vhosts.conf.
<VirtualHost *:80>
ServerAdmin webmaster@website_01.com #
(Tùy chọn)
DocumentRoot
"D:/XAMPP/HTDOCS/website1"
ServerName
website_01.com
ServerAlias
www.website_01.com # (tùy chọn)
ErrorLog "logs/website_01.com-error.log"
# (Tùy chọn)
CustomLog "logs/website_01.com-access.log" common #
(Tùy chọn)
<Directory "D:/XAMPP/HTDOCS/website1">
Options FollowSymLinks
AllowOverride All
DirectoryIndex index.php
Require all granted
</Directory>
</VirtualHost>
Những lệnh có đánh dấu tùy chọn là có thể dùng hoặc không dùng.
Chọn toàn bộ khối lệnh trên copy thành 1 bản nữa. Sửa lại các thành phần cho phù hợp để config cho website_02 như sau:
<VirtualHost *:80>
ServerAdmin webmaster@website_02.net
# (Tùy chọn)
DocumentRoot
"D:/XAMPP/HTDOCS/website2"
ServerName website_02.net
ServerAlias
www.website_02.net # (tùy chọn)
ErrorLog "logs/website_02.net-error.log"
# (Tùy chọn)
CustomLog "logs/website_02.net-access.log" common #
(Tùy chọn)
<Directory "D:/XAMPP/HTDOCS/website2">
Options FollowSymLinks
AllowOverride All
DirectoryIndex index.php
Require all granted
</Directory>
</VirtualHost>
Các tham số bắt buộc khi cấu hình Virtual Host trong XAMPP:
- <VirtualHost></VirtualHost> Đây là cặp thẻ báo hiệu mở đầu và kết thúc của một khai báo về Vhost. Có một lưu ý nhỏ là nếu bạn nào đổi port của Apache (8080,81,v.v…) thì cũng phải đổi số 80 theo port các bạn chuyển sang nhé.
- DocumentRoot Đây là từ khóa khai báo đường dẫn của thư mục. Thư mục sẽ được gọi khi người dùng truy cập vào domain được cấu hình. Đường dẫn này có thể nằm ở bất kỳ một phân vùng nào trên ổ cứng máy chủ.
- ServerName Chính là domain mà bạn muốn đặt.
- <Directory></Directory> Đây là cặp thẻ dùng để cấp quyền truy cập cho thư mục nếu thư mục không được cấp quyền sẽ gặp lỗi 403 khi các bạn cố gắng truy cập. Đường dẫn thư mục của bạn có thể là một regular expression. Nếu các bạn không rõ về Regex thì các bạn có thể dùng đường dẫn thư mục giống với khai báo trong
DocumentRoot
hoặc tham khảo thêm tại: http://httpd.apache.org/docs/2.4/en/mod/core.html#directory - Options FollowSymLinks Option này cho phép bạn truy cập theo symbolic link (giống như shortcut trong windows vậy). Ngoài ra còn có nhiều các options khác, các bạn có thể tham khảo thêm tại: http://httpd.apache.org/docs/2.4/en/mod/core.html#options
- AllowOverride All cho phép bạn overwrite các config bằng file htaccess.
- DirectoryIndex index.php: Khi các bạn truy cập vào thư mục . Nếu không chỉ rõ cụ thể là file nào thì file index.php sẽ được gọi.
- Require all granted là cho phép tất cả các máy khác được truy cập vào thư mục đang được cấu hình. Chú ý: từ phiên bản 2.2 trở về trước thì Apache sử dụng
Allow from all
để thay thế choRequire all granted
Các tham số không bắt buộc khi cấu hình Virtual Host trong XAMPP (tùy chọn)
- ServerAdmin Từ khóa khai báo địa chỉ email của admin (Không bắt buộc).
- ErrorLog Chỉ định đường dẫn của file log khi có lỗi (không bắt buộc)
- CustomLog Log lại tất cả các Uri mà người dùng request không bắt buộc)
<thu_muc_cai_dat_xampp>/apache/logs
là thư mục chứa file log.<thu_muc_cai_dat_xampp>/apache/logs
là thư mục chứa file log.
Bây giờ bạn khởi động lại XAMPP và xem kết quả. Tuy nhiên đây mới là bạn đã cấu hình xong về phần của Apache. Để hoàn thành cấu hình Virtual Host trong XAMPP, Bạn còn 1 việc phải làm nữa là tác động lên file host trong windows.
Bước 3: tác động lên file host
Các bạn mở file %windir%/system32/drivers/etc/hosts
(thường là C:/Windows/system32/drivers/etc/hosts)
bằng notepad++ hoặc bất kỳ trình editor nào (tắt ReadOnly của file và mở bằng quyền Administrator nhé) sau đó thêm 2 dòng.
127.0.0.1 website_01.com
127.0.0.1 website_02.net
Khi các bạn gõ địa chỉ website_01.com hay website_02.net thì máy sẽ tìm trong file host trước. Nếu không có, nó đi tìm địa chỉ IP của domain này qua các DNS Server trên Internet. Như vậy địa chỉ IP 127.0.0.1
là để trỏ về chính máy đang truy cập (chính là bản thân máy server của bạn đang cấu hình).
Để kiểm tra, giờ các bạn có thể mở trình duyệt lên. Nhập vào thanh địa chỉ website_01.com hay website_02.net thay thế dòng localhost. Trang web sẽ được load ra màn hình.
Trên đây Cường Còng đã hướng dẫn từng bước thiết lập cấu hình Virtual Host trong XAMPP để chạy nhiều domain cùng lúc trên một máy chủ. Chúc các bạn thành công.