虛擬web主機指的是在同一臺服務器中運行多個web站點,其中的每一個站點實際上並不獨立佔用整個服務器,所以被稱爲「虛擬」web主機,經過虛擬web主機服務能夠充分利用服務器的硬件資源。html
使用httpd能夠很是方便的去搭建虛擬主機服務器,只須要運行一個httpd服務就可以同時支撐大量的web站點。httpd支持的虛擬主機類型有這麼三種(與Windows 的IIS服務同樣):web
一、相同IP、端口號、不一樣域名的虛擬主機;apache
二、相同IP、不一樣端口號的虛擬主機;vim
三、不一樣IP、相同端口號的虛擬主機;服務器
大多數運維人員在搭建虛擬主機時,應該都是採用第一種方案,基於不一樣域名來作虛擬主機,這也是最人性化的一種方案。運維
1、開始搭建基於域名的虛擬主機:ide
一、爲虛擬主機提供域名解析工具
安裝DNS服務的參考博文:http://www.javashuo.com/article/p-urpobsed-eo.html ,若對DNS服務的配置不太熟悉,建議參考博文連接去搭建DNS服務,而不建議參考下面的內容(沒解釋那麼詳細):測試
[root@localhost /]# vim /etc/named.conf #named服務器主配置文件 ..................... #省略部份內容 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區域配置文件 ...................... #省略部份內容 in ns www.test1.com. www in a 192.168.1.1 [root@localhost /]# vim /var/named/test2.com.zone #test2.com區域配置文件 ...................... #省略部份內容 in ns www.test2.com. www in a 192.168.1.1 [root@localhost named]# systemctl start named #啓動DNS服務
二、爲虛擬主機準備網頁文檔網站
爲每一個虛擬web主機準備網站目錄及網頁文檔。爲了方便測試,分別爲每一個虛擬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
但願上述操做你們能夠看懂在幹什麼吧,懶得解釋了。
三、添加虛擬主機配置
[root@localhost named]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #建立獨立的配置文件 該文件默認存在) ..................... #省略部份內容 #設置test1虛擬站點區域 <VirtualHost *:80> #配置監聽地址及端口號,*表明任意地址 ServerAdmin 916551516@qq.com #設置服務器管理員的郵箱,當服務異常時, 向該郵箱發送消息。該行也可刪除。 DocumentRoot "/var/www/test1com" #設置網站根目錄 ServerName www.test1.com #配置域名 ErrorLog "logs/test1-error_log" #錯誤日誌存放在/usr/local/httpd/logs CustomLog "logs/test1-access_log" common #訪問記錄日誌存放處 <directory "/var/www"> #設置目錄訪問權限 require all granted </directory> </VirtualHost> # 設置test2虛擬站點區域 <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 #修改網站主配置文件 ............... #進入主配置文件後,在末行模式下執行 /vhosts ,定位到下面該行 Include conf/extra/httpd-vhosts.conf #刪除該行開頭的#號,以便加載獨立的配置文件 [root@localhost named]# systemctl restart httpd #重啓服務使配置生效, 我把httpd添加成了系統服務, 纔可以使用systemctl命令來控制httpd服務,若沒添加爲系統服務, 仍是老老實實的使用服務自帶的控制工具吧。
四、在客戶機中訪問虛擬web主機
驗證吧,結果以下:
齊活,基於不一樣域名的虛擬主機至此就作完了。
2、基於IP地址的虛擬主機:
(十萬個不想接着往下寫了,由於接下來的內容瞭解便可,不會用到的,不過呢.....爲了以防萬一,仍是簡單寫一下吧)
注意,每一種方式之間毫無任何關聯,千萬別把基於IP地址的虛擬主機和基於域名的搞混了
[root@localhost named]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #編輯子配置文件 .............. <VirtualHost 192.168.1.1:80> #配置監聽地址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> #配置監聽地址爲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服務
客戶機訪問:
2、基於端口的虛擬主機:
[root@localhost named]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #編輯子配置文件 <VirtualHost 192.168.1.1:80> #配置監聽端口號爲80 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.1:8000> #配置監聽端口號爲8000 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> listen 8000 #監聽8000,因爲80端口默認監聽,因此不用寫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服務
客戶機訪問:
注意:在訪問時老實點輸入:http://192.168.1.1:8000。不輸入「http://」的話訪問不到。