如何使用命令提示符将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】:

您可以使用 wgetcurl 从命令行部署应用程序。

使用 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文件。

将命令提示符的活动目录更改为您的 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何手动将war文件部署到tomcat?

如何在Linux下使用Tomcat部署Web应用

如何使用 Cargo 将 WAR 部署到现有的 Tomcat 6 实例上?

如何将 .war 文件与 JDBC jar 一起部署在 tomcat7 中?

将版本化的 WAR 文件部署到 tomcat

Spring Boot将WAR文件部署到Tomcat