練習:搭建虛擬主機
(1)基于主機名實現三個虛擬主機
(2) 每虛擬主機使用獨立的訪問日志和錯誤日志
(3) 第三個虛擬主機的/admin要進行用戶訪問認證
(4) 在第二個虛擬主機上提供/status;
(5) 在第三個虛擬主機提供路徑別名/bbs,訪問其它文件系統路徑;
(6) 嘗試使用混合類型的虛擬主機:基于IP,PORT和ServerName
[root@Centos7 httpd]# cat /etc/httpd/conf.d/vhost.conf ###虛擬主機1 <VirtualHost 192.168.1.3:80 > ServerName www.centos1.com DocumentRoot "/var/www1/html" ErrorLog "logs/www1_error_log" CustomLog "logs/www1_access_log" combined <Directory "/var/www1/html"> Options None AllowOverride None Require all granted </Directory> </VirtualHost> ###虛擬主機2 <VirtualHost 10.1.3.25:80 > ServerName www.centos2.com DocumentRoot "/var/www2/html" ErrorLog "logs/www2_error_log" CustomLog "logs/www2_access_log" combined <Directory "/var/www2/html"> Options None AllowOverride None Require all granted </Directory> <Location "/status"> SetHandler server-status Require all granted </Location> </VirtualHost> ###虛擬主機3 <VirtualHost 10.1.3.25:8080 > ServerName www.centos3.com DocumentRoot "/var/www3/html" ErrorLog "logs/www3_error_log" CustomLog "logs/www3_access_log" combined Alias /bbs "/bbs/fstab" <Directory "/var/www3/html/admin"> Options None AllowOverride None AuthName "Admin Login." AuthType Basic AuthUserFile "/var/www3/.pass" Require user li </Directory> <Directory "/var/www3/html"> Options Indexes AllowOverride None Require all granted </Directory> <Directory "/bbs/fstab"> Options None AllowOverride None Require all granted </Directory> </VirtualHost>
練習2:使用腳本實現以上功能;
每虛擬使用單獨的配置文件;
腳本可接受參數,參數虛擬主機名稱;
#!/bin/bash # #判斷是否為變量path是否為quit,如果是,則退出。 while [[ $path != "quit" ]];do read -p "Please Input Save Path: " path if [[ $path == "quit" ]];then break fi #讀取變量參數 read -p "Please Input ServerName: " SName read -p "Please Input IP: " ip read -p "Please Input port: " port #截取本機ip用于判斷 localip=$(ip ad sho | awk '/inet\>/{print $2}' | awk -F'/' '!/^127/{print $1}') #判斷及創建 if ! [ -d $path ] && [ -n $path ];then mkdir -p $path &>/dev/null if echo $localip | grep "$ip" &>/dev/null ;then if [ $port -lt 1023 ];then echo "<VirtualHost "$ip":"$port">" >>$path/index.html echo -e "\tServerName $SName" >>$path/index.html echo -e "\tDocumentRoot \""$path"\"" >>$path/index.html echo "</VirtualHost>" >>$path/index.html else echo "Sorry $port max" fi else echo "Sorry $ip false" fi else echo "Sorry path exist" fi done
原創文章,作者:Lii,如若轉載,請注明出處:http://www.www58058.com/49701