Http实践

练习:搭建虚拟主机

    (1)基于主机名实现三个虚拟主机

    (2) 每虚拟主机使用独立的访问日志和错误日志

Http实践

    (3) 第三个虚拟主机的/admin要进行用户访问认证

Http实践

Http实践

    (4) 在第二个虚拟主机上提供/status;

Http实践

    (5) 在第三个虚拟主机提供路径别名/bbs,访问其它文件系统路径;

Http实践

    (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.178linux.com/49701

(0)
LiiLii
上一篇 2016-09-29 21:31
下一篇 2016-10-01

相关推荐

  • Linux 的shell脚本编程

    shell脚本编程 程序:指令+数据 程序编辑风格:             过程式:以指令为中心,数据服务于指令             对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 计算机:运行二进制指…

    Linux干货 2016-08-15
  • 8月5日第七节课作业

    一、当天练习 1、找出ifconfig命令结果中本机的所有IPv4地址 2、查出分区空间使用率的最大百分比值 3、查出用户UID最大值的用户名、UID及shell类型 4、查出/tmp的权限,以数字方式显示 5、统计当前连接本机的每个远程主机IP的连接数,并按从大 到小排序 1、显示/proc/meminfo文件中以大小s开头的行;(要求:使 用两种方式) …

    Linux干货 2016-08-08
  • 马哥教育网络班20期+第六周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;     cp /etc/rc.d/rc.sysinit  /tmp   &n…

    Linux干货 2016-10-19
  • Linux 别名与二进制的使用。

    二进制 一般二进制这个名词听上去高深莫测,然而当你了解它之后其实并不复杂,在计算机里处理数据一般都是由二进制处理。 平时我们计数都是以10为进制,比如平时数数:1、2、3、4、5、6、7、8、9,数到10时就会导致个位变成0,十位变成了1,因为9+1要向十位进一,十进制意味着数字的每一位最小为0,最大为9。同理,二进制意味着数字的每一位最小为0,最大为1,十…

    Linux干货 2017-05-20
  • 第五周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; grep“^[[:space:]]\+” /boot/grub/grub.conf grep  -E “^[[:space:]]+” /boot/grub/grub.conf 2、显示/etc…

    Linux干货 2017-02-20
  • 网络配置——命令家族

    Linux网络属性配置命令: ifcfg家族:ifconfig,route,netstat ifconfig命令:接口及地址查看和管理          ·ifconfig [INTERFACE]       &nbsp…

    Linux干货 2016-09-07