第一部分:功能介绍相关命令介绍

功能描述:Windows开发环境部署生成Liunx环境,上传文件至特定目录,执行相关Shell命令。
plink及pscp工具均为Putty工具包产品分别用于执行Shell命令及上传文件使用

1
2
3
# 下载地址如下:
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
下载.tar.gz: putty-0.73.tar.gz

第二部分:相关Shell文件

Windows上传Linux服务器并执行Shell的Dos脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
REM 声明采用UTF-8编码
chcp 65001
set project_path=Jar文件所在目录
set local_file=上传Jar文件名称,如果多个使用空格隔开
set deploy-shell=Linux服务器上执行部署的Shell

set server_user=Linux用户名
set server_passwd=Linux密码
set server_ip=Linux服务器IP地址

echo ---------------------------------------------- upload file to server
call pscp.exe -l %server_user% -pw %server_passwd% -r %local_file% %server_ip%:%project_path%
echo -----------upload success---------------------
echo ---------------------------------------------- execute %deploy-shell%
call plink.exe -pw %server_passwd% %server_user%@%server_ip% "%deploy-shell%"
echo -----------execute success---------------------
pause

Linux服务器部署备份处理日志Shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/sh

JAVA_HOME=/usr/java/jdk1.8.0_202;
PATH=$JAVA_HOME/bin:$PATH;

spring_prod="prod"; #生产环境
app_jar=""; #运行jar或者war
jar_bak_dir=""; #jar或者war备份地址
deploy_dir=""; #部署准备目录

# 第一步设置环境变量
export JAVA_HOME;
export PATH;

# 第二部杀掉进程、部署、生成备份日志文件

kill_java_pid(){
jar_path=$1; #java部署目录
# 找到java的进程id
java_pid=$(ps -ef | grep "$app_jar" | grep -v grep | awk '{print $2}' |tr -s '\n' ' ')
if [ "$java_pid" ];then
echo "发现java进程pid:$java_pid";
# 杀掉tomcat进程
if
kill -9 $java_pid;
then
echo "杀掉java进程pid:$java_pid成功...";
else
echo "杀掉java进程失败...";
fi
else
echo "java进程不存在或者已经被杀死...";
fi
}


#将jar或者war生成的catalina.out 添加系统 logrotate
bak_log_config(){
if [ -d "/etc/logrotate.d/" ];then
if [ -f "/etc/logrotate.d/customize" ]; then
echo "logrotate 配置文件已经存在... 终止";
else
# logrotate catalina.out
cat > /etc/logrotate.d/customize << EOF
${jar_bak_dir}/catalina.out {
su root list
daily
rotate 5
missingok
dateext
compress
notifempty
copytruncate
}
EOF
fi
else
echo "没有发现logrotate... 终止";
fi
}

deploy_java(){
cd "$deploy_dir"; #跳转至准备部署目录
# -f 参数判断 app_jar 是否存在
if [ -f "$app_jar" ]; then
kill_java_pid "$jar_bak_dir";
cp "$jar_bak_dir/$app_jar" "$jar_bak_dir/$app_jar.`date '+%Y%m%d%H%M%S'`"; #备份原有代码
echo "备份$app_jar成功...";
if [ "$deploy_dir" != "$jar_bak_dir" ]; then
cp "$app_jar" "$jar_bak_dir";
fi
nohup java -Dspring.profiles.active=$spring_prod -Xms128m -Xmx128m -Xss512K -XX:PermSize=128m -XX:MaxPermSize=256m -jar "$jar_bak_dir/$app_jar" >> "$jar_bak_dir/catalina.out" 2>&1 &
echo "部署$app_jar成功...";
bak_log_config;
else
echo "没有找到$app_jar请先上传文件...";
fi
}

deploy_java; #部署