如何使用命令提示符将war文件部署到tomcat?
Posted
技术标签:
【中文标题】如何使用命令提示符将war文件部署到tomcat?【英文标题】:How to deploy war file to tomcat using command prompt? 【发布时间】:2014-09-21 16:11:54 【问题描述】:我创建了一个war文件并放入tomcat/webapps
。
【问题讨论】:
【参考方案1】:此页面上较早的答案是正确的,您可以将 WAR 文件复制/移动到位并重新启动 tomcat,但他们忽略了一些事情:如果有的话,您必须删除之前爆炸的资产(从之前部署的 WAR 文件中)存在。
# My tomcat webapps are found at /var/lib/tomcat6/webapps
# The application I wish to deploy is the main (ROOT) application
webapps_dir=/var/lib/tomcat6/webapps
# Remove existing assets (if any)
rm -rf $webapps_dir/ROOT
# Copy WAR file into place
cp example_dir/ROOT.war $webapps_dir
# Restart tomcat
service tomcat6 restart
为自己的系统修改以下内容:
已编译的 WAR 文件的路径(待部署) tomcat webapps 文件的路径 如何重新启动 tomcat(即,如果未作为服务安装)【讨论】:
【参考方案2】:首先在tomcat-users.xml中为角色manager-script添加一个用户角色。
然后取消部署您可以使用的当前应用程序
wget http://username:password@localhost:portnumber/manager/text/undeploy?path=/appname -O - -q
部署
wget http://username:password@localhost:portnumber/manager/text/deploy?path=/appname&war=file:/warpath -O - -q
【讨论】:
我不断收到“-O: command not found”,但如果我用“”包裹了 url 部分,那么我没有问题,所以对于其他人,我建议这样做。【参考方案3】:您可以使用 wget 或 curl 从命令行部署应用程序。
使用 wget:
wget --http-user=tomcat --http-password=tomcat "http://localhost:8080/manager/text/deploy?war=file:/some/path/SomeWar.war&path=/SomeWar" -O -
但在我使用 wget 的情况下,我收到了这个错误: “无法在上下文路径部署应用程序...”
所以我用 curl 解决了:
curl -v -u user:password -T app.war 'http://tomcathost/manager/text/deploy?path=/my-app-path&update=true'
【讨论】:
这会取消部署任何现有版本吗? 我需要使用-X PUT
专门指定 PUT。除此之外,它完美无缺。【参考方案4】:
为此,我们需要将 WAR 文件放在 Tomcat CATALINA_HOME/WEBAPPS/
目录中。以后Tomcat会自动部署和分解这个WAR文件。
CATALINA_HOME
变量设置为Tomcat目录的路径
复制 WAR 文件
在命令行中从当前目录复制WAR文件的语法:
copy <your-war-file-name> %CATALINA_HOME%\<your-appBase-name>
例子:
cd C:\MY_WAR_FILE_LOCATION
set CATALINA_HOME="C:\Program Files\Apache\apache-tomcat-7.0.42"
copy MYWARFILE.WAR %CATALINA_HOME%\webapps
注意:如果在 Tomcat 运行时将 WAR 文件复制到 webapps 目录中,它将无法被识别。只需重新启动 Tomcat 即可开始使用 Web 应用程序。
【讨论】:
【参考方案5】:您可以使用 tomcat manager 应用程序部署 war 文件,http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html#Deploy_A_New_Application_Remotely
如果你想从命令提示符,那么据我所知
停止 tomcat (catalina.bat stop) 将战争复制到 webapp 重启tomcat(catalina.bat运行)【讨论】:
【参考方案6】:使用httpie,您可以上传和部署战争。
http --auth user:pass PUT http://<tomcatURL>/manager/text/deploy?path=/ < ROOT.war
【讨论】:
【参考方案7】:由于您已经将war文件复制到tomcat/webapps,您只需重启tomcat即可部署war文件。
命令提示符:
set tomcatPath=D:\apache-tomcat-7.0.50
call "%tomcatPath%"\bin\catalina.bat **stop**
sleep -m 3000
call "%tomcatPath%"\bin\catalina.bat jpda **start**
【讨论】:
【参考方案8】:我试过了,效果很好
curl --request PUT --upload-file webapp.war --basic --user user:password \
http://hostname:port/manager/text/deploy?path=/web_path\&update=true
它基于已发布的 tomcat 管理器 API: https://tomcat.apache.org/tomcat-9.0-doc/manager-howto.html#Deploy_A_New_Application_Archive_(WAR)_Remotely
【讨论】:
以上是关于如何使用命令提示符将war文件部署到tomcat?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Cargo 将 WAR 部署到现有的 Tomcat 6 实例上?