Mục lục
Virtual Host là gì?
Nếu có một máy chủ Web Apache trên CentOS 7 mà bạn muốn chạy nhiều website, sử dụng cùng 1 địa chỉ IP, thì vitualhost là giải pháp giúp bạn làm điều đó.
Một phần không thể thiếu của một máy chủ web (bao gồm cả Apache, Nginx, Lighttpd…) là chạy nhiều web trên 1 server. Bạn có thể thêm domain vào máy chủ và cấu hình chúng riêng rẽ. Mỗi cấu hình như vậy được gọi là một virtual host. Mỗi một virtual host sẽ quy định cho mỗi tên miền riêng biệt. Bạn có thể tạo ra vô số virtual host để thêm domain vào VPS và chạy nhiều web trên 1 server.
Các bước cấu hình Virtual host cho Apache trên CentOS 7
Mô hình Lab
Trong bài lab này, Zhost sẽ sử dụng một Server Centos 7 có IP 10.10.10.11 cài đặt Apache (httpd).
Trên server sẽ cấu hình chạy 2 web site là:
- web1.com – đường dẫn: /var/www/web1
- web2.com – đường dẫn: /var/www/web2
Vô hiệu hoá SELinux theo bài viết: Cách vô hiệu hóa SELinux trên CentOS
Cài đặt Apache Web Server
Chạy lệnh sau để cài đặt Apache:
yum -y update && yum -y install httpd
Sau khi cài đặt xong các bạn chạy lệnh sau để khởi động Apache Service:
systemctl start httpd.service && systemctl enable httpd.service
Tiếp theo cấu hình firewall mở port http/https, mặc định trong centos 7 sử dụng FirewallD.
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
Như vậy, ta đã cài đặt Apache web server xong, để kiểm tra Apache hoạt động chưa các bạn mở trình duyệt web truy cập địa chỉ ip của server (http://your-ip-address ) sẽ ra default page của Apache.
Cấu hình Virtual Host
Tạo Folder chứa code cho 2 website web1 và web2 (với tuỳ chọn-p
cho phép ta tạo ra những thư mục con lồng trong nó)
sudo mkdir -p /var/www/web1 sudo mkdir -p /var/www/web2
Chỉnh sửa quyền truy cập sao cho quyền đọc được chấp nhận với tất cả các file và thư mục bên trong /var/www
sudo chmod -R 755 /var/www
Tạo ra file index.html đơn giản cho 2 website để kiểm thử hoạt động của Virtual host.
touch /var/www/web1/index.html touch /var/www/web2/index.html echo "<center><h1>This is website web1.com</h1></center>" > /var/www/web1/index.html echo "<center><h1>This is website web2.com</h1></center>" > /var/www/web2/index.html
Tạo 2 thư mục lưu trữ File cấu hình Virtual host cho apache:
sudo mkdir /etc/httpd/sites-available sudo mkdir /etc/httpd/sites-enabled
Note: Những thư mục này được giới thiệu bởi Debian , nhưng ta thêm vào đây để việc quản lí host linh hoạt hơn, vì nó khiến việc kích hoạt và vô hiệu hóa các virtual host trở nên dễ dàng hơn.
Trong đó:
- sites-available chứa các cấu hình Virtual host có trên hệ thống.
- sites-enabled chứa các cấu hình Virtual host được kích hoạt để chạy.
Cấu Apache nhận cấu hình những virtual host trongsites-enabled
.
sudo nano /etc/httpd/conf/httpd.conf
Thêm dòng sau vào cuối file:
IncludeOptional sites-enabled/*.conf
Lưu lại và thoát.
Tạo File Virtual host cho web1.com:
sudo nano /etc/httpd/sites-available/web1.com.conf
Thêm nội dung sau vào file:
<VirtualHost *:80> ServerAdmin [email protected] ServerName web1.com ServerAlias www.web1.com DocumentRoot /var/www/web1 DirectoryIndex index.php index.html ErrorLog /var/www/web1/error.log CustomLog /var/www/web1/requests.log combined </VirtualHost>
Lưu lại và thoát.
Trong đó:
- ServerAdmin khai báo email của quản trị viên.
- ServerName khai báo domain mà website sẽ lắng nghe.
- ServerAlias (tuỳ chọn) khai báo Alias của domain, thương là www.
- DirectoryIndex loại file sẽ được tìm đến để khởi chạy.
- DocumentRoot khai báo đường dẫn chứa code của website.
- ErrorLog và CustomLog khai báo đường dẫn lưu file log của website.
Tương tự các bước như trên, ta tạo File Virtual host cho web2.com:
sudo nano /etc/httpd/sites-available/web2.com.conf
Thêm nội dung sau vào file:
<VirtualHost *:80> ServerAdmin [email protected] ServerName web2.com ServerAlias www.web2.com DocumentRoot /var/www/web2 DirectoryIndex index.php index.html ErrorLog /var/www/web2/error.log CustomLog /var/www/web2/requests.log combined </VirtualHost>
Lưu lại và thoát.
Kích hoạt Virtual host
Như đã để cập ở trên, Apache sẽ chỉ nhận những cấu hình Virtual host trong thư mục sites-enabled. vì vậy ta sẽ tạo một liên kết ( symbolic link) vào thư mục sites-enabled
của mỗi virtual host:
sudo ln -s /etc/httpd/sites-available/web1.com.conf /etc/httpd/sites-enabled/web1.com.conf sudo ln -s /etc/httpd/sites-available/web2.com.conf /etc/httpd/sites-enabled/web2.com.conf
Restart Apache để lưu thay đổi.
sudo apachectl restart
Như vậy ta đã cấu hình xong Virtual host cho 2 website.
Kiểm tra hoạt động
Trên trình duyệt web của User, bạn vào web1.com và web2.com để kiểm tra lần lượt,
Nếu ra nội dung như ta setup ban đầu thì đã thành công.
Truy cập web1.com
Truy cập web2.com
Lưu ý: Trong khuôn khổ bài lab này bạn sẽ cần phải trỏ ip trong file hosts của windows để có thể phân dải 2 tên miền web1.com và web2.com về ip của Web server.
Zhost chúc các bạn thành công!