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 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!

Tagged:

Leave a Reply

Your email address will not be published. Required fields are marked *