我们一般是使用Deploy to container Plugin这个插件来部署Tomcat,一般没有部署到webapps目录下一般是
这一块的项目相对路径不对导致的,有个万能的配置
但是使用这种插件使用了热部署,可能会导致内存溢出。另外,这个插件他依赖Tomcat中 manager项目,如果你的webapps不慎删除的话,会导致部署失败。
所以,推荐使用Publish over SSH
我参考了这篇博文https://www.jb51.net/article/142704.htm
1、在系统管理-》系统设置里找到Publish over SSH然后输入:
2、配置Post Steps
这里还是接着上面的项目,这个配置得安装了上面的插件后才会显示!
Transfer SetSource files:表示要上传的本地的war包及路径,可到工作空间去看
Remove prefix:表示要上传时要去除的文件夹,即只上传war包
remote driectory:即表示执行时的路径,相当于把war包上传到这里了
exec commad:要执行的命令
如图,会将war包放到home/admin文件夹,接着我会执行我写的Shell命令。主要涉及,停止tomcat,备份原war包,删除webapp下原war包,将home/admin下的新war包拷进来,启动tomcat,然后就完成了。这样就避免了热部署内存溢出导致服务器崩溃的问题了。
脚本文件:即图中的save.home.omm.sh 文件,我简单些了一些注释
#!/bin/sh
#defined 指定tomcat路径
TOMCAT_HOME="/usr/java/tomcat/apache-tomcat-7.0.67/"
#找到tomcat pid
ID="ps -ef | grep java | grep tomcat|awk '{print $2}'"
echo $ID
echo "kill tomcat"
#杀掉Tomcat进程
kill -9 $ID
echo "remover war file"
#进入tomcat的webapps目录
cd "$TOMCAT_HOME"/webapps
#删除 原来已有的war包和解压的文件夹
rm -rf JavaWeb-0.0.1-SNAPSHOT
rm -rf JavaWeb-0.0.1-SNAPSHOT.war
echo "copy war to webapp"
#切换到暂存war包的文件夹
cd /home/lin
#执行复制命令
cp JavaWeb-0.0.1-SNAPSHOT.war "$TOMCAT_HOME"/webapps
#最后,再切换到Tomcat目录
cd "$TOMCAT_HOME"/bin
echo "start tomcat"
#启动Tomcat
./startup.sh