一直以来使用tomcat都是听从了网上前辈们的说法,下载源代码或者压缩包,解压使用。
就在昨天,测试ubuntu新系统的时候,使用apt安装的tomcat9的默认页面提示可以使用tomcat9-admin包,该包提供了web管理tomcat9服务器的能力。
兴冲冲地去apt install tomcat9-admin -y了,回来点击这两个链接,查看manager的功能。然而遇到的是403错误。
首先可以看到的是,需要配置manager的context.xml,这个文件在使用apt安装的时候位于/usr/share/tomcat9-admin/manager/META-INF/context.xml
实际上建议使用如图所示的方法查找文件:
1.进入root用户权限
2.在根目录查找
3.根据文件名查找
4.使用grep 限定其他相关字符串,比如可能的文件夹的部分名称。
不要直接使用的长的、复杂的字符串直接查找,那样容易找不到,或者因为大小写(linux区分大小写)而错过目标。使用如上的方法相当于使用find过滤了不包含文件名的路径,再使用grep过滤了不包含可能的另一个字符串的路径,两个条件结合查找,迅速缩小目标范围。其实还是因为linux不提供多个字符组合查找,而为了找个文件使用正则表达式实在是太麻烦了。
上图中找到了两个contextx.xml,分别是tomcat9-admin包提供的两个功能的配置文件,基本相同,可以做同样的修改。
可以看到context.xml文件内容如下:
注意上图中最后几行的内容<Value>...</Value>的那一部分,其中的allow="..."是一个正则表达式描述的允许访问的主机的名称/IP,默认情况下只允许IPV4为127或者IPV6形式的打头的本地访问 ,可以在其后方添加上如下内容:
|192\.\d+\.\d+\.\d+
其中192到末尾替换成自己的IP段或者星号*从而允许访问。至此,不会因为主机不允许访问而被拒绝了。两个context.xml都如此修改即可。
但是,再去尝试访问还会遇到错误,错误依然是403,manager和host manager对应的错误提示页面如下:
manager的403:
host manager的403:
根据提示,第一个是下盖context.xml,我们已经修改过了,那么接着往下看就是conf/tomcat-users.xml里边配置用户信息。
对于manager,配置文件里要有一个这样的角色:
<role rolename="manager-gui"/>
同时要有一个用户具备上边这个角色属性
<user username="tomcat" password="s3cret" roles="manager-gui"/>
对于host manager稍有不同,配置文件里的角色和用户的角色属性不一样:
<role rolename="admin-gui"/> <user username="tomcat" password="s3cret" roles="admin-gui"/>
将这样的配置稍加修改(不改直接用也行),添加到配置文件里就好了。
这次的文件位置如下,依然使用索索的方式找到文件:
由于使用的是root用户安装的tomcat9和tomcat9-admin,也是使用root用户权限运行的,那么直接在修改全局的/etc/tomcat9/tomcat-users.xml
文件的上半部分几乎全是注释,我们只需要修改最后的role和user部分就好:
其中第3,4,5,6行是添加的内容,是admin包需要的角色和用户信息,其他的行是配置文件原本就有的角色和用户。
原本就有的角色和用户其实可以删掉,因为他们本身并没有任何作用,但是习惯保留。注意,其中的用户部分的密码必须全部修改,密码中不能包含尖括号<>等xml中不允许使用的符号,否则配置文件无效。
我使用的manager的用户名是uim,host manager的用户名是aim,我尝试把两个用户合并成一个,也就是role="manager-gui admin-gui",然而两个角色之间用空格分隔是错误的写法,应该用逗号,不过当我知道的时候已经配置成两个用户分别使用各自的角色,就不改了。
登录manager页面,可以看到方便地使用manager地web端可以查看tomcat服务器的运行情况,包括正在运行的web应用,也可以通过vegeweb端上传新的web应用到tomcat服务器
在host manager可以以host为单位管理tomcat服务器:
目前我还没有使用admin包管理tomcat,不过可以猜测使用web管理应该能让我省下不少原来用于改tomcat地server.xml配置文件的功夫。
原文:https://www.cnblogs.com/memoryLost/p/11896125.html