apache自動化腳本搭建虛擬主機

1 基于主機名實現三個虛擬主機

(1).創建網站目錄與測試文件

圖片1.png

(2).創建虛擬主機文件(目錄為/etc/httpd/conf.d/下)blob.png

 

(3).修改測試apache主機hosts文件(就不用DNS服務器解析,方便測試),測試httpd配置文件是否有問題,重啟httpd服務

blob.png

 

(4)修改測試主機hosts文件(就不用DNS服務器解析,方便測試),在用firefox瀏覽器分別打開測試網站,出現下圖即可

blob.png

 

2 每虛擬主機使用獨立的訪問日志和錯誤日志

   (1).在對應虛擬主機內添加對應的日志文件 ,內容為(

   ErrorLog "logs/node2_mage_error_log(自定義錯誤日志)"

   LogLevel warn

   CustomLog "logs/node2_mage_access_log(自定義訪問日志)" combined

)  ,后重新加載httpd服務

blob.png

(2)在站點下創建測試test目錄,但是不給授權操作,分別訪問網站與目錄,讓httpd服務創建訪問與錯誤日志

blob.png

 

(3)查看虛擬主機自定訪問日志與錯誤日志

blob.png

 

3. 第三個虛擬主機的/admin要進行用戶訪問認證 

  (1).配置虛擬主機3認證

blob.png

<Directory "/www/node3.mage.com/admin">

     Options None

     AllowOverride None

     AuthType Basic

     AuthName "Please,Enter your name and password"

     AuthUserFile "/etc/httpd/conf.d/.htpasswd"

     Require user admin

  </Directory>

   

(2).創建目錄與配置文件,重啟服務器

blob.png

          

(3).修改測試主機解析文件,方便測試

blob.png

        

(4).輸入密碼,查看測試頁面

blob.png

                    

4 .在第二個虛擬主機上提供/status;

(1).配置虛擬主機2,增加服務器狀態查看頁面配置內容,重載服務

blob.png

             

(2).查看結果

blob.png

 

 5.在第三個虛擬主機提供路徑別名/bbs,訪問其它文件系統路徑;

   (1)創建訪問目錄與測試文件

blob.png

  (2)httpd配置文件修改,增加別名訪問與相應目錄訪問權限修改

blob.png

    

(3)重啟服務器,測試

blob.png

    

6.嘗試使用混合類型的虛擬主機:基于IP,PORT和ServerName

 (1)修改虛擬主機1,讓組件ip不同于其他。修改虛擬主機2,使其端口與其他端口不同。虛擬主機3不做修改,使其基于FDQN訪問

blob.png

(2)重啟apache服務,查看對應端口是否打開

blob.png

(3)訪問測試

blob.png

 

 練習2:使用腳本實現以上功能;

每虛擬使用單獨的配置文件;

腳本可接受參數,參數虛擬主機名稱;

程序執行情況:

blob.png

 生成配置文件:

blob.png

 

 程序代碼:

 #!/bin/bash

#auther:maoxiong date:16-10-07

echo "####################################################################"

echo "#     Virtual Machine Creation Tool V 1.0                          #"

echo "#                          author:MaoXiong                         #"

echo "#     Please complete the virtual machine creation according to    #"

echo "#     the prompt                                                   #"

echo "####################################################################"

vstat=0           #循環狀態量

vHost=' '         #ServerName

vDroot=' '        #DocumentRoot

vipport=' '        #虛擬主機IP與PORT

lport=' '

authdir=' '        #認證目錄

authuser=' '         #認證用戶

authpw=' '       #認證用戶

while [ $vstat -eq 0 ];do

   read -p "Please enter a VirtaulHost name and host directory, separated by spaces : " vhost vroot

   [ -e /etc/httpd/conf.d/$vhost.conf ] && echo "host is exits ." || vHost="$vhost"

   grep -o "$vroot" /etc/httpd/conf.d/* && echo "ServerDir is exits" || vDroot=$vroot

   [ -n $vhost ] && [ -n $vroot ] &&  vstat=1

done ; vstat=0

while [ $vstat -eq 0 ];do

   read -p "Please enter IP with port, for example 1.1.1.1 80 : " vport vport1

   if [ -z $vport ] ;then 

        echo "IP or port is null ." 

   else

         vipport=$vport:$vport1

         lport=$vport1; vstat=1

   fi

done; vstat=0

while [ $vstat -eq 0 ] ;do

    read -p "Please enter the authentication directory : " dir

    read -p "Please enter the authentication user name and password, separated by spaces : " user pd

    authdir=$dir; authuser=$user; 

    [ -e /etc/httpd/conf.d/.htpasswd ] || touch /etc/httpd/conf.d/.htpasswd

    htpasswd -mb /etc/httpd/conf.d/.htpasswd $user $pd

    authpw=`grep "$user" /etc/httpd/conf.d/.htpasswd | cut -d: -f2`

    vstat=1

done

echo "——————————————————————–"

echo "Please,Confirm configuration information"

echo "VirtualHost  ——-> $vHost"

echo "DocumentRoot ——-> $vDroot"

echo "VirtualHost IP and Port —-> $vipport"

echo "Certification directory —-> $authdir"

echo "Authenticate user       —-> $authuser"

echo "Authenticate password   —-> $authpw"

echo "ErrorLog  —-> /var/log/httpd/$vHost_error.log "

echo "AccessLog —-> /var/log/httpd/$vhost_access.llog "

echo "——————————————————————–"

read -p "Confirm the installation of the virtual host,(y or n) : " confy 

   [ "$confy" == "n" ] && exit || echo "installation……" 

vhdir=/etc/httpd/conf.d/$vHost.conf

touch /etc/httpd/conf.d/$vHost.conf

if [ $lport -ne 80 ];then

echo "Listen $lport"  >> $vhdir

fi

echo "<VirtualHost $vipport>"   >> $vhdir

echo "   ServerName $vHost"     >> $vhdir

  mkdir -p /www/$vDroot

echo "   DocumentRoot \"/www/$vDroot\""  >> $vhdir

echo "   <Directory \"/www/$vDroot\">" >> $vhdir

echo "   Options None"    >> $vhdir 

echo "   AllowOverride None"  >> $vhdir

echo "   Require all granted"  >> $vhdir

echo "  </Directory>"  >> $vhdir

echo "  <Directory \"/www/$vDroot/$authdir\">"  >> $vhdir

echo "  AuthType basic"   >> $vhdir

echo "  AuthName \"Admin Area, Enter your name/password\""  >> $vhdir

echo "  AuthUserFile \"/etc/httpd/conf/.htpasswd\""  >> $vhdir

echo "  Require user $authuser"  >> $vhdir

echo "  </Directory>  " >> $vhdir

echo "  <Location /status> "  >> $vhdir

echo "  SetHandler server-status " >> $vhdir

echo "  Require all granted" >> $vhdir

echo "  </Location>" >> $vhdir

echo "  CustomLog \"logs/$vhost_access.log\" combined "  >> $vhdir

echo "  ErrorLog \"logs/$vhost_error.log\"" >> $vhdir

echo " </VirtualHost> ">> $vhdir

echo "installation is complete ."

 

          

原創文章,作者:maoxiong,如若轉載,請注明出處:http://www.www58058.com/50131

(0)
maoxiongmaoxiong
上一篇 2016-10-09
下一篇 2016-10-09

相關推薦

  • iptables 從入門到進階

    Linux的防火墻體系主要工作在網絡層,針對TCP/IP數據包實施過濾和限制,屬于典型的包過濾防火墻(或網絡層防火墻)。在Linux中netfilter和iptables都是指Linux防火墻。區別在于: netfilter:指的是Linux內核中實現包過濾防火墻的內部結構,不以程序或文件的形式存在,屬于“內核態”的防火墻功能體系。 iptables:指的是…

    Linux干貨 2017-01-10
  • LVS負載均衡實戰演練

    LVS負載均衡實戰之lvs-nat模型 1.準備好機器,配置好時間同步,配置號網絡,主機名 172.16.251.91 client [橋接] [網關為172.16.251.90] #lvs負載均衡兩塊網卡 172.16.251.90  lvs [網卡1] [橋接] 192.168.42.150  lvs [網卡2] [VMnet8] 192.168.42.…

    Linux干貨 2017-06-22
  • Linux系統上獲取命令的幫助信息

    獲取命令的使用幫助: 內部命令:help COMMAND   #針對內檢命令 外部命令: (1) 命令自帶簡要格式的使用幫助      COMMAND –help (2) 使用手冊:manual  [root@localhost /]# ls /usr/share/man   #記住這個…

    Linux干貨 2016-08-15
  • 網絡相關命令

    網絡相關命令 常用命令 ifcfg家族:   ifconfig:配置IP,NETMASK   route :路由   netstat : 狀態及統計數據查看 iproute2家族     ip  系列 &nbs…

    Linux干貨 2016-09-07
  • 第十九周作業

    1、描述Tomcat的架構; 核心架構圖: 架構簡介: Server是管理Service接口的,是Tomcat的一個頂級容器。管理著多個Service; Service 是服務,管理著一個Container和多個Connector,Service的存在依賴于Server; Container : 一個或者多個Container 可以對應一個Connector…

    2017-06-23
  • 推倒一個二十來歲青壯年第一步

    首先:找到他家在哪里,了解他的生長環境 然后:調查他的信息,慢慢了解他,學會和他交流,學會控制他

    Linux干貨 2016-09-21
欧美性久久久久