使用 cargo 一键远程部署 web 应用到 tomcat

2017-03-03  本文已影响0人  预流

最近接手了几个 tomcat 的 web 应用,每次功能上线的时候都要收工部署到远程的开发环境、生产环境,操作步骤挺多的,本着能机器做的绝不人工做的原则找了几个自动部署的方案,对比了一下,发现 maven 的 cargo-maven2-plugin 插件最适合当前场景,分享一下。
这个插件的工作原理是利用 tomcat 自带的 manager 应用来部署 web 应用,项目介绍 https://codehaus-cargo.github.io/cargo/Home.html
要做的步骤也挺简单,以我本机的 tomcat8 为例。首先确保要部署的远程环境中的 tomcat 下已经存在 manager 应用,接着配置 tomcat8 下 manger 访问的 role username password ,修改 tomcat8/conf/tomcat-users.xml 文件,增加如下配置:

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="123456" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

为了能让用户能以 text 访问 manager ,最好给分配的用户名配置上所有这四种tomcat 预定义的角色 manager-gui、manager-script、manager-jmx、manager-status

接着在实际的 web 项目的 pom 文件中增加插件配置:

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.5.0</version>
    <configuration>
        <container>
            <containerId>tomcat8x</containerId>
            <type>remote</type>
        </container>
        <configuration>
            <type>runtime</type>
            <properties>
                <cargo.protocol>http</cargo.protocol>
                <cargo.hostname>实际域名</cargo.hostname>
                <cargo.servlet.port>实际端口号</cargo.servlet.port>
                <cargo.remote.username>admin</cargo.remote.username>
                <cargo.remote.password>123456</cargo.remote.password>
                <cargo.remote.uri>http://实际域名:实际端口号/manager/text</cargo.remote.uri>
            </properties>
        </configuration>
    </configuration>
</plugin>

cargo.remote.username 和 cargo.remote.password 就是上面配置的 tomcat-users.xml 文件里 user 节点的 username 和 password ,cargo.remote.uri 里的 http://实际域名:实际端口号/ 就是远程部署的tomcat实际访问的根路径地址。

最后在 web 项目根目录运行命令:

mvn org.codehaus.cargo:cargo-maven2-plugin:redeploy

一键远程部署 web 应用就搞定了。

如果想命令短一点可以在 maven 的 settings.xml 中增加一个 pluginGroup :

<pluginGroups>
       <pluginGroup>org.codehaus.cargo</pluginGroup>
</pluginGroups>

这样命令就可以简写成:

mvn cargo:redeploy
上一篇 下一篇

猜你喜欢

热点阅读