侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

服务器部署shell脚本

2023-11-29 星期三 / 0 评论 / 0 点赞 / 44 阅读 / 8440 字

我们的WEB是用的DUBBO,controller层rpc调用的service的方法,controller的部署方法跟Service不太一样,因为controller属于暴露的接口,需要关联nginx

我们的WEB是用的DUBBO,controller层rpc调用的service的方法,controller的部署方法跟Service不太一样,因为controller属于暴露的接口,需要关联nginx。Service层做了业务拆分所以有DUBBO启动,也有tomcat启动,但是基本套路都是一样的:先让tomcat或者dubbo编译成class文件,在用rsync 同步到各个服务器就好了,最后ping一下index.jsp 反没返回200,完活。

结构目录:

先上个controller层的:

#!/bin/bash### init configexport LANG=en_US.UTF-8export LC_ALL=en_US.UTF-8source /etc/profile#!/bin/bash#各种路径按照自己路径改一下就行PRE_DIR=`dirname $0`PROJECT_DIR=/data/web/hf_app/build.clubPROJECT_NAME=tigerPROJECT_CLUB=tiger/tiger-club/tiger-club-providerDOC_ROOT=$PROJECT_DIR/ROOTWAR_FILE=$PROJECT_DIR/$PROJECT_CLUB/target/tiger-club.warTOMCAT=/usr/local/app/club-tomcatDATE=`date "+%Y%m%d%H%M%S"`STR_DATE=`date "+%s"`backup="backup"#backuptar -zcvf ROOT."$DATE".tar.gz $PROJECT_DIR/ROOTmv ROOT.$DATE.tar.gz $backup/#deployechoecho Deploy:echocd $PROJECT_DIR/$PROJECT_NAMEgit clean -d -fxgit checkout mastergit pullif [ ! -z $1 ]then    git branch -D test    git fetch ssh://xxxx(git地址)   /tiger refs/changes/$1 && git checkout FETCH_HEAD    git checkout -b testelse    git  checkout online_161216    git pull    git branch -D test    git checkout -b testfimvn clean package -DskipTests -U rm -rf $PROJECT_DIR/ROOTmkdir -p  $PROJECT_DIR/ROOTunzip -q $WAR_FILE -d $PROJECT_DIR/ROOTcp $PROJECT_DIR/config-toolkit.properties $DOC_ROOT/WEB-INF/classes/properties#这里主要是防止配置文件更改带来的麻烦,先在目录下做一个线上环境的配置文件,这样无论提交的是什么都会覆盖掉,保证一个安全#find $PROJECT_DIR/ROOT -name "*.vm" |xargs sed -i 's/szone/'$STR_DATE'/g'#restart tomcat#echoecho Restart tomcat:ps aux |grep -v grep |grep $TOMCAT|awk '{print $2}'|xargs kill -9rm -rf $TOMCAT/work/Catalina# sleep 10secho "Waiting shutdown Tomcat, Sleep 10s..."sleep 10secho "Start to startup Tomcat..."$TOMCAT/bin/startup.sh

这样controller 就变成了class文件,再去同步到各个机器上:

#!/bin/bashPROJECT="wolfapi"DST_SERVER="0.0.0.1,0.0.0.2"(同步IP)SRC_SERVER="0.0.0.1"(本机IP)NGX_UPSTREAM_CONF="/usr/local/app/nginx/conf/vhosts/upstream.conf"NGX_UPSTREAM="api"DST_PORT="8071"DEPLOY_PATH="/data/web/hf_app/build.wolfapi/ROOT/"TARGET_CONFIG_PATH="/data/web/hf_app/build.wolfapi/ROOT/WEB-INF/classes/"SOURCE_CONFIG_PATH="hefan/build.wolfapi/sync/dubbo.properties"RSYNC_PATH="hefan/build.wolfapi/ROOT/"TOMCAT="/usr/local/app/tomcat/"RETURN_CODE="200"PORT="1922"nginx(){line_num=`ssh -t -p $PORT  $2 "cat $NGX_UPSTREAM_CONF  -n |sed  -n '/$NGX_UPSTREAM/,/}/ p'|grep 127.0.0.1"|awk '{print $1}'`case $1 in        up)		server="server 127.0.0.1:$DST_PORT;"		ssh -t -p $PORT $2 "sed '$line_num s/.*/$server/' $NGX_UPSTREAM_CONF -i"        ;;        down)		server="server 127.0.0.1:$DST_PORT down;"		ssh -t -p $PORT $2 "sed '$line_num s/.*/$server/' $NGX_UPSTREAM_CONF -i"        ;;esacssh -t -p $PORT $2 "/usr/local/app/nginx/sbin/nginx -s reload "}### sync file to server### $1 for dst server ip addrsync(){	ssh -t -p $PORT $1 "rsync -avP --delete $SRC_SERVER::$RSYNC_PATH $DEPLOY_PATH; /		rsync -avP --delete $SRC_SERVER::$SOURCE_CONFIG_PATH $TARGET_CONFIG_PATH"}### restart tomcat### $1 for dst server ip addrrestart(){	ssh -t -p $PORT $1 "ps aux |grep -v grep |grep $TOMCAT|awk '{print /$2}'|xargs kill -9 "	ssh -p $PORT $1 "source /etc/profile ; $TOMCAT/bin/startup.sh"}### success checkcheck(){        STATUS=1        for i in `seq 1 60`;do                code=`curl -I http://$1:$DST_PORT/index.jsp --connect-timeout 2|grep HTTP|awk '{print $2}' 2>/dev/null`                if [ $code -eq $RETURN_CODE ];then                        STATUS=0                        break                else			echo "$1 tomcat has not started , please wait............"                        sleep 1                fi        done}check_compile_status(){	if [ "`ls -A $DEPLOY_PATH`" = "" ]; then		echo "$DEPLOY_PATH is indeed empty"		exit 1	else		echo "$DEPLOY_PATH is not empty, go on..."	fi}### script startfor IP in $DST_SERVER;do	check_compile_status        nginx down $IP        sync $IP        restart $IP        check $IP        if [ $STATUS -eq 0 ];then                nginx up $IP        else                echo "fuck u"                #echo $1 $IP sync error |mail -s "Sync error" [email protected]  -- -f [email protected] -F ""        fidone

同步的时候多了一个关于nginx 的配置,service层一个原理,只是不用陪Nginx,如果使用dubbo启动的话就是maven命令去编译成class文件,只不过不能去验证起没启动.

同样的结构:

service层:

#!/bin/bash### init configexport LANG=en_US.UTF-8export LC_ALL=en_US.UTF-8source /etc/profile#!/bin/bashPRE_DIR=`dirname $0`PROJECT_DIR=/data/web/hf_app/build.clubPROJECT_NAME=tigerPROJECT_CLUB=tiger/tiger-club/tiger-club-providerDOC_ROOT=$PROJECT_DIR/ROOTWAR_FILE=$PROJECT_DIR/$PROJECT_CLUB/target/tiger-club.war#TOMCAT=/usr/local/app/club-tomcatDATE=`date "+%Y%m%d%H%M%S"`STR_DATE=`date "+%s"`backup="backup"#backuptar -zcvf ROOT."$DATE".tar.gz $PROJECT_DIR/ROOTmv ROOT.$DATE.tar.gz $backup/#deployechoecho Deploy:echocd $PROJECT_DIR/$PROJECT_NAMEgit clean -d -fxgit checkout mastergit pullif [ ! -z $1 ]then    git branch -D test    git fetch ssh://xxx.xxx refs/changes/$1 && git checkout FETCH_HEAD    git checkout -b testelse    git  checkout qa    git pull    git branch -D test    git checkout -b testfimvn clean package -DskipTests -U rm -rf $PROJECT_DIR/ROOTmkdir -p  $PROJECT_DIR/ROOTunzip -q $WAR_FILE -d $PROJECT_DIR/ROOTcp $PROJECT_DIR/config-toolkit.properties $DOC_ROOT/WEB-INF/classes/properties#find $PROJECT_DIR/ROOT -name "*.vm" |xargs sed -i 's/szone/'$STR_DATE'/g'#restart tomcat#echoecho Restart tomcat:ps aux |grep -v grep |grep $TOMCAT|awk '{print $2}'|xargs kill -9#rm -rf $TOMCAT/work/Catalina# sleep 10secho "Waiting shutdown Tomcat, Sleep 10s..."sleep 10secho "Start to startup Tomcat..."$TOMCAT/bin/startup.sh

service同步:

#!/bin/bashPROJECT="club"DST_SERVER="10.45.141.129"SRC_SERVER="10.51.120.132"DST_PORT="8055"DEPLOY_PATH="/data/web/hf_app/build.club/ROOT/"TARGET_CONFIG_PATH="/data/web/hf_app/build.club/ROOT/WEB-INF/classes/"SOURCE_CONFIG_PATH="hefan/build.club/sync/config-toolkit.properties"RSYNC_PATH="hefan/build.club/ROOT/"TOMCAT="/usr/local/app/tomcat/"RETURN_CODE="200"PORT="1922"### sync file to server### $1 for dst server ip addrsync(){	ssh -t -p $PORT $1 "rsync -avP --delete $SRC_SERVER::$RSYNC_PATH $DEPLOY_PATH; /		rsync -avP --delete $SRC_SERVER::$SOURCE_CONFIG_PATH $TARGET_CONFIG_PATH"}### restart tomcat### $1 for dst server ip addrrestart(){	ssh -t -p $PORT $1 "ps aux |grep -v grep |grep $TOMCAT|awk '{print /$2}'|xargs kill -9 "	ssh -p $PORT $1 "source /etc/profile ; $TOMCAT/bin/startup.sh"}### success checkcheck(){        STATUS=1        for i in `seq 1 60`;do                code=`curl -I http://$1:$DST_PORT/index.jsp --connect-timeout 2|grep HTTP|awk '{print $2}' 2>/dev/null`                if [ $code -eq $RETURN_CODE ];then                        STATUS=0                        break                else			echo "$1 tomcat has not started , please wait............"                        sleep 1                fi        done}check_compile_status(){	if [ "`ls -A $DEPLOY_PATH`" = "" ]; then		echo "$DEPLOY_PATH is indeed empty"		exit 1	else		echo "$DEPLOY_PATH is not empty, go on..."	fi}### script startfor IP in $DST_SERVER;do	check_compile_status        sync $IP        restart $IP        check $IP        if [ $STATUS -eq 0 ];then        	echo "$IP $PROJECT gkd_application started....."	else                echo "fuck u"        fidone

git 地址:https://git.oschina.net/abstergo/shell-linux

广告 广告

评论区