应用maven自动部署的脚本
@(编程)
最近写了一个自动部署的脚本,可以一键部署到测试服务器或者生产服务器上,包括一个函数脚本和一个调用脚本,比较简单,记录如下。
特点如下:
- 部署前自动备份
- 可以部署tomcat项目和java项目
- 支持参数,可以部署测试环境和生产环境
function.sh
#!/bin/bash
##author:zch
##date:20171116
host=192.168.163.50
if [ "$1"x = "online"x ]; then
host=111.111.111.111
echo "host is 111.111.111.111"
else
host=192.168.163.50
echo "host is 192.168.163.50"
fi
##远程调用,传入参数
remote_call(){
ssh -tt hhtd@$host << remotessh
$1
exit
remotessh
}
##更新、编译代码,参数是名称,如admin或者app_server
build_code(){
git checkout $1_online
git pull
mvn clean install dependency:copy-dependencies
echo "build code success"
}
##启动远程tomcat,参数是名称,如admin或者app_server
start_remote_process(){
remote_call "/home/hhtd/bin/start_$1.sh"
}
##杀掉远程tomcat,参数是名称,如admin或者app_server
kill_remote_process(){
remote_call "/home/hhtd/bin/kill_$1.sh"
}
##备份远程tomcat,参数是名称,如admin或者app_server
backup_remote(){
remote_call "/home/hhtd/bin/backup_$1.sh"
}
##删除远程tomcat日志,参数是全路径,如/home/hhtd/online/admin-tomcat-8082/
rm_tomcat_logs(){
remote_call "rm -rf $1/logs/*.*"
}
##删除远程的release目录下的root,参数是名称,如admin或者app_server
rm_remote_release_root(){
remote_call "rm -rf /home/hhtd/release/hhtd_$1/ROOT"
}
##把本地ROOT复制到远程release目录下,参数是名称,如admin或者app_server
scp_root_remote(){
scp -r ./hhtd_$1/target/ROOT hhtd@$host:/home/hhtd/release/hhtd_$1/ROOT
}
##把本地文件复制到远程,适用于非web项目,包括两个参数,第一个是名称,第二个是全路径
scp_release_remote(){
remote_call "mkdir $2"
remote_call "mkdir $2/bin"
remote_call "mkdir $2/lib"
remote_call "mkdir $2/config"
remote_call "mkdir $2/logs"
scp -r ./release/hhtd_$1/bin/*.* hhtd@$host:$2/bin/
scp -r ./release/hhtd_$1/lib/*.* hhtd@$host:$2/lib/
}
##删除远程服务器上的tomcat下的root,参数是全路径,如/home/hhtd/online/admin-tomcat-8082/
rm_tomcat_root(){
remote_call "rm -rf $1/webapps/ROOT"
}
##备份远程服务器上tomcat下面的attach(attache)文件夹,参数是全路径,如/home/hhtd/online/admin-tomcat-8082/
backup_tomcat_attach(){
remote_call "mv $1/webapps/ROOT/attache $1/webapps/attache"
}
##把release目录下的root复制到online目录下,包括两个参数,第一个是名称,第二个是全路径
cp_tomcat_release_online(){
remote_call "cp -R /home/hhtd/release/hhtd_$1/ROOT $2/webapps/ROOT"
}
##把备份的tomcat下的attach目录恢复回去
recover_tomcat_attach(){
remote_call "mv $1/webapps/attache $1/webapps/ROOT/attache"
}
##备份tomcat配置文件,参数是全路径,如/home/hhtd/online/admin-tomcat-8082/
backup_tomcat_config(){
remote_call "cp $1/webapps/ROOT/WEB-INF/classes/ $1/*.properties "
}
##把配置文件复制回去,参数是全路径,如/home/hhtd/online/admin-tomcat-8082/
recover_tomcat_config(){
remote_call "cp $1/*.properties $1/webapps/ROOT/WEB-INF/classes/"
}
##复制依赖jar文件到release目录
copy_dependencies_jar(){
rm -f ./release/hhtd_$1/lib/*.jar
cp ./hhtd_$1/target/dependency/*.jar ./release/hhtd_$1/lib/
cp ./hhtd_$1/target/*hhtd_$1*.jar ./release/hhtd_$1/lib/
}
##给sh执行权限,参数是名称,适用于非web项目
chmod_x(){
remote_call "chmod +x /home/hhtd/online/hhtd_$1/bin/start.sh"
}
##适用于非web项目,参数是名称
backup_remote_config(){
remote_call "rm -rf /home/hhtd/tmp/"
remote_call "mkdir /home/hhtd/tmp/"
remote_call "cp /home/hhtd/online/hhtd_$1/config/*.* /home/hhtd/tmp/"
}
##适用于非web项目,参数是路径
rm_remote_folder(){
remote_call "rm -rf $1"
}
##适用于非web项目,参数是路径
recover_config(){
remote_call "cp /home/hhtd/tmp/*.* $1/config/"
}
##适用于web项目,参数是路径
rm_tomcat_config(){
remote_call "rm $1/webapps/ROOT/WEB-INF/classes/*.properties"
}
admin.sh
#!/bin/bash
##author:zch
##date:20171116
time1=`date +"%s"`
name=admin
folder=admin-tomcat-8082
fullPath=/home/hhtd/online/$folder
source function.sh
## build source code
build_code $name
## remote rm files scp to online
rm_remote_release_root $name
scp_root_remote $name
##kill tomcat
kill_remote_process $name
## backup tomcat
backup_remote $name
## rm tomcat logs
rm_tomcat_logs $fullPath
##rm ROOT
backup_tomcat_attach $fullPath
rm_tomcat_root $fullPath
echo "root deleted"
##cp ROOT
cp_tomcat_release_online $name $fullPath
recover_tomcat_attach $fullPath
echo "cp root finished"
##rm tomcat config
rm_tomcat_config $fullPath
##cp config
recover_tomcat_config $fullPath
##start tomcat
start_remote_process $name
time2=`date +"%s"`
((total=$time2-$time1))
echo "deploy finished total time is "$total seconds
应用maven自动部署的脚本的更多相关文章
- 使用Maven自动部署Tomcat 6和Tomcat 7下Web应用
使用Maven自动部署Tomcat 6和Tomcat 7下Web应用 开启Tomcat远程管理权限 在tomcat的config目录下的tomcat-users.xml文件, <role rol ...
- maven自动部署到tomcat的问题
最近需要使用Maven将项目自动部署到Tomcat,在网络上也查找了很多文章,内容大同小异,今天打算在这里给自己做一个小总结 参考网址:http://blog.csdn.net/dilaomimi/a ...
- maven自动部署项目以及常见问题解决
Maven自动部署war到Tomcat1. 在maven项目的pom里配置如下信息 <build> <finalName>dianxiao</finalName> ...
- 自动部署tomcat 脚本
自动部署tomcat 脚本 . /etc/init.d/functions #调用系统函数 yum -y install java >/dev/null TAR="apache-tom ...
- nginx tomcat 自动部署python脚本【转】
#!/usr/bin/env python #--coding:utf8-- import sys,subprocess,os,datetime,paramiko,re local_path='/ho ...
- 关于maven自动部署tomcat9 步骤
maven 自动部署tomcat9 (远程方法) 1.首先要去配置用户,在tomcat的conf中有tomcat_users.xml,在其中有tomcat-user的配置 配置:<tommcat ...
- 使用Maven自动部署Java Web应用到Tomcat服务器
学习如何使用Maven,我推荐一本工具书,<maven the definitive guide>.在这本工具书手中,详细介绍了maven的使用思想,并且提供了从基本到复杂的具体项目应用. ...
- maven自动部署到远程tomcat教程
使用maven的自动部署功能可以很方便的将maven工程自动部署到远程tomcat服务器,节省了大量时间. 本文章适用于tomcat的7.x ,8.x, 9.x版本. 下面是自动部的步骤 1,首先,配 ...
- Maven 自动部署
自动部署到Tomcat Maven 3.2.5 JDK 1.7 Tomcat 7 首先在Tomcat里配置deploy的用户(tomcat根目录/conf/tomcat-users.xml): < ...
随机推荐
- baidu网盘下载神器 Pandownload
最近百度网盘超级会员到期,经同学的推荐,我最近发现了一个特别NB的工具pandownload,官方说是能够破解加速,经过使用确实能够达到很快的下载速度. 这里附上官方的下载网站 http://pand ...
- action访问servlet的API并且获取到MAP或者httpServlet类型的application,session,request
public class testAction3 extends ActionSupport { private Map<String,Object> request; private M ...
- 第十一次作业 - Alpha 事后诸葛亮(团队)
软工 · 第十一次作业 - Alpha 事后诸葛亮(团队) 组长本次作业链接 现代软件工程 项目Postmortem 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场 ...
- C语言调查问卷
1.你对自己的未来有什么规划?做了哪些准备?毕业后应该不会从事编程类工作,目前有在学习感兴趣的东西.2.你认为什么是学习?学习有什么用?现在学习动力如何?为什么?学习就是把不懂变成懂,可以充实自己.没 ...
- ping(团队作业)
一,团队成员 何守成 031602408(队长) 黄锦峰 031602411 肖逸清 031602435 张子纯 031602441 蔡志斌 031602602 柯叶祥 031602414 二.作业链 ...
- break,continue,return 的区别
(1)break 跳出当前循环体 (2)continue 跳过当前循环体continue后面的代码,继续执行下一个循环 (3)return 和循环没关系,就是跳出该函数
- mvc4中使用部分视图局部刷新实例
如上效果图,网页中有主视图(上)和部分视图(下),点击提交会把文本框中的值发送到服务器,再返回所有添加的信息,在下方局部更新(只更新部分视图),实现如下: 1.网页主视图代码: @model MvcA ...
- 我的bootstrap学习
前端开发框架bootstrap Bootstrap 安装 <link ref="stylesheet" href="bs/css/bootstrap.css ...
- PHP 中数组获取不到元素
早上看到 SO 上一个有关 PHP 的问题,提问者描述有一个数组,使用 print_r 可以看到索引 key 和相对应的 value 都是存在的,但是访问该元素,不管是使用 array[key] 还是 ...
- Shell脚本修改Nginx upstream配置文件
#!/bin/bash ##################################################### # Name: change_nginx_upstream_conf ...