导读 | 由于业务特殊需要,不同的人员需要操作不同站点配置,分配具体权限以后,通过前台web即可实现ng的控制。这里简单写了一个脚本做线上nginx域名的添加以及修改操作。 |
管理人员(不同人员具有不同的adminid,权限不一样)登录管理系统,进行web可视化操作,添加或修改域名时,入库到mysql中并触发链接调用的php文件,比如curl http://a.com/add.php,将触发后调用的内容写入adddomain.txt,编写shell通过执行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
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/121799.html