导读 由于业务特殊需要,不同的人员需要操作不同站点配置,分配具体权限以后,通过前台web即可实现ng的控制。这里简单写了一个做线上nginx域名的添加以及修改操作。

管理人员(不同人员具有不同的adminid,权限不一样)登录管理系统,进行web可视化操作,添加或修改域名时,入库到mysql中并触发链接调用的php文件,比如curl //a.com/add.php,将触发后调用的内容写入adddomain.txt,编写通过执行adddomain.txt实现nginx上的配置文件控制。

修改域名也是一个思路,将老域名和新域名输入到txt文件中后,shell截取替换。

添加绑定
#!/bin/bash
#work:  add  domain of  nginx.site.conf
#date:2017.4.14
#author:21yunwei
 
objdir=/usr/local/nginx/conf/vhost/
domainlist=/home/yunwei/adddomain.txt
/usr/bin/dos2unix $domainlist
time=`date +%Y%m%d_%H%M%S`
#Domain_List=`cat /home/yunwei/adddomain.txt`
function AddDomain(){
	adddomain=`echo  $i |awk '{print  $1}'`
	adminid=`echo  $i |awk '{print  $2}'`
	case  ${adminid}  in
        "10")
		objconf=legen.conf
	;;
	"11")
		objconf=apple.conf
	;;
        "12")
                objconf=alien.conf
        ;;
        "13")
                objconf=genius.conf
        ;;
        "14")
                objconf=test.conf
        ;;
	*)
		echo "$adminid  not exist"
	;;
	esac
	num=`grep  -n  "server\_name"  ${objdir}${objconf}  |awk 'NR==1{print  $1}' |awk  -F":" '{print  $1}'`
	sed -i "${num}a server_name ${adddomain};" ${objdir}${objconf}   
	}
function RestartNginx(){
	cp ${objdir}${objconf}  ${objdir}${objconf}.old
	/usr/local/nginx/sbin/nginx  -t  >/dev/null 2>&1
	ret=$?
	if [ $ret -eq 0 ]
	  then
	    /usr/local/nginx/sbin/nginx  -s reload
	  else
	    echo "Change domain error,go back";
	    rm -f ${objdir}${objconf}
	    mv ${objdir}${objconf}.old  ${objdir}${objconf}
	    /usr/local/nginx/sbin/nginx  -s reload
	    exit;
	fi
}
cat $domainlist  | while read i
do
  AddDomain  $i
  RestartNginx
done
cp $domainlist  /home/yunwei/domainHistory/$time.txt && echo > $domainlist

说明:

1,该脚本并不完善,还有很多可以完善和修改之处,比如删除等操作,这里只提供一个我自己做的简单思路;

2,由于web操作过来的是win界面的,txt格式不正确,可以通过cat -A txt文件名查看,需要通过dos2unix进行格式转换,否则脚本截取的参数不正确导致无法正常运行。

替换程序思路
filename=/home/yunwei/domain.txt
/usr/bin/dos2unix $filename
objdir=/usr/local/nginx/conf/vhost/
oldDomain=`cat  $filename | awk  'NR==2{print  $1}'`
objconf=`grep  -l "$oldDmain"  ${objdir}*`
newDomain=`cat  $filename  | awk  'NR==2{print  $2}'`
sed  -i "s/$oldDomain/$newDomain/g" $objconf

原文来自:

本文地址://lrxjmw.cn/web-management-system.html编辑:向云艳,审核员:逄增宝

Linux大全:

Linux系统大全:

红帽认证RHCE考试心得: