如何实现tomcat自动化部署?

风空兮


自动化部署在互联网中已经非常成熟了。也有很多的开源方案。

现在用Jenkins 自动部署的比较多,详细的配置可以网上搜。

自动部署流程一般如下

  1. git同步最新代码
  2. 使用maven打包项目
  3. 停止tomcat服务器
  4. 部署项目
  5. 启动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了解一下


分享到:


相關文章: