实现内容:
通过脚本自动创建虚拟主机要求如下:
1、 创建虚拟主机配置信息在/etc/httpd/conf.d/virt_host.conf中
2、 创建虚拟主机目录在/var/www下,名称为虚拟主机域名即可
3、 创建过程要求交互式进行,只需要输入IP地址和域名即可。
4、 创建过程如果没有输入按回车无效,要求再次输入在进入下一步。
完善内容:(未操作)
1、交互式过程中输入的IP和域名是否有效,无效需要再次输入
2、同一台主机两个IP是如何添加虚拟主机的
思路如下:
1、 通过read –p命令进行交互式
2、 定义一个函数input_fun实现交互式输入空值再次输入
3、 通过cat命令将虚拟主机配置内容写入文档
Apache虚拟主机创建脚本如下:
- #!/bin/bash
- HTTP_CONF_DIR=/etc/httpd/conf.d //创建变量指向虚拟主机配置目录
- CONF_FILE_NAME=virt_host.conf //定义所有虚拟主机配置文件名
- HTTP_SITE_DIR=/var/www //定义虚拟主机网站主目录位置
- //以上路径及名称都可以根据需求任意改动
- input_fun() //定义函数input_fun,实现输入空信息再次读取
- {
- OUTPUT_VAR=$1 //这里$1其实就是Input Host ip [192.168.0.1]:或Input Virtual Host Name [www.example.com]:
- INPUT_VAR="" //定义变量INPUT_VAR起始值为空
- while [ -z $INPUT_VAR ];do //判断变量INPUT_VAR是否为空
- read -p "$OUTPUT_VAR" INPUT_VAR //进入交互继续输入IP地址,直到输出内容后退出循环
- done
- echo $INPUT_VAR
- }
- IPADDR=$( input_fun "Input Host ip [192.168.0.1]: ") //定义变量IPADDR,交互式输入的IP地址为值
- WEB_HOST_NAME=$(input_fun "Input Virtual Host Name [www.example.com]: ") //定义变量WEB_HOST_NAME,交互式输入的域名为值
- [ ! -d $HTTP_SITE_DIR/$WEB_HOST_NAME ] && mkdir -p $HTTP_SITE_DIR/$WEB_HOST_NAME //判断虚拟主机目录是否存在,不存在创建虚拟主机目录
- chown apache. $HTTP_SITE_DIR/$WEB_HOST_NAME && chmod 755 $HTTP_SITE_DIR/$WEB_HOST_NAME //修改虚拟主机目录的所有权和访问权限
- if [ -f $HTTP_CONF_DIR/$CONF_FILE_NAME ];then //判断虚拟主机配置文件是否存在
- NameVir_key=$(grep NameVirtualHost $HTTP_CONF_DIR/$CONF_FILE_NAME) //如果存在,过滤里面的NameVirtualHost字段复制给变量NameVir_key
- fi
- if [ -z "$NameVir_key" ];then //查看NameVir_key是否为空值
- echo "NameVirtualHost $IPADDR:80" >$HTTP_CONF_DIR/$CONF_FILE_NAME //如果为空,创建虚拟主机配置文件,并写入NameVirtualHost $IPADDR:80
- fi
- cat >> $HTTP_CONF_DIR/$CONF_FILE_NAME << ENDF //写虚拟主机配置文件信息追加到配置文件中
- <VirtualHost $IPADDR:80>
- ServerAdmin webmaster@$WEB_HOST_NAME
- DocumentRoot $HTTP_SITE_DIR/$WEB_HOST_NAME
- ServerName $WEB_HOST_NAME
- ErrorLog logs/$WEB_HOST_NAME-error_log
- CustomLog logs/$WEB_HOST_NAME-access_loh common
- </VirtualHost>
- ENDF
- /etc/init.d/httpd restart //重启httpd服务
脚本部分内容大盘点:
read -p "$OUTPUT_VAR" INPUT_VAR 语法为read –p “显示内容” 变量 回车后输入变量信息
cat >>文件名<<endf 内容 endf 可以安装输入格式写入文件中
input_fun(){ //函数部分,通过函数名即可调用
***************
}
while 条件; //while循环语句语法,判断条件部分是否成立,成立就一直做do后面的内容,直到不成立循环结束
do
********
done
第一次运行脚本及结果
第二次运行脚本及结果
本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1152672,如需转载请自行联系原作者