我目前正在测试大量的web服务。我想尽快通过终端命令部署和取消部署到tomcat应用服务器。对于我需要部署的大量web服务来说,使用HTML GUI是不合理的。有人能帮助我,如何通过终端命令部署吗?
此外,我正在编写一个ash脚本,它可以自动执行部署过程,因此,如果有人能给我一些指导的话,那就太好了。
理想情况下,我希望在命令行上执行以下操作:
TOMCAT—参数指定WAR文件的路径—参数2—指定某种配置文件
最佳答案
首先,您需要确保tomcat-user.xml配置了正确的用户和角色。最低角色配置为“admin,manager script”:
找出tomcat的安装位置。您可以在bash中执行此操作:catalina version
导航到CATALINA_HOME config目录,该目录显示在上一个命令的输出中。
cd /usr/local/Cellar/tomcat/8.0.22/libexec/conf
注意:在我的示例中,我使用自制程序安装tomcat 8,用命令行输出中显示的内容替换此路径。
验证server.xml是否包含一个UserDatabase资源(如果它没有添加它):
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
默认情况下,tomcat使用内存中的数据库来存储用户和角色。这是在conf/server.xml中配置的。并将用户和角色声明委托给conf/tomcat-users.xml文件。有关详细信息,请参见:http://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html#UserDatabaseRealm。
然后验证CONFIG/USER TMECAT.XML是否存在,并且看起来像这样:
<tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd">
<role rolename="admin"/>
<role rolename="manager-script"/>
<user username="admin" roles="admin,manager-script" password="admin" />
</tomcat-users>
现在,你准备好发动战争了!
有两种方法。。。
使用wget:
wget是一个漂亮的工具,允许您通过命令行执行http请求。我建议使用homebrew这样的包管理器安装它,否则,您可以使用此wget install guide进行安装。
首先重新启动服务器以获取可能已完成的任何配置更改。
catalina stop
,然后catalina start
,将从bash中完成这个技巧。*注意:当使用wget开始向tomcat部署war时,需要先启动tomcat。
现在执行以下命令:
wget --http-user=admin --http-password=admin "http://localhost:8080/manager/text/deploy?war=file:/Users/yourusername/app/target/APP-1.0.0.war&path=/app"
现在转到http://localhost:8080/app/查看您的webapp。
笔记:
等待几秒钟,让http请求发送并完全部署war。(有时需要一段时间)。
您可能会尝试使用主目录快捷方式(如
file:~/app/target/APP-1.0.0.war
)引用war文件,但这不起作用。要取消部署战争,只需在wget命令中将
deploy
替换为undeploy
。使用Tomcat Maven插件:
如果您有源代码,就可以使用tomcat7-maven-plugin轻松构建和部署war。注意:在我写这篇文章的时候,没有tomcat8 maven插件;tomcat-7-maven-plugin对tomcat8工作得很好。
将插件添加到pom.xml:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>${version.tomcat.maven.plugin}</version>
<configuration>
<path>/${project.build.finalName}</path>
<configurationDir>${env.CATALINA_HOME}</configurationDir>
<additionalConfigFilesDir>${env.CATALINA_HOME}/conf</additionalConfigFilesDir>
<uriEncoding>${project.build.sourceEncoding}</uriEncoding>
</configuration>
</plugin>
导航到pom.xml所在的项目根目录,并运行以下命令:
mvn tomcat7:run
关于bash - 如何通过终端命令将Web应用程序部署到tomcat应用程序服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19276753/