deploy-tool.sh
3.97 KB
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/usr/bin/env bash
#############
# 备份服务器上的生产环境基础配置
# $1: 服务器IP
# $2: 新框架配置名称
# $3: 备份版本号
# $4: 部署生产目录
# $5: 部署备份目录
# $6: 应用名称
#############
function tool_backup() {
echo "备份----创建备份目录"
ssh root@$1 "mkdir -p $5 && cd $5 && pwd"
# 新框架配置打包名称
config_name="$2$3"
target_dir="$4/$6"
echo "备份----备份新框架配置,并移动到备份目录:$5"
ssh root@$1 "mkdir -p ${target_dir} && chmod -R 755 ${target_dir} && cd ${target_dir} && find . -name '*.php'|grep Conf/|xargs tar -cvzf ${config_name} && mv -f ${config_name} $5"
echo "备份结束"
}
#############
# 打包工程代码,并发布到临时目录
# $1: 发布工程目录
# $2: 源码包名称
# $3: 服务器IP
# $4: 临时目录
# $5: 应用目录
#############
function tool_pack() {
handle_temp_directory $4 $2 $3 $1 $5
echo "打包结束"
}
#############
# 发布生产目录
# $1:服务器IP
# $2: 源码包名称
# $3: 临时目录
# $4: 部署目录
# $5: 框架配置
# $6: 备份文件版本号
# $7: 生产环境备份目录
# $8: 发布工程目录
# $9: 应用目录
#############
function tool_deploy() {
echo "发布----将备份目录中的线上配置拷贝到临时目录"
ssh root@$1 "cp -rf $7/$5$6 $3"
echo "发布----解压项目源码: $2"
ssh root@$1 "cd $3 && tar -zxvf $2 1>/dev/null"
echo "发布----解压框架线上配置文件:$5$6$"
ssh root@$1 "cd $3 && tar -zxvf $5$6 -C trunk/$9"
echo "发布----将临时目录中的文件拷贝并覆盖到生产目录:$4"
ssh root@$1 "cp -rf $3/trunk/* $4/"
echo "删除ThinkPHP数据库字段缓存"
ssh root@$1 "find $4/Common/Runtime/Apps/$9 -name '_fields'|xargs rm -rf"
# 获取目录列表
cd $8
config_d="trunk"
# 删除临时文件
for file in `ls ${config_d}`
do
if [ -d "${config_d}/$file/Common/Conf.bak" ]
then
echo "删除 rm -f ${file}/Common/Conf/debug.php"
ssh root@$1 "cd $4 && rm -f ${file}/Common/Conf/debug.php"
echo "删除 rm -f ${file}/Runtime/common~runtime.php"
ssh root@$1 "cd $4 && rm -f ${file}/Runtime/common~runtime.php"
echo "删除 rm -f ${file}/Runtime/Data/_fields/*.php"
ssh root@$1 "cd $4 && rm -f ${file}/Runtime/Data/_fields/*.php"
fi
done
echo "发布结束"
}
#############
# 创建框架的config目录、将bak的配置文件拷贝到config目录下
# 打包后将源码发布到服务器上的临时目录中
# $1: 临时目录
# $2: 源码包名称
# $3: 服务器IP
# $4: 发布工程目录
# $5: 应用目录
#############
function handle_temp_directory() {
cd "$4"
# 处理框架Conf目录配置
copy_conf_dir $4 $5
echo "打包----目录: $2"
tar -czvf $2 trunk/$5 1>/dev/null
echo "打包----创建临时目录:$1"
ssh root@$3 "mkdir -p $1 && cd $1 && pwd"
echo "打包----清空临时目录:$1"
ssh root@$3 "rm -rf $1/*"
echo "打包----从发布目录中将打包文件:$2 拷贝到 $3 下的临时目录:$1 中"
scp -r $2 root@$3:$1/$2
}
#############
# 创建框架Conf目录、将Conf.bak/下的文件拷贝到Conf中
# $1: 发布工程目录
#############
function copy_conf_dir() {
echo "打包----处理框架Conf目录配置"
cd $1
config_d="trunk"
for file in `ls ${config_d}`
do
if [ -d "${config_d}/$file/Common/Conf.bak" ]
then
if [[ "" = $2 || $file = $2 ]]; then
echo "修改配置目录 ${config_d}/$file/Common/Conf.bak"
mkdir -p "${config_d}/$file/Common/Conf"
cp -rf ${config_d}/${file}/Common/Conf.bak/* "${config_d}/$file/Common/Conf/"
fi
fi
done
# ThinkPHP
if [[ "" = $2 || "ThinkPHP" = $2 ]]
then
mkdir -p "trunk/ThinkPHP/Conf"
cp -rf trunk/ThinkPHP/Conf.bak/* trunk/ThinkPHP/Conf/
fi
}