共计 3013 个字符,预计需要花费 8 分钟才能阅读完成。
大部分时候,我们的 Tomcat 服务器都不是部署在本机,那么怎么样不通过 ftp/sftp 方式来将 war 包部署到 Tomcat 容器呢?
Tomcat 有提供 Web 页面管理应用的功能。
我们来看看怎么配置实现该功能。
进入 tomcat 默认页面时有“server status”、“manager app”、“Host manager”三个选项如图:
图 1
默认情况下,点击会跳转到 401 Unauthorized 报错页面
图 2
错误信息有提示请检查 conf/tomcat-users.xml 文件是否已配置。并且给出了配置示例(这里提醒大家,在任何时候出现错误页面,务必先仔细阅读错误信息,很多时候直接在错误信息中就能找到解决方案)
图 3
现在我们来配置 manager app 权限
进入 tomcat 下的 conf 目录,打开 tomcat-users.xml 文件
找到文件在末尾,在 </tomcat-users> 上一行插入如下配置:
<role rolename=”manager-gui”/>
<user username=”admin” password=”admin1234″ roles=”manager-gui”/>
保存文件,退出。重启 tomcat 该配置即可生效(“server status”、“Host manager”配置类似,参照报错页面的提示信息进行配置即可)
重新访问 tomcat 地址,点击“manager app”,如果使用的是 tomcat7 以下(含 7),这时会弹出一个登录框,输入前面配置的用户名密码即可登录,管理 app。包括 war 包服务的启动、停止、reload、undeploy 以及配置 session 的失效时间。
如果使用的是 tomcat8 以上,此时会报 403 permission deny。
Tomcat8 配置管理员后仍然报 403 解决方法:
修改 conf/tomcat-users.xml
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<user username="user" password="password" roles="admin,manager,manager-gui"/>
同时还需要修改,如无新建 conf/Catalina/localhost/manager.xml 内容如下:
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
无须重启 tomcat 即可生效。
正常可访问时的页面如下图:
图 4
接下来我们来看下怎么发布。
进入到 manager app 页面后,往下滑动页面到 Deploy 栏,如图:
点击“select WAR file to upload”后面的“浏览”按钮,选择需要发布的 war 包后,点击“deploy”,war 即可发布成功。部署是否成功,需要关注头部的“Message:”内容。
但是如果该 war 包已经在服务器上部署,则需要在页面中找到该应用,点击“undeploy”先取消部署。
通过以上配置后,基本上在发布版本的时候不会有什么问题,增加这个配置的好处就是当持续集成的服务器与 tomcat 不在同一服务器时,可以通过配置,实现自动部署(当然方案不是唯一,也可以通过 ftp、ssh 方式部署,当时个人认为这是最简单的方式)
但是在实际的项目过程中我们会发现 war 包的大小往往达到几十上百 M,这时发布会出现失败,原因是 tomcat 默认最大只允许上传 50M 的文件,这时候我们需要去修改 webapps\manager\WEB-INF\web.xml 文件
找到
<multipart-config>
<!– 50MB max –>
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
一段(大概在 53 行),将 max-file-size、max-request-size 值增大即可。
注意:
如果 tomcat 需要开放到公网环境,建议将 webapps 目录删除
或者增加 ip 白名单过滤
配置可以参照 tomcat 官方文档进行配置 http://tomcat.apache.org/tomcat-8.5-doc/manager-howto.html
里面有提到:
In addition to the password restrictions, access to the Manager web application can be restricted by the remote IP address or host by adding a RemoteAddrValve or RemoteHostValve. See valves documentation for details. Here is an example of restricting access to the localhost by IP address:
<Context privileged="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1"/>
</Context>
更多 Tomcat 相关教程见以下内容:
CentOS 6.6 下安装配置 Tomcat 环境 https://www.linuxidc.com/Linux/2015-08/122234.htm
RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目 https://www.linuxidc.com/Linux/2015-02/113528.htm
Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签) https://www.linuxidc.com/Linux/2015-02/113062.htm
Tomcat 安全配置与性能优化 https://www.linuxidc.com/Linux/2015-02/113060.htm
Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 https://www.linuxidc.com/Linux/2015-01/112395.htm
CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 https://www.linuxidc.com/Linux/2015-01/111485.htm
Ubuntu 16.04 下安装 Tomcat 8.5.9 https://www.linuxidc.com/Linux/2017-06/144809.htm
Tomcat 中 session 的管理机制 https://www.linuxidc.com/Linux/2016-09/135072.htm
Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里
: