2019独角兽企业重金招聘Python工程师标准>>>

最近,又临近博主所负责的一个大型项目的发版了。之前有提到过,该项目涉及到50-60台服务器的发版。且项目客户规定发版需在晚上10-11点左右开始进行,这里博主不得不说每次发布最后都是眼花缭乱。

博主最近想了下,还是决定做些自动化发版的脚本;首先,在批量关闭服务器、批量重启服务器、批量延迟重启服务器、以及批量nginx重启、kill、reload方面都可以做成自动化脚本。当然,还有资源备份、代码备份等等。

自动化脚本来发版后,将一键关闭、重启所有tomcat,一键实现所有Nginx的downline、online、kill,一键备份代码(包括定时任务代码、普通服务器代码、接口服务器代码、消息服务器代码等),一键资源备份,一键数据库备份。当然,在执行自动化脚本之前,服务器必须先配置ssh免密登录。

通过上面的自动化脚本后,我们的整个发版过程就非常简单了:

(1)通过增量打包工具patch-generator-desk实现本次版本增量代码打包,具体参照patch-generator-desk打包软件

(2)使用xftp上传覆盖代码,由于打包出来是可以直接上传实现替换,故此步骤非常简单(此步骤已经编写自动化脚本实现代码发布,执行上传到脚本所在服务器的专用代码发布目录,执行脚本发布即可)

(3)一键执行代码备份脚本

(4)执行n_downline_ssh.sh脚本实现Nginx请求重写跳转

(5)执行一键关闭所有tomcat服务器脚本t_kill.sh

(6)执行资源文件以及数据库脚本一键备份的脚本

(7)执行一键启动所有tomcat服务器脚本t_start.sh/t_restart_delay.sh

(8)执行n_go_online_ssh.sh脚本实现Nginx重写加载非跳转配置实现上线

(9)校验本次发版内容完整性

(10)发版结束........

以下是自动化脚本内容:

代码备份相关脚本

t_xmp_code_backup.sh(代码备份)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 21:30:00
#function instruction: this shell use to backup tomcat ump code  ,use romote ssh commandfileNameStr=`date '+%Y_%m_%d_%H_%M_%S'`
SERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========start backup tomcat ump code  $SERVER $dat ===========
ssh root@$SERVER "nohup tar --exclude /opt/www/apache-tomcat-7.0.57/webapps/xmp/attached --exclude  /opt/www/apache-tomcat-7.0.57/webapps/xmp/download --exclude /opt/www/apache-tomcat-7.0.57/webapps/xmp/uploads  -zcvf /opt/backup/xmp${fileNameStr}.tar.gz /opt/www/apache-tomcat-7.0.57/webapps/xmp1>/opt/backup/xmpcodebackup.log 2>/dev/null \& ; exit;"
echo  ========start backup tomcat ump code  $SERVER success $dat===========
done
echo ==========自动化脚本任务执行完成==========

代码发布相关脚本( /opt/codepush/2018-11-02-05-42-01为发布文件

sh  t_code_push.sh  /opt/codepush/2018-11-02-05-42-01


#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-09-29 14:49:00
#function instruction: this shell use to code publish multiple tomcat go online,use remote scp commandSERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
tpath1=/opt/www/apache-tomcat-7.0.57_msg
tpath2=/opt/www/apache-tomcat-7.0.57
tpath3=/opt/www/apache-tomcat-7.0._export
tpath4=/opt/www/t1if [ ! -d "$1" ];then
echo "$1文件夹不存在"
exit 1
else
echo "本服务器文件夹存在即将进入发布流程"
fi
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========start code publish $SERVER $dat ===========
scp -r $1/* root@$SERVER:$tpath2/webapps/xmp/
if [ $SERVER = 10.x.x.xxx ]; then
scp -r $1/* root@$SERVER:$tpath1/webapps/xmp/
elif [ $SERVER = 10.x.x.xxx ]; then
scp -r $1/* root@$SERVER:$tpath3/webapps/xmp/
else
scp -r $1/* root@$SERVER:$tpath4/webapps/xmp/
fi
echo  ========start code publish $SERVER success $dat===========
done
echo ==========自动化脚本任务执行完成==========

版本回退相关脚本(此脚本需自己根据实际情况改动,/opt/coderollback/2018-03-06-23-14-15.tar.gz为之前脚本备份的代码)

sh t_code_rollback.sh /opt/coderollback/2018-03-06-23-14-15.tar.gz

#/bin/bash
cfile=$1
SERVERS=(10.x.x.xxx 10.x.x.xxx)
tfile=/opt/www/apache-tomcat-7.0.57
tpath1=/opt/www/apache-tomcat-7.0.57_msg
tpath2=/opt/www/apache-tomcat-7.0.57
tpath3=/opt/www/apache-tomcat-7.0._export
tpath4=/opt/www/t1
bkpath=/opt/rollback/
bkfilepath=${bkpath}code_roll_$(basename $cfile)
if [ ! -f "$1" ];then
echo "$1代码备份压缩文件不存在"
exit 1
else
echo "本服务器代码备份压缩文件存在即将进入版本回退流程"
fiecho ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
dodat=`date '+%Y-%m-%d %H:%M:%S'`echo  ========start code rollback tomcat $SERVER $dat ===========if [ $SERVER = 10.x.x.xxx  ]; thenecho '该服务器不支持'elsessh root@$SERVER "[ -d $bkpath ] && echo ok || mkdir -p $bkpath;exit;"scp -r $1 root@$SERVER:$bkfilepathssh root@$SERVER "cd $tfile/webapps/xmp;ls  | grep -v 'download'|grep -v 'uploads' |grep -v 'attached'| xargs  rm -rf;tar -zxvf $bkfilepath -C / ;exit;"fiecho  ========start code rollback tomcat $SERVER success $dat===========
done

数据库备份相关脚本

t_xmp_database_backup.sh(数据备份)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 21:30:00
#function instruction: this shell use to backup  xmp database ,use romote ssh command
SERVERS=(10.x.x.1xx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========start backup ump database  $SERVER $dat ===========
ssh -Tq root@$SERVER < /opt/www_auto_sh/t_remote_dbbackup.sh
echo  ========start backup xmp database  $SERVER success $dat===========
done
echo ==========自动化脚本任务执行完成==========

t_remote_dbbackup.sh(代码备份脚本调用的本地脚本到远程服务器执行)

#/bin/bash
fileNameStr=`date '+%Y%m%d_%H%M%S'`
nohup mysqldump -uxoox -p111111 xhexx_www > /opt/xherxx/dbbackup/xhexx_wcc${fileNameStr}.sql 2>/dev/null &

tomcat相关脚本

t_kill.sh(tomcat批量Kill脚本)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 12:30:00
#function instruction: this shell use to kill tomcat downline,use remote ssh commandSERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
#SERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========kill tomcat $SERVER $dat ===========
ssh root@$SERVER "ps -ef | grep '/opt/www/apache-tomcat-7.0.57\|/opt/www/t1\|/opt/www/apache-tomcat-7.0._export' | grep -v grep | awk '{print \$2}'| xargs kill;exit;"
echo  ========kill tomcat $SERVER success $dat===========
done
echo ==========自动化脚本任务执行完成==========

t_restart.sh(批量重启tomcat脚本)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 12:30:00
#function instruction: this shell use to restart multiple  tomcat go online,use remote ssh commandSERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
#SERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========kill tomcat $SERVER $dat ===========
ssh root@$SERVER "ps -ef | grep '/opt/www/apache-tomcat-7.0.57\|/opt/www/t1\|/opt/www/apache-tomcat-7.0._export' | grep -v grep | awk '{print \$2}'| xargs kill;exit;"
echo  ========kill tomcat $SERVER success $dat===========
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========start tomcat $SERVER $dat ===========
if [ $SERVER = 10.x.x.xxx ]; then
ssh root@$SERVER "/opt/www/apache-tomcat-7.0.57/bin/startup.sh ;/opt/www/apache-tomcat-7.0.57_msg/bin/startup.sh;exit;"
elif [ $SERVER = 10.x.x.xxx ]; then
ssh root@$SERVER "/opt/www/apache-tomcat-7.0.57/bin/startup.sh;/opt/www/apache-tomcat-7.0._export/bin/startup.sh;exit;"
else
ssh root@$SERVER "/opt/www/apache-tomcat-7.0.57/bin/startup.sh;/opt/www/t1/bin/startup.sh;exit;"
fi
echo  ========start tomcat $SERVER success $dat===========
done
echo ==========自动化脚本任务执行完成==========

t_restart_delay_new.sh(批量延时重启tomcat脚本)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 12:30:00
#function instruction: this shell use to restart multiple tomcat go online,use remote ssh commandinterval_time=10s
if [ "$1" ]; thenecho ===========成功设置延迟启动时间设置为:$1s===================interval_time=$1
elseecho ===========默认设置延迟启动时间设置为:${interval_time}s===================
fi
SERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
#SERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
i=1
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========kill tomcat $SERVER $dat ===========
ssh root@$SERVER "ps -ef | grep '/opt/www/apache-tomcat-7.0.57\|/opt/www/t1\|/opt/www/apache-tomcat-7.0._export' | grep -v grep | awk '{print \$2}'| xargs kill;exit;"
echo  ========kill tomcat $SERVER success $dat===========
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========start tomcat $SERVER $dat ===========
if [ $SERVER = 10.x.x.1x5 ]; then
ssh root@$SERVER "/opt/www/apache-tomcat-7.0.57/bin/startup.sh ;/opt/www/apache-tomcat-7.0.57_msg/bin/startup.sh;exit;"
elif [ $SERVER = 10.x.x.1x6 ]; then
ssh root@$SERVER "/opt/www/apache-tomcat-7.0.57/bin/startup.sh;/opt/www/apache-tomcat-7.0._export/bin/startup.sh;exit;"
else
ssh root@$SERVER "/opt/www/apache-tomcat-7.0.57/bin/startup.sh;/opt/www/t1/bin/startup.sh;exit;"
fi
echo  ========start tomcat $SERVER success $dat===========if [[ "$i" -lt ${#SERVERS[@]} ]]; thenecho  ========sleep ${interval_time}=======sleep ${interval_time}filet "i++"
done
echo ==========自动化脚本任务执行完成==========

t_start.sh(批量启动tomcat脚本)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 12:30:00
#function instruction: this shell use to start tomcat go online,use romote ssh commandSERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
#SERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========start tomcat $SERVER $dat ===========
if [ $SERVER = 10.x.x.1x5 ]; then
ssh root@$SERVER "/opt/www/apache-tomcat-7.0.57/bin/startup.sh ;/opt/www/apache-tomcat-7.0.57_msg/bin/startup.sh;exit;"
elif [ $SERVER = 10.x.x.1x6 ]; then
ssh root@$SERVER "/opt/www/apache-tomcat-7.0.57/bin/startup.sh;/opt/www/apache-tomcat-7.0._export/bin/startup.sh;exit;"
else
ssh root@$SERVER "/opt/www/apache-tomcat-7.0.57/bin/startup.sh;/opt/www/t1/bin/startup.sh;exit;"
fi
echo  ========start tomcat $SERVER success $dat===========
done
echo ==========自动化脚本任务执行完成==========

nginx相关脚本

n_downline_ssh.sh(nginx批量下线脚本)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 21:40:00
#function instruction: this shell use to multiple nginx downline,use remote ssh commandSERVERS=(10.x.x.xxx)
#SERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo ============执行$SERVER nginx下线任务 $dat==============
ssh -Tq root@$SERVER < /opt/www_auto_sh/n_remote_downline.sh
echo ============执行$SERVER nginx下线任务完成,成功下线 $dat==============
done

n_go_online_ssh.sh(nginx批量上线脚本)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 21:40:00
#function instruction: this shell use to multiple nginx go online,use remote ssh commandSERVERS=(10.x.x.xxx)
#SERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo ============执行$SERVER nginx上线任务 $dat============
ssh -Tq root@$SERVER < /opt/www_auto_sh/n_remote_online.sh
echo ============执行$SERVER nginx上线任务完成,成功上线 $dat============
done

n_kill_ssh.sh(nginx批量Kill脚本)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 21:40:00
#function instruction: this shell use to multiple nginx kill,use remote ssh commandSERVERS=(10.x.x.xxx)
#SERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo ============执行$SERVER nginx kill任务 $dat==============
ssh  root@$SERVER "ps -ef | grep 'nginx' | grep -v grep | awk '{print \$2}'| xargs kill;exit;"
echo ============执行$SERVER nginx kill任务完成,成功kill $dat==============
done

n_start_ssh.sh(nginx批量start脚本)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 21:40:00
#function instruction: this shell use to multiple nginx kill,use remote ssh commandSERVERS=(10.x.x.xxx)
#SERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo ============执行$SERVER nginx start任务 $dat==============
ssh  root@$SERVER "/usr/local/nginx/sbin/nginx ; exit;"
echo ============执行$SERVER nginx start任务完成,成功start $dat==============
done

n_remote_downline.sh(n_downline_ssh.sh调用的本地脚本到远程执行)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 21:40:00
#function instruction: this shell use to multiple nginx downline,use remote ssh commandc1=`netstat -antp |grep -v grep |grep nginx |wc -l`
echo $c1
cp /usr/local/nginx/conf/nginx_downline.conf /usr/local/nginx/conf/nginx.conf
if [ $c1 -eq 0 ]; then/usr/local/nginx/sbin/nginx
else/usr/local/nginx/sbin/nginx -s reload
fi

n_remote_online.sh(n_go_online_ssh.sh调用的本地脚本到远程执行)

#/bin/bash
#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-07-7-31 21:40:00
#function instruction: this shell use to multiple nginx go online,use remote ssh commandc1=`netstat -antp |grep -v grep |grep nginx |wc -l`
echo $c1
rm -rf /usr/local/nginx/conf/nginx.conf;
cp /usr/local/nginx/conf/nginx_go_online.conf /usr/local/nginx/conf/nginx.conf;
if [ $c1 = 0 ]; then  /usr/local/nginx/sbin/nginx
else/usr/local/nginx/sbin/nginx -s reload
fi
exit

n_restart_ssh.sh(nginx重启脚本)

#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-08-01 21:30:00
#function instruction: this shell use to restart multiple nginx go online,use remote ssh commandSERVERS=(10.x.x.xxx 10.x.x.xxx 10.x.x.xxx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========kill nginx $SERVER $dat ===========
ssh root@$SERVER "ps -ef | grep nginx | grep -v grep | awk '{print \$2}'| xargs kill;exit;"
echo  ========kill nginx $SERVER success $dat===========
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========start nginx $SERVER $dat ===========
ssh  root@$SERVER "/usr/local/nginx/sbin/nginx ; exit;"
echo  ========start nginx $SERVER success $dat===========
done
echo ==========自动化脚本任务执行完成==========

n_restart_delay_ssh.sh(nginx延迟重启脚本)

#version: 1.0.0
#author: aaron
#email: 592235961@qq.com
#create time: 2018-08-01 21:30:00
#function instruction: this shell use to restart multiple nginx go online,use remote ssh command
interval_time=60s
if [ "$1" ]; thenecho ===========成功设置延迟启动时间设置为:$1s===================interval_time=$1
elseecho ===========默认设置延迟启动时间设置为:${interval_time}s===================
fi
i=1
SERVERS=(1x.x.x.xxx 10.x.x.xxx)
#SERVERS=(1x.x.x.xxx 10.x.x.xxx 1x.x.x.xxx)
echo ==========总共${#SERVERS[@]}台服务器==========
for SERVER in ${SERVERS[@]}
do
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========kill nginx $SERVER $dat ===========
ssh root@$SERVER "ps -ef | grep nginx | grep -v grep | awk '{print \$2}'| xargs kill;exit;"
echo  ========kill nginx $SERVER success $dat===========
dat=`date '+%Y-%m-%d %H:%M:%S'`
echo  ========start nginx $SERVER $dat ===========
ssh  root@$SERVER "/usr/local/nginx/sbin/nginx ; exit;"
echo  ========start nginx $SERVER success $dat===========if [[ "$i" -lt ${#SERVERS[@]} ]]; thenecho  ========sleep ${interval_time}=======sleep ${interval_time}
fi
let "i++"
done
echo ==========自动化脚本任务执行完成==========

最后总结,由于博主其它数据资源备份脚本还没写好,今天先写到这里,其它脚本后续将补充到此篇文章。以上是博主本次文章的全部内容,如果大家觉得博主的文章还不错,请点赞;如果您对博主其它服务器技术或者博主本人感兴趣,请关注博主博客,并且欢迎随时跟博主沟通交流。

转载于:https://my.oschina.net/u/2371923/blog/1920540

大型项目linux自动化版本发布脚本(shell)之tomcat、nginx服务脚本相关推荐

  1. nginx 服务脚本编写模板

    编写nginx服务脚本:脚本内容如下:[root@www ~]# cat /etc/init.d/nginx #!/bin/bash # nginx Startup script for the Ng ...

  2. 标杆徐linux云计算视频,标杆徐2018 Linux自动化运维系列④: Shell脚本自动化编程实战...

    2019年录制SHell新课地址 贴切企业脚本编写思路讲解,带你玩Shell脚本编程实战. 本套课程从实际项目案例出发,近100个Shell实例讲解,由浅入深,循序渐进,带你玩转Shell编程的方方面 ...

  3. linux每个版本发布时间,Ubuntu 21.04各版本的发布时间公布和计划功能介绍

    本文介绍Ubuntu 21.04(代号是Hirsute Hippo)各版本的发布时间和计划推出的功能. 具体发布时间公布 以下是Ubuntu 21.04 Hirsute Hippo各种版本的推出时间, ...

  4. linux各版本的发布时间,linux服务器-红帽企业Linux各个版本发布时间和内核版本...

    Red Hat Enterprise Linux 7 发布/更新 GA版本 发布堪误时间 内核版本 RHEL 7 Update 2 TBA TBA TBA RHEL 7 Update 1 2015-0 ...

  5. java bat 启动脚本_解析Tomcat的启动脚本--catalina.bat

    概述 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat 上一篇咱们分析了 startup.bat 脚本 这一篇咱们来分析 ca ...

  6. 即时通讯(IM)开源项目OpenIM重构版本发布- v2.0.0

    介绍 OpenIM开发团队花费了2个月时间,加班加点对代码进行了局部重构,优化代码结构,规范代码开发流程,为社区未来深度参与开发打好基础.由于改动较大,涉及大量的测试工作,并且还有打包 发布 等一些琐 ...

  7. 即时通讯(IM)开源项目OpenIM本周版本发布- v1.0.7-web端一键部署

    介绍 OpenIM:由前微信技术专家打造的基于 Go 实现的即时通讯(IM)开源项目,包括IM服务端和客户端SDK.开发者私有化部署,基于SDK二次开发,可以轻松替代第三方IM云服务,打造具备聊天.社 ...

  8. linux shell 版本信息,查看各种Linux系统版本信息的Shell命令

    几种查看Linux版本信息的方法: 1. uname -a 2. cat /proc/version 3. cat /etc/issue 4. lsb_release -a 详解 lsb_releas ...

  9. 机电项目统计工具版本发布

    目前最新的版本为:数字工具v6.0 2023.5.12:机电项目统计工具v6.0 1.各个报表新增统计项 2023.5.12:机电项目统计工具v5.5 1.更新ME3S代码 2023.3.18:机电项 ...

最新文章

  1. 【J2SE】学习基础
  2. sharepoint 备份还原
  3. java用户输入解析_Java中的3种输入方式实现解析
  4. CI 扩展 Service
  5. 集合2--毕向东java基础教程视频学习笔记
  6. linux ttyusb读写_linux下非root用户获得devttyUSB0的读写权限
  7. 安装ubuntu20.4+gtx1050+cuda11.3
  8. 专栏 | 基于 Jupyter 的特征工程手册:特征选择(四)
  9. 网络流题目详讲+题单(提高版)(持续更新中......)
  10. 蜡笔小新里的钢达姆机器人怎么画_写字机器人好用吗? 组装就花了5个小时 还要学习软件、录入字体...
  11. Mybatis报错:nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘XXX‘ not found
  12. JS实战 · 复选框全选操作
  13. mongoose Topology was destroyed 处理
  14. rman 备份后恢复整个数据库文件的操作
  15. 实战技巧:Python爬取OEM 12C上的告警信息并推送至微信企业号
  16. IIS添加对ashx文件的支持
  17. 拼多多sdk php,学习猿地-【扩展分享】拼多多 API SDK【拼多多开放平台】
  18. 专业词汇及解释(持续更新,自用)
  19. 软件项目架构简单总结
  20. Duplicate Symbols for Architecture解决办法

热门文章

  1. 【8-22】java学习笔记04
  2. Hello world cpp之旅 - 字符串(1)
  3. 来自 Dropbox 的可扩展性设计经验
  4. MySql noinstall-5.1.34-win32 配置
  5. 解决UBUNTU FLASH下显示中文为口的办法
  6. docker存储驱动模式之direct-lvm配置
  7. 自己来实现一套IOC注解框架
  8. mysqlbinlog unknown variable:default-character-set=gbk
  9. 一个资源管理系统的设计--基于cgroup机制
  10. 剑指OFFER之用两个栈实现队列(九度OJ1512)