如何实现tomcat的自动化部署


在项目开发过程中,经常会因为一点小的修修补补需要修改代码,重新打包部署。由于做的是政务项目,项目部署都在电子政务网,还要链接vpn堡垒机一系列动作,整个过程看似简单实则繁琐。每天打包部署是件令人不愉悦的事,那么有什么好的方式可以简化这些操作?在研究tomcat过程中,发现简化这些其实非常简单,按照下面步骤操作后,只需要修改完代码,点击部署即可!

配置线上tomcat

线上环境为tomcat9不同版本略有差异

在安装完tomcat之后,webapp目录下保留manager文件夹。

1.允许管理页面远程访问

用vim 打开webapps/manager/META-INF/中的context.xml

命令:vim webapps/manager/META-INF/context.xml

原内容
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
修改为

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

说明: 因为tomcat9默认只能本机访问管理界面, 修改后就可以远程访问了

添加用户和权限

在tomcat的 conf/tomcat-users.xml 文件中面配置
vim conf/tomcat-users.xml 在标签 tomcat-users 里加上

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

说明:username password 修改为自己的用户密码

默认主机配置

在tomcat的 conf/Catalina/localhost/ 目录下添加配置文件 manager.xml,内容如下

<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
   <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

配置完以上操作重启tomcat,然后远程访问 http://localhost:8080/manager/html 可以看到一下界面

本地配置

配置本地项目

maven配置

在本地maven的conf/setting.xml文件中的servers标签里添加:

``

    <server> 
        <id>tomcat9</id>
        <username>tomcat</username>
        <password>tomcat</password>
    </server>

说明:这里的账号密码就是上面tomcat里面配置的账号密码,id是标识。

idea中配置tomcat插件

在项目的pom.xml文件中添加:

    <plugins>

      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <!-- 直接访问 Tomcat 服务器的 manager -->
          <url>http://localhost:8080/manager/text</url>
          <server>tomcat9</server>
          <username>tomcat</username>
          <password>tomcat</password>
          <update>true</update>
          <!--访问的项目名,表示无需项目名。列如:/app-->
          <path>/</path>
        </configuration>
      </plugin>

    </plugins>

    说明:server 对应上面maven配置文件里的id标识,username,password 也需对应,path 为项目的访问路径,如果配置 "/app" 则访问路径为http://localhost:8080/app

远程部署

配置完成后,刷新maven插件,点击部署等待控制台完成即可。到此远程自动化部署配置完毕,后面只需要修改代码之后点击redeploy 或者redeploy-only


文章作者: Needle
转载声明:本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Needle !
  目录
  评论