为了跳板机部署上线脚本写了公司生产上线脚本,供大家参考。上线脚本分为三个脚本组合,详细使用如例子 :
1.1 第一步 上传上线所需要 部署文件
- 提示:不管是使用XSHELL 还是 rz 将文件 上传,有旧文件需要删除
- –rw–r—r— 1 root root 1825172 Jul 11 18:20 jcj.zip
- –rw–r—r— 1 root root 72173147 Jul 11 18:20 goldadmin–1.0–SNAPSHOT.jar
- –rw–r—r— 1 root root 45052489 Jul 11 18:20 goldserver–1.0–SNAPSHOT.jar
- –rw–r—r— 1 root root 46552148 Jul 11 18:20 goldwap–1.0–SNAPSHOT.jar
1.2 第二步 执行 上线脚本
进入脚本目录(一定要用jcjuser用户)
[jcjuser@JCJ-MQ-3 devops]$ cd /home/jcjuser/shell/devops
[jcjuser@JCJ-MQ-3 devops]$ sh jcjops_deploy.sh
执行后可以根据自己需要,选择上线的应用 序列号。
1.1.1 例子:上线WAP1
提示:所有上线一定要根据流程走,从WAP1 再到WAP2,因为WAP2 之后会删除条本机/home/jcjuser/java/ 目录的文件。
提示:根据上线需求,选择自己需要上线的应用,
提示: 如果应用上线报错,或上线有问题会 显示提示并退。
详细走的流程
- 执行代码如下;
- [jcjuser@JCJ–MQ–3 devops]$ cd /home/jcjuser/shell/devops
- [jcjuser@JCJ–MQ–3 devops]$ sh jcjops_deploy.sh
- =============代码上线===========
- 1.WAP1 部署上线
- 2.WAP2 部署上线
- 3.SERVER1 部署上线
- 4.SERVER2 部署上线
- 5.ADMIN1 部署上线
- 6.ADMIN2 部署上线
- 7.NGINX1 部署上线
- 8.NINGX2 部署上线
- =============代码回滚===========
- 9.WAP1 代码回退
- 10.WAP2 代码回退
- 11.SERVER1 代码回退
- 12.SERVER2 代码回退
- 13.ADMIN1 代码回退
- 14.ADMIN2 代码回退
- 15.NGINX1 代码回退
- 16.NINGX2 代码回退
- 提示:输入需要上线的应用编号 please input num: 1
- please input y or n 上线确定是WAP1?: y 或 n 退出输入n ! y
- 确定后上线======================================================
- 第一步:目录存在.正在SCP——/home/jcjuser/java/goldwap–1.0–SNAPSHOT.jar
- 第二步:goldwap–1.0–SNAPSHOT.jar 文件存在,正在MV 到部署目录
- Stopping the goldwap ….OK!
- PID: 19835
- 第三步:goldwap–1.0–SNAPSHOT.jar 应用已停止成功
- 第四步:goldwap–1.0–SNAPSHOT.jar 开始部署
- total 222M
- –rw–r—r— 1 jcjuser jcjuser 45M Jul 7 11:27 2018–07–09_17_21_12
- –rw–r—r— 1 jcjuser jcjuser 45M Jul 9 16:10 2018–07–09_17_25_25
- –rw–r—r— 1 jcjuser jcjuser 45M Jul 10 20:48 goldwap–1.0–SNAPSHOT.jar_2018–07–11_19_18_26
- –rw–r—r— 1 jcjuser jcjuser 45M Jul 11 10:38 goldwap–1.0–SNAPSHOT.jar_2018–07–11_10_55_36
- –rw–r—r— 1 jcjuser jcjuser 45M Jul 11 19:18 goldwap–1.0–SNAPSHOT.jar
- 备份不需要删除
- Starting the goldwap ….OK!
- PID: 26777
- STDOUT: /home/jcjuser/logs/goldwap/goldwap.log
- 第五步:goldwap–1.0–SNAPSHOT.jar 查看状态: goldwap–1.0–SNAPSHOT.jar 服务START……
- jcjuser 26777 1 99 19:18 ? 00:00:02 /usr/local/jdk/bin/java –Xms256m –Xmx1g –Xss256k –Djava.awt.headless=true –Djna.nosys=true –Djava.net.preferIPv4Stack=true –Djava.util.Arrays.useLegacyMergeSort=true –Dfile.encoding=UTF–8 –XX:+UseParNewGC –XX:+UseConcMarkSweepGC –XX:CMSInitiatingOccupancyFraction=75 –XX:+UseCMSInitiatingOccupancyOnly –XX:+HeapDumpOnOutOfMemoryError –XX:+DisableExplicitGC –jar goldwap/target/goldwap–1.0–SNAPSHOT.jar
1.3.1 例子:回滚WAP1
- 回滚目录也是在/home/jcjuser/shell/devops
- [jcjuser@JCJ–MQ–3 devops]$ cd /home/jcjuser/shell/devops
- [jcjuser@JCJ–MQ–3 devops]$ sh jcjops_deploy.sh
- # 选择需要回滚的应用
到此 上线和回滚都完成了。
1.1 上线脚本代码(三部分)
1.1.1 代码一,执行脚本
- [jcjuser@JCJ–MQ–3 devops]$ cat jcjops_deploy.sh
- [jcjuser@JCJ–MQ–3 devops]$ cat jcjops_deploy.sh
- #!/bino/sh
- [ –f /etc/init.d/functions ] && . /etc/init.d/functions
- menu() {
- cat<> /home/jcjuser/logs/deploy/deploy.log
- 1.4.3 脚本三 执行脚本
- [root@JCJ–WEB–2 shell]# cat jcjops_nginx47.sh
- #!/bin/sh
- #########
- #积存金 nginx web 上线脚本
- #by xuebao 20180711
- #########
- TIME=$(date +%F_%H_%M_%S)
- NGINX_file=“/home/jcjuser/www”
- NGINX_www=“/www/”
- NIGNX_PID=`ps -ef|grep nginx|grep process|wc -l`
- NGINX_SH=” sh /home/jcjuser/shell/nginx_jcjuser.sh”
- start() {
- cd /home/jcjuser/shell/ && sh nginx_jcjuser.sh start
- }
- stop() {
- cd /home/jcjuser/shell/ && sh nginx_jcjuser.sh stop
- }
- reload() {
- sudo chown –R www.www /www/
- $NGINX_SH reload
- }
- status() {
- $NGINX_SH status
- }
- url_test() {
- NUM=`curl -s –head 10.254.197.100|sed -n 1p|awk -F’ ‘ ‘{print $2}’`
- if [[ $NUM != 200 ]];then
- echo –e “\033[32m ========================================================= \033[0m”
- echo –e “\033[41;37m ngixn url 检测有问题,请查看nginx \033[0m”
- echo –e “\033[32m =========================================================\033[0m”
- else
- echo –e “\033[32m ========================================================= \033[0m”
- echo “ngixn url 检测正常,上线成功”
- echo –e “\033[32m =========================================================\033[0m”
- fi
- ls –lrth /www/
- sudo netstat –lntlup|grep 80
- }
- nginx_scp() {
- APP_FILE2=“/home/jcjuser/www/jcj.zip”
- ssh jcjuser@10.254.197.61 “sh /home/jcjuser/shell/devops/jcjops_nginx47.sh”
- if [[ ! –f $APP_FILE2 ]];then
- echo –e “\033[41;37m 第二步:$APP_FILE2不存在,请查看 \033[0m”
- exit
- else
- echo –e “\033[32m 第二部 $APP_FILE2文件存在,正在MV 到部署目录 \033[0m”
- fi
- cd $NGINX_file && unzip jcj.zip >test.log
- mv dist/ jcj
- rm –fr jcj.zip
- }
- nginx_golive(){
- echo –e “\033[32m 第三步:$APP_NAME3 开始部署\033[0m”
- cd /www/ && sudo mv jcj jcj_$TIME
- cd /home/jcjuser/www/
- sudo mv jcj /www/
- # 删除删除 备份大于6份
- NUM2=`ls -lrth -d /www/jcj_*|wc -l`
- if [ $NUM2 –ge 6 ]
- then
- cd /www/ && ls –lrth –d /www/jcj_*|tail –2|xargs sudo rm –fr
- echo –e “\033[41;37m 备份大于6份自动删除2份 \033[0m”
- else
- echo –e “\033[31m 备份不需要删除 \033[0m”
- fi
- }
- # 回滚模块
- rollback(){
- cd /www/
- sudo mv $INPUT2 jcj
- ls –lrth –d jcj*
- }
- list() {
- cd /www/ && ls –lrth –d jcj_*
- }
- INPUT2=$2
- case $1 in
- golive)
- nginx_scp
- nginx_golive
- reload
- url_test
- ;;
- status)
- status
- ;;
- rollback)
- rollback $INPUT2
- reload
- url_test
- ;;
- list)
- list
- ;;
- *)
- echo –e “\033[41;37m sh /home/jcjuser/shell/jcjops_nginx46.sh {golive|rollback|list 提示:如果回滚前请查看列表} \033[0m”
- exit
- ;;
- esac
。
shell 上线脚本(跳板机部署版)
转载请注明:SuperIT » shell 上线脚本(跳板机部署版)