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