编译类语言代码上线
编译类语言代码上线
手动执行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

浙公网安备 33010602011771号