Web虛擬主機指的是在同一臺服務(wù)器中運行多個web站點,其中的每個站點實際上并不獨立占用整個服務(wù)器,因此被稱為“虛擬”Web主機,通過虛擬Web主機服務(wù)可以充分利用服務(wù)器的硬件資源。
使用httpd可以非常方便的去搭建虛擬主機服務(wù)器,只需要運行一個httpd服務(wù)就能夠同時支撐大量的web站點。httpd支持的虛擬主機類型有這么三種(與Windows 的IIS服務(wù)一樣):
1、相同IP、端口號、不同域名的虛擬主機;
2、相同IP、不同端口號的虛擬主機;
3、不同IP、相同端口號的虛擬主機;
大多數(shù)運維人員在搭建虛擬主機時,應(yīng)該都是采用第一種方案,基于不同域名來做虛擬主機,這也是最人性化的一種方案。
一、開始搭建基于域名的虛擬主機:
1、為虛擬主機提供域名解析
DNS服務(wù)安裝參考:http://www.sfodin.cn/Linux/2019-05/158642.htm,若對DNS服務(wù)的配置不太熟悉,建議參考博文鏈接去搭建DNS服務(wù),而不建議參考下面的內(nèi)容(沒解釋那么詳細):
[root@localhost /]# vim /etc/named.conf #named服務(wù)器主配置文件 ..................... #省略部分內(nèi)容 zone "test1.com" in { type master; file "test1.com.zone"; }; zone "test2.com" in { type master; file "test2.com.zone"; }; [root@localhost /]# vim /var/named/test1.com.zone #test1.com區(qū)域配置文件 ...................... #省略部分內(nèi)容 in ns www.test1.com. www in a 192.168.1.1 [root@localhost /]# vim /var/named/test2.com.zone #test2.com區(qū)域配置文件 ...................... #省略部分內(nèi)容 in ns www.test2.com. www in a 192.168.1.1 [root@localhost named]# systemctl start named #啟動DNS服務(wù)
2、為虛擬主機準備網(wǎng)頁文檔
為每個虛擬web主機準備網(wǎng)站目錄及網(wǎng)頁文檔。為了方便測試,分別為每個虛擬web主機提供包含不同的首頁文件:
[root@localhost named]# mkdir -p /var/www/test1com [root@localhost named]# mkdir -p /var/www/test2com [root@localhost named]# echo "<h1>www.test1.com</h1>" > /var/www/test1com/index.html [root@localhost named]# echo "<h1>www.test2.com</h1>" > /var/www/test2com/index.html
希望上述操作大家可以看懂在干什么吧,懶得解釋了。
3、添加虛擬主機配置
[root@localhost named]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #創(chuàng)建獨立的配置文件 該文件默認存在) ..................... #省略部分內(nèi)容 #設(shè)置test1虛擬站點區(qū)域 <VirtualHost *:80> #配置監(jiān)聽地址及端口號,*代表任意地址 ServerAdmin 916551516@qq.com #設(shè)置服務(wù)器管理員的郵箱,當服務(wù)異常時, 向該郵箱發(fā)送消息。該行也可刪除。 DocumentRoot "/var/www/test1com" #設(shè)置網(wǎng)站根目錄 ServerName www.test1.com #配置域名 ErrorLog "logs/test1-error_log" #錯誤日志存放在/usr/local/httpd/logs CustomLog "logs/test1-access_log" common #訪問記錄日志存放處 <directory "/var/www"> #設(shè)置目錄訪問權(quán)限 require all granted </directory> </VirtualHost> # 設(shè)置test2虛擬站點區(qū)域 <VirtualHost *:80> ServerAdmin 916551516@qq.com DocumentRoot "/var/www/test2com" ServerName www.test2.com ErrorLog "logs/test2-error_log" CustomLog "logs/test2-access_log" common <directory "/var/www"> require all granted </directory> </VirtualHost> [root@localhost named]# vim /usr/local/httpd/conf/httpd.conf #修改網(wǎng)站主配置文件 ............... #進入主配置文件后,在末行模式下執(zhí)行 /vhosts ,定位到下面該行 Include conf/extra/httpd-vhosts.conf #刪除該行開頭的#號,以便加載獨立的配置文件 [root@localhost named]# systemctl restart httpd #重啟服務(wù)使配置生效, 我把httpd添加成了系統(tǒng)服務(wù), 才可使用systemctl命令來控制httpd服務(wù),若沒添加為系統(tǒng)服務(wù), 還是老老實實的使用服務(wù)自帶的控制工具吧。
4、在客戶機中訪問虛擬web主機
驗證吧,結(jié)果如下:
齊活,基于不同域名的虛擬主機至此就做完了。
二、基于IP地址的虛擬主機:
(十萬個不想接著往下寫了,因為接下來的內(nèi)容了解即可,不會用到的,不過呢…..為了以防萬一,還是簡單寫一下吧)
注意,每一種方式之間毫無任何關(guān)聯(lián),千萬別把基于IP地址的虛擬主機和基于域名的搞混了
[root@localhost named]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #編輯子配置文件 .............. <VirtualHost 192.168.1.1:80> #配置監(jiān)聽地址192.168.1.10 ServerAdmin 916551516@qq.com DocumentRoot "/var/www/test1com" ErrorLog "test1-error_log" CustomLog "test1-access_log" common <directory "/var/www"> require all granted </directory> </VirtualHost> <VirtualHost 192.168.1.10:80> #配置監(jiān)聽地址為192.168.1.10 ServerAdmin 916551516@qq.com DocumentRoot "/var/www/test2com" ErrorLog "test2-error_log" CustomLog "test2-access_log" common <directory "/var/www"> require all granted </directory> </VirtualHost> [root@localhost named]# vim /usr/local/httpd/conf/httpd.conf ...................... Include conf/extra/httpd-vhosts.conf #加載獨立的配置文件 [root@localhost named]# systemctl restart httpd #重啟httpd服務(wù)
客戶機訪問:
二、基于端口的虛擬主機:
[root@localhost named]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #編輯子配置文件 <VirtualHost 192.168.1.1:80> #配置監(jiān)聽端口號為80 ServerAdmin 916551516@qq.com DocumentRoot "/var/www/test1com" #正常訪問的網(wǎng)站目錄 ErrorLog "test1-error_log" CustomLog "test1-access_log" common <directory "/var/www"> require all granted </directory> </VirtualHost> <VirtualHost 192.168.1.1:8000> #配置監(jiān)聽端口號為8000 ServerAdmin 916551516@qq.com DocumentRoot "/var/www/test2com" #后臺管理系統(tǒng)的網(wǎng)站目錄 ErrorLog "test2-error_log" CustomLog "test2-access_log" common <directory "/var/www"> require all granted </directory> </VirtualHost> listen 8000 #監(jiān)聽8000,由于80端口默認監(jiān)聽,所以不用寫listen 80,寫上會報錯 [root@localhost named]# vim /usr/local/httpd/conf/httpd.conf ...................... Include conf/extra/httpd-vhosts.conf #加載獨立的配置文件 [root@localhost named]# systemctl restart httpd #重啟httpd服務(wù)
客戶機訪問:
注意:在訪問時老實點輸入:http://192.168.1.1:8000。不輸入“http://”的話訪問不到。