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

相关推荐

  • bash的工作特性-命令执行状态返回值、命令行展开

    bash的基础特性:命令的执行状态结果 命令执行的状态结果:      bash通过状态返回值来输出此结果:           成功:0           失败:1-255 命令执行完成之后,其状态返回值会保存于bash的特殊…

    Linux干货 2016-08-22
  • Linux下的查找命令

           Linux下的查找命令有很多,常用的有grep、which、whereis、locate、find。使用linux系统难免会忘记文件所在的位置,小编就是如此。所以我们在文件系统上常常需要根据文件的各种属性去查找符合条件的文件,所以小编今天特意写一篇文章来介绍一下这几个常用的查找命令。 一、Gre…

    Linux干货 2017-08-13
  • linux如何获取帮助以及基础目录命名标准

    一、linux的命令分为两种,一种是内建命令,即包含在shell当中的,一种是外部命令,通常保存在 bin目录中。 1、对于内部命令:  通常使用 help COMMAND 2、对于外部命令:  通常使用 man command  mannul的位置/usr/share/man man的内容通常分为以下几块   1、N…

    Linux干货 2016-10-30
  • N26_第二周作业

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理命令:cp,mv,rm 1、cp命令 功能说明:复制copy语法格式:        单源复制:  cp [OPTION]… [-T] SOURCE DEST  …

    Linux干货 2017-02-21
  • N25 第二周作业

    一.Linux上常用的文件管理类命令及用法示例     1.cp复制命令,具体有两个,一为单源复制,一种为多源复制。      常用选项         -i :交互式复制,覆盖之前提醒用户确认。       …

    Linux干货 2016-12-12
  • 用户及权限管理

     今天是学习马哥教育第四天,也是第一个博客作业,写一篇关于用户及权限管理的简介型的博客文章,作文水品有限,所以写出来有可能有病句或者意境有问题,请大家多多包涵。  首先,用户及权限管理,需要从2方面入手来说,首先来说用户管理。  何谓用户,这是马哥一上来就提到的问题,我简单的理解,用户其实就是一个人机交互的接口,人机交互的接口是…

    Linux干货 2016-09-15