基於Linux搭建apache服務後,怎麽構建web虛擬主機?
阿新 • • 發佈:2019-05-11
主配置文件 寫上 配置文件 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虛擬主機?