概述
本文使用脚本实现基于主机名的虚拟主机按需创建:
-
脚本可接受参数,提供独立站点目录;
-
生成独立站点首页;
-
脚本可接受参数,参数虚拟主机名称;
-
每虚拟使用单独的配置文件;
-
脚本可接受参数,参数虚拟主机名称;
环境
系统基于CentOS7.2,并通过yum安装httpd 2.4.6
建议关闭防火墙和selinux。
演示

客户机将域名解析写入/etc/hosts文件中

脚本
#!/usr/bin/env bash
#
# Author: jacky18676887374@aliyun.com QQ-18676887374
# date: 20161007-14:05:25
# Vervion: 0.0.1
# Description:
# Synopsis:
#
# 快速创建虚拟网站,站点测试页。
# create a test web
webtest(){
cat <<EOF > $2/index.html
<html>
<head>It's only a test web</head>
<body><h1>$1</h1></body>
</html>
EOF
}
# 生成vhost配置文件
vhost() {
cat <<EOF > /etc/httpd/conf.d/$1.conf
<VirtualHost *:80>
ServerName $1
DocumentRoot "$2"
<Directory "$2">
Options None
AllowOverride None
Require all granted
</Directory>
ErrorLog "/var/log/httpd/error_log_$1"
LogLevel warn
CustomLog "/var/log/httpd/access_log_$1" combinedio
</VirtualHost>
EOF
}
# get website variable
getvar(){
read -p 'Input a Directory for this VirtualHost: ' vdiretory
read -p 'Input a hostname for this VirtualHost: ' vhostname
}
# 禁用selinux
if [ `getenforce` != Disabled ];then
sed -i '/^SELINUX=/s/^.*$/SELINUX=disabled/' /etc/selinux/config
echo "change selinux=disabled,you must reboot."
fi
PS3='Input your choice:1)create; 2)quit '
select i in create quit ;do
case $i in
create)
getvar
mkdir -p $vdiretory
vhost $vhostname $vdiretory
webtest $vhostname $vdiretory
if `httpd -t` ;then
systemctl reload httpd
echo -e "Create complete.\nyour website url:$vhostname"
else
mv $vdiretory/index.html{,.errorr}
mv /etc/httpd/conf.d/vhostname.conf{,.error}
echo 'Error'
fi
;;
quit)
exit
;;
esac
done
原创文章,作者:昭其,如若转载,请注明出处:http://www.178linux.com/50153

