概述
本文使用脚本实现基于主机名的虚拟主机按需创建:
-
脚本可接受参数,提供独立站点目录;
-
生成独立站点首页;
-
脚本可接受参数,参数虚拟主机名称;
-
每虚拟使用单独的配置文件;
-
脚本可接受参数,参数虚拟主机名称;
环境
系统基于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