1. 程式人生 > >基於Linux搭建apache服務後,怎麽構建web虛擬主機?

基於Linux搭建apache服務後,怎麽構建web虛擬主機?

主配置文件 寫上 配置文件 png 正常 定位 監聽 內容 相同

虛擬web主機指的是在同一臺服務器中運行多個web站點,其中的每個站點實際上並不獨立占用整個服務器,因此被稱為“虛擬”web主機,通過虛擬web主機服務可以充分利用服務器的硬件資源。

使用httpd可以非常方便的去搭建虛擬主機服務器,只需要運行一個httpd服務就能夠同時支撐大量的web站點。httpd支持的虛擬主機類型有這麽三種(與Windows 的IIS服務一樣):

1、相同IP、端口號、不同域名的虛擬主機;

2、相同IP、不同端口號的虛擬主機;

3、不同IP、相同端口號的虛擬主機;

大多數運維人員在搭建虛擬主機時,應該都是采用第一種方案,基於不同域名來做虛擬主機,這也是最人性化的一種方案。

一、開始搭建基於域名的虛擬主機:

1、為虛擬主機提供域名解析

安裝DNS服務的參考博文:https://blog.51cto.com/14154700/2357252 ,若對DNS服務的配置不太熟悉,建議參考博文鏈接去搭建DNS服務,而不建議參考下面的內容(沒解釋那麽詳細):

[[email protected] /]# 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";
};

[[email protected] /]# vim /var/named/test1.com.zone             #test1.com區域配置文件

              ......................               #省略部分內容

        in      ns      www.test1.com.
www     in      a       192.168.1.1

[[email protected] /]# vim /var/named/test2.com.zone               #test2.com區域配置文件

              ......................                  #省略部分內容

        in      ns      www.test2.com.
www     in      a       192.168.1.1

[[email protected] named]# systemctl start  named              #啟動DNS服務

2、為虛擬主機準備網頁文檔

為每個虛擬web主機準備網站目錄及網頁文檔。為了方便測試,分別為每個虛擬web主機提供包含不同的首頁文件:


[[email protected] named]# mkdir -p /var/www/test1com
[[email protected] named]# mkdir -p /var/www/test2com
[[email protected] named]# echo "<h1>www.test1.com</h1>" > /var/www/test1com/index.html
[[email protected] named]# echo "<h1>www.test2.com</h1>" > /var/www/test2com/index.html

希望上述操作大家可以看懂在幹什麽吧,懶得解釋了。

3、添加虛擬主機配置

[[email protected] named]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf               #創建獨立的配置文件
該文件默認存在)

   .....................               #省略部分內容

#設置test1虛擬站點區域

<VirtualHost *:80>             #配置監聽地址及端口號,*代表任意地址            
    ServerAdmin [email protected]               #設置服務器管理員的郵箱,當服務異常時,
        向該郵箱發送消息。該行也可刪除。
    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 [email protected]
    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>

[[email protected] named]# vim /usr/local/httpd/conf/httpd.conf         #修改網站主配置文件

         ............... #進入主配置文件後,在末行模式下執行   /vhosts  ,定位到下面該行

Include conf/extra/httpd-vhosts.conf           #刪除該行開頭的#號,以便加載獨立的配置文件     
[[email protected] named]# systemctl restart httpd                #重啟服務使配置生效,
我把httpd添加成了系統服務,
才可使用systemctl命令來控制httpd服務,若沒添加為系統服務,
還是老老實實的使用服務自帶的控制工具吧。

4、在客戶機中訪問虛擬web主機

驗證吧,結果如下:

技術分享圖片

技術分享圖片

齊活,基於不同域名的虛擬主機至此就做完了。

二、基於IP地址的虛擬主機:

(十萬個不想接著往下寫了,因為接下來的內容了解即可,不會用到的,不過呢.....為了以防萬一,還是簡單寫一下吧)

註意,每一種方式之間毫無任何關聯,千萬別把基於IP地址的虛擬主機和基於域名的搞混了

[[email protected] named]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf      #編輯子配置文件
         ..............
<VirtualHost 192.168.1.1:80>                 #配置監聽地址192.168.1.10
    ServerAdmin [email protected]
    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 [email protected]
    DocumentRoot "/var/www/test2com"
    ErrorLog "test2-error_log"
    CustomLog "test2-access_log" common
    <directory "/var/www">
    require all granted
    </directory>
</VirtualHost>

[[email protected] named]# vim /usr/local/httpd/conf/httpd.conf          
                ......................             
Include conf/extra/httpd-vhosts.conf            #加載獨立的配置文件

[[email protected] named]# systemctl restart httpd            #重啟httpd服務

客戶機訪問:

技術分享圖片

技術分享圖片

二、基於端口的虛擬主機:

[[email protected] named]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf      #編輯子配置文件

<VirtualHost 192.168.1.1:80>                     #配置監聽端口號為80
    ServerAdmin [email protected]
    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 [email protected]
    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,寫上會報錯

[[email protected] named]# vim /usr/local/httpd/conf/httpd.conf          
                ......................             
Include conf/extra/httpd-vhosts.conf            #加載獨立的配置文件

[[email protected]localhost named]# systemctl restart httpd            #重啟httpd服務

客戶機訪問:
技術分享圖片

註意:在訪問時老實點輸入:http://192.168.1.1:8000。不輸入“http://”的話訪問不到。
技術分享圖片

基於Linux搭建apache服務後,怎麽構建web虛擬主機?