通过线上可视化web管理系统实现线上对linux服务器的nginx配置文件域名添加、修改等操作 – 21运维
通知: .-...

通过线上可视化web管理系统实现线上对linux服务器的nginx配置文件域名添加、修改等操作

shell 21运维 6372浏览 0评论

21运维原创,转载请注明出处。
由于业务特殊需要,不同的人员需要操作不同站点配置,分配具体权限以后,通过前台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

转载请注明:21运维 » 通过线上可视化web管理系统实现线上对linux服务器的nginx配置文件域名添加、修改等操作

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址