风空兮
自动化部署在互联网中已经非常成熟了。也有很多的开源方案。
现在用Jenkins 自动部署的比较多,详细的配置可以网上搜。
自动部署流程一般如下
- git同步最新代码
- 使用maven打包项目
- 停止tomcat服务器
- 部署项目
- 启动tomcat服务器
通过web操作的过程一般都是
通过web页面调用jenkins脚本,进行代码编译,代码编译建议在干净环境区编译,编译成功后,把上线java文件上传到上线文件服务器,然后修改配置文件。利用命令调用远程服务器端部署监控程序,下载服文件服务器部署jar,下载最新配置文件进行替换。然后备份原来jar文件,删除jar,把新的jar替换。自动重启就可以。也可以开发远程看启动日志页面。可以查询web是否启动正常。当然完善的自动部署还会涉及到自动切换流量。上线成功后状态回传等。详细的内容比较多。你可以关注我的头条号。改天我可以总结一个完整的产品流程和实现
三僡然
tomcat自动化部署脚本实现的功能如下:
(1) 检查tomcat进程是否存在,如果存在则kill掉
(2) 备份现有war包到tomcat/backup目录
(3) 复制当前目录新war包到tomcat/webapps目录
(4) 启动tomcat
shell脚本内容如下:
#!/bin/bash
now=`date +%Y%m%d%H%M%S`
tomcatPath=/usr/local/tomcat/software/tomcat6
backupPath=/usr/local/tomcat/software/tomcat6/backup
war=$1
if [ -e "$war.war" ]; then
echo -e "\\033[34m war archive: $war.war \\033[0m"
else
echo -e "\\033[31m war archive '$war.war' not exists \\033[0m"
exit -1
fi
# change color
echo -e "\\033[34m"
#create backup dir
if [ ! -d "$backupPath" ]; then
mkdir "$backupPath"
fi
echo "tomcat home: $tomcatPath"
echo "backup path: $backupPath"
echo 'try to stop tomcat...'
pid=`ps aux|grep "java"|grep "$tomcatPath"|awk '{printf $2}'`
if [ -n $pid ]; then
echo "tomcat pid: $pid";
kill -9 $pid;
fi
echo 'stop tomcat finished...'
echo 'backup old archive...'
if [ -f "$tomcatPath/webapps/$war.war" ]; then
mv -v "$tomcatPath/webapps/$war.war" "$backupPath/$1_$now.war";
fi
rm -rf $tomcatPath/webapps/$war*
echo "copy $war.war archive to webapps.."
cp -v "$war.war" "$tomcatPath/webapps/"
echo -e "\\033[32m"
echo 'startup tomcat...'
sh $tomcatPath/bin/startup.sh
tail -10f $tomcatPath/logs/catalina.out
使用时,需要先修改tomcatPath的值为实际tomcat路径。
保存该文件到autodeploy.sh, 执行命令:
Shell执行代码
./autodeploy.sh abc
autodeploy.sh和abc.war
淮安二傻子
发布到本地的话,在maven中使用tomcat plugin即可,如果要发布到测试环境SIT或UAT环境,应该使用ci工具比如Jenkins, 在Jenkins中建一个continues project, 只要有code checkin, 就自动build和deploy到测试环境,在Jenkins中还需要有一个release project, 因为continues自动build的都是snapshot,这不能部署到production上去, 这个release project就是用来build release版本,然后publish到公司内部的maven repositories(一般用nexus),开发人员不应该允许操作production环境, 应该由专门的服务器管理人员从nexus上下载release版本进行production的部署。
题外说一点,大多数部署也包含数据库脚本的变化,这怎么自动部署,也是有很好的工具比如liquibase,用liquibase建立数据库命令的版本控制,打包在war/ear中,部署时liquibase能自动检测环境中现有的数据库脚本的版本,而运行没有部署过的数据库脚本命令。
Gary2018
tomcat的conf目录下有一个server.xml文件。里面context标签下有一个属性叫reload=true,你设置一下。以后他就会自动部署
专注JavaWeb开发
题主,这个问题很好做,写一个shell脚本就可以搞定
下面是我给你的解决方案(linux系统下):
开发人员使用Git或者SVN把修改好的代码提交到SVN或Git服务器上,然后在做检出打包的功能,步奏如下:
1.删除原来tomcat下的webApp
2.checkout 最新的代码,进行打包和copy到tomcat的目录下
3.再次启动tomcat服务器
若只是初见good
1.代码仓库,git和svn
2.拉取最新代码,自定义打包编译,jenkins
3.通过tomcat自动redeploy打包好的war包,或者scp加脚本代码重启,一般是第二种,第一种不适用于频繁redeploy
wwhhff11
可以考虑用jekins+marven+git来做tomcat持续集成。
云谷计算
jenkins了解一下