编译类语言代码上线

编译类语言代码上线

手动执行java代码上线(编译类语言)

1.创库

[root@tomcat01 /opt]# ls
SpringBootWeb SpringBootWeb.tar.gz
[root@tomcat01 /opt]# mv SpringBootWeb sbw
码云上新建个仓库
命令行创建库
[root@tomcat01 /opt/sbw]# git init
[root@tomcat01 /opt/sbw]# git add .
[root@tomcat01 /opt/sbw]# git commit -m "first commit"
[root@tomcat01 /opt/sbw]# git remote add origin git@gitee.com:meng_shi_yu/sbw.git
[root@tomcat01 /opt/sbw]# git push -u origin master

2.克隆

[root@tomcat01 /opt/sbw]# mkdir /code/
[root@tomcat01 /code]# git clone git@gitee.com:meng_shi_yu/sbw.git
[root@tomcat01 /code]# ls
sbw

3.编译成war包

[root@tomcat01 ~]# wget http://192.168.13.120/191118/jdk-8u102-linux-x64.rpm
[root@tomcat01 ~]# rpm -ivh jdk-8u102-linux-x64.rpm
[root@tomcat01 ~]# wget http://192.168.13.120/191118/apache-maven-3.6.1-bin.tar.gz
[root@tomcat01 ~]# tar xf apache-maven-3.6.1-bin.tar.gz -C /usr/local/
[root@tomcat01 ~]# ln -s /usr/local/apache-maven-3.6.1/ /usr/local/maven
[root@tomcat01 ~]# vim /etc/profile
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:$PATH
[root@tomcat01 ~]# source /etc/profile

4.打war包

[root@tomcat01 /code/sbw]# source /etc/profile
[root@tomcat01 /code/sbw]# vim /usr/local/maven/conf/settings.xml
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
加上这一段 差不多160行
[root@tomcat01 /code/sbw]# mvn clean package

5.web端配置

1 2 都做

[root@git_web01 ~]# systemctl stop nginx
[root@git_web01 /opt]# wget http://192.168.13.120/191118/jdk-8u102-linux-x64.rpm
[root@git_web01 /opt]# wget http://192.168.13.120/191118/apache-tomcat-8.0.27.tar.gz
[root@git_web01 /opt]# rpm -ivh jdk-8u102-linux-x64.rpm
[root@git_web01 /opt]# mkdir /app
[root@git_web01 /opt]# tar xf apache-tomcat-8.0.27.tar.gz -C /app
[root@git_web01 /opt]# /app/apache-tomcat-8.0.27/bin/startup.sh 

[root@git_web01 /opt]# cd /app/apache-tomcat-8.0.27/webapps
[root@git_web01 /app/apache-tomcat-8.0.27/webapps]# rm -rf *
[root@git_web01 /app/apache-tomcat-8.0.27/webapps]# scp -rp 10.0.0.77:/code/sbw/target/SpringBootWeb.war .

[root@git_web01 /app/apache-tomcat-8.0.27/webapps]# ls
SpringBootWeb  SpringBootWeb.war
[root@git_web01 /app/apache-tomcat-8.0.27/webapps]# mv SpringBootWeb.war ROOT.war
[root@git_web01 /app/apache-tomcat-8.0.27/webapps]# ls
ROOT  ROOT.war
正常上线此时需要重启一下tomcat
访问10.0.0.7:8080 成功

6.负载均衡来一波

[root@lb01 ~]# cat /etc/nginx/upstream_monitor 
server 10.0.0.7:8080;
server 10.0.0.8:8080;
[root@lb01 ~]# systemctl restart nginx
端口改一下就行
访问10.0.0.5 成功

7.源代码如果更新?

网站修改源代码

修改完别忘记创建标签

然后拉取到仓库

[root@tomcat01 /code/sbw]# git pull -u origin master --tags

8.拉取后编译推送

[root@tomcat01 /code/sbw]# mvn clean package
[root@tomcat01 /code/sbw]# scp -rp target/SpringBootWeb.war root@10.0.0.7:/code
推到7上面的code下 code下都是war包

为了控制版本实现回滚 重新给他们安排个目录 把v1标签的放在v1  现在推得v2放在v2
[root@git_web01 /app/apache-tomcat-8.0.27/webapps/ROOT]# mkdir /sbw/v1 -p
[root@git_web01 /app/apache-tomcat-8.0.27/webapps/ROOT]# cp -a * /sbw/v1
[root@git_web01 /sbw]# mkdir v2
[root@git_web01 /sbw]# ls
v1  v2
[root@git_web01 /sbw]# unzip /code/SpringBootWeb.war -d /sbw/v2  解压

9.软链接

[root@git_web01 /sbw/v2]# rm -rf /app/apache-tomcat-8.0.27/webapps/ROOT
先删除之前v1的软链接

[root@git_web01 /sbw/v2]# ln -s /sbw/v2 /app/apache-tomcat-8.0.27/webapps/ROOT
创建v2软链接

重启tomcat

如果创建软链接有问题 就把目录下文件都删除 第一时间创建软链接

[root@git_web01 /app/apache-tomcat-8.0.27/webapps]# rm -fr *
[root@git_web01 /app/apache-tomcat-8.0.27/webapps]# ln -s /sbw/v2 /app/apache-tomcat-8.0.27/webapps/ROOT
[root@git_web01 /app/apache-tomcat-8.0.27/webapps]# ll
total 0
lrwxrwxrwx 1 root root 7 Nov 22 09:58 ROOT -> /sbw/v2

另一台机器一模一样的操作

自动执行java代码上线(编译类语言)

简单脚本自动化代码上线

[root@tomcat01 /server/scripts]# cat javacodeOnline.sh 
#!/bin/bash

cd /code/sbw
git pull -u origin master --tags
git_version=`git tag|tail -1`
mvn clean package

if [ -f /opt/data/SpringBootWeb_${git_version}.war ];then
   echo "当前已经是$git_version版了"
   exit 6
fi

cp target/SpringBootWeb.war /opt/data/SpringBootWeb_${git_version}.war


for n in 7 8
do
scp -rp /opt/data/SpringBootWeb_${git_version}.war  root@10.0.0.$n:/code

ssh root@10.0.0.$n mkdir /sbw/${git_version}  -p
ssh root@10.0.0.$n  unzip /code/SpringBootWeb_${git_version}.war -d /sbw/${git_version}


ssh root@10.0.0.$n rm -fr /app/apache-tomcat-8.0.27/webapps/ROOT

ssh root@10.0.0.$n ln -s /sbw/${git_version} /app/apache-tomcat-8.0.27/webapps/ROOT

ssh root@10.0.0.$n "source /etc/profile &&  /app/apache-tomcat-8.0.27/bin/shutdown.sh && /app/apache-tomcat-8.0.27/bin/startup.sh"

done

简单自动化回滚脚本

[root@tomcat01 /server/scripts]# cat javarollback.sh 
#!/bin/bash
ver=$1
cd /code/sbw
all_tag=`git tag`

fanhuizhi=`echo $all_tag|grep -w -c $ver`

if [ ! $fanhuizhi -eq 1 ];then
   echo "请确认你输入的版本号是否存在!"
   exit 5
fi

for n in 7 8
do
ssh root@10.0.0.$n rm -fr  /app/apache-tomcat-8.0.27/webapps/ROOT
ssh root@10.0.0.$n ln -s /sbw/$ver  /app/apache-tomcat-8.0.27/webapps/ROOT
ssh root@10.0.0.$n "source /etc/profile &&  /app/apache-tomcat-8.0.27/bin/shutdown.sh && /app/apache-tomcat-8.0.27/bin/startup.sh"
done

两个加一起

[root@tomcat01 /server/scripts]# cat auto_Online_java.sh 
#!/bin/bash
menu(){
cat<<EOF
###############
1.代码升级
2.回滚到指定版本
3.查看版本列表
4.退出
###############
EOF
}
menu
read -p "请输入你要执行的编号:" num
case $num in
    1)
    /bin/bash  /server/scripts/javacodeOnline.sh   
    ;;
    2)
    read -p "请输入要回滚到的版本:" n
    /bin/bash  /server/scripts/javarollback.sh $n
    ;;
    3)
    cd /code/sbw && git tag
    ;;
    4)
    exit
    ;;
    *)
    echo "请按要求输入{1,2,3,4}"
esac
posted @ 2019-11-27 14:26  干瘪的柠檬  阅读(236)  评论(0)    收藏  举报