前言:
Tomcat服务器是一个免费的开源web应用服务器,属于轻量级应用服务器,在中小型系统和并发用户不是很多的场合中被普遍使用,是开发和测试JSP程序的首选。一般来说,Tomcat虽然和apache或者Nginx这些web服务器一样,具有处理HTML页面的功能,然而由于其处理静态页面的能力远不如apache或者Nginx,所以Tomcat一般是作为一个servlet和JSP容器,单独运行在后端。
关于Tomcat服务的各个目录的说明及配置文件的解释,可以参考博文:Tomcat服务器配置文件详解,或者访问其Tomcat官网,以阅读官方文档。
博文大纲:
一、部署Tomcat
二、定义Tomcat多实例
三、配置Tomcat自定义目录
四、开启Tomcat目录遍历
五、使用Tomcat实时监控JVM虚拟机资源使用情况
六、开启JMX远程调试功能
七、开启mangent管理页面
一、部署Tomcat
环境准备:
- centos 7一台,IP为:192.168.20.5
- 下载我提供的所需源码包,并上传至centos 7服务器。
1、开始部署
[[email protected] ~]# rpm -qa | grep jdk #查询系统默认的JAVA包
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
copy-jdk-configs-1.2-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
[[email protected] ~]# rpm -e java-1.8.0-openjdk-headless --nodeps #卸载Java1.8
[[email protected] ~]# rpm -e java-1.7.0-openjdk-headless --nodeps #卸载Java1.7
[[email protected] ~]# cd /usr/src
[[email protected] src]# rz #上传我提供的两个源码包
[[email protected] src]# ls #源码包如下
apache-tomcat-8.5.35.tar.gz jdk-8u211-linux-x64.tar.gz
[[email protected] ~]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/ #解压JDK到指定路径
[[email protected] src]# tar zxf apache-tomcat-8.5.35.tar.gz #解压Tomcat源码包
[[email protected] src]# mv apache-tomcat-8.5.35 /usr/local/tomcat #将解压后的目录移动到指定目录并命名为tomcat
[[email protected] ~]# vim /etc/profile #编辑环境变量,在配置文件末尾添加以下内容
export JAVA_HOME=/usr/local/jdk1.8.0_211
export JRE_HOME=/usr/local/jdk1.8.0_211/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
[[email protected] ~]# . /etc/profile #重新加载环境变量
[[email protected] ~]# java -version #查看java版本
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
[[email protected] ~]# /usr/local/tomcat/bin/startup.sh #启动Tomcat服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8.0_211/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[[email protected] src]# netstat -anput | grep 8080 #确定8080端口在监听
至此,Tomcat服务就运行正常了,可以使用客户端访问Tomcat服务器IP+8080端口,可以看到以下页面:
二、定义Tomcat多实例
所谓多实例,就是在一台服务器上运行多个Tomcat服务,所以,需要注意,在定义Tomcat的多实例时,千万不要出现端口冲突的情况。
[[email protected] src]# cd /usr/local/ #切换至Tomcat服务的安装目录
[[email protected] local]# cp -r tomcat tomcat2 #将第一个Tomcat目录复制一份并重命名为tomcat2。
[[email protected] local]# vim tomcat2/conf/server.xml #修改主配置文件中的所有端口号,防止端口冲突
#配置文件的所有端口号,除了带注释的外,都需要修改,
#只要配置项中带有“port”的,并且后面是数字的,都是端口号
#由于其分散在各个行,所以这里就不写了,自行修改即可,我这里都将其+1
[[email protected] local]# cd
[[email protected] ~]# /usr/local/tomcat2/bin/startup.sh #使用Tomcat2启动脚本运行Tomcat2
[[email protected] ~]# netstat -natp | grep 8081 #确定修改后的端口在监听
至此,第二个Tomcat实例就运行正常了,可以使用客户端访问Tomcat服务器IP+8081端口,可以看到以下页面(由于是完全复制之前的Tomcat目录,所以看到的页面一样):
三、配置Tomcat自定义目录
[[email protected] ~]# mkdir -p /data/project #创建目录
[[email protected] ~]# cat /data/project/index1.jsp #第一个网页文件
aaaaaaaaaaaaaaaaaaaaaaa
[[email protected] ~]# cat /data/project/index2.jsp #第二个网页文件
bbbbbbbbbbbbbbbbbbbbbbbbbbb
[[email protected] ~]# vim /usr/local/tomcat/conf/server.xml #编辑Tomcat主配置文件
<Host name="localhost" appBase="webapps" #定位到148行左右
unpackWARs="true" autoDeploy="true">
..........................#添加以下内容
<Context path = "/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true">
</Context>
#添加上述 <Context....> </Context>的配置后即可保存退出
#上述的 <Context....> </Context>标签的另一种写法就是<Context......./>
#在上述添加的配置解释如下:
#Path:指出客户端访问的路径;
#docBase:指定网页的存放路径;
#Debug:指定debug的等级为0,输出信息最少,9提供最多的信息;
#reloadable:为true时表示当web.xml文件有改动的时候自动加载,不必重启服务;
#CorssContext:为true时,表示不同的context共享一个session(会话池)。
#重启访问http://192.168.20.5:8080/shop/index1/2.jsp进行验证即可
[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh #停止Tomcat
[[email protected] ~]# /usr/local/tomcat/bin/startup.sh #启动Tomcat
访问192.168.20.5:8080/shop/index1.jsp 进行验证:
访问192.168.20.5:8080/shop/index2.jsp 进行验证:
四、开启Tomcat目录遍历
在apache或Nginx中,它们的目录遍历是默认开启的,而Tomcat服务,它的目录遍历默认是关闭的,有些情况下,我们需要开启它的目录遍历功能。
1、直接访问192.168.20.5:8080/shop/进行测试,会报错404:
2、那么,接下来开启它的目录遍历功能:
[[email protected] ~]# vim /usr/local/tomcat/conf/web.xml #编辑这个文件
<init-param> #定位到该标签,110行左右
<param-name>listings</param-name>
<param-value>true</param-value> #将原本的false修改为true
#修改后,保存退出即可
#重启Tomcat服务
[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh
[[email protected] ~]# /usr/local/tomcat/bin/startup.sh
3、重启后,刷新刚才的访问页面,会发现网页将其shop/指定的目录下的所有文件都显示出来了,如下:
五、使用Tomcat实时监控JVM虚拟机资源使用情况
[[email protected] ~]# vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path = "/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true">
</Context> #在下面添加一行
<Context path = "monit" docBase="/data/monit" debug="0" reloadable="flase" crossContext="true"/>
#添加后,保存退出即可
[[email protected] ~]# mkdir /data/monit
[[email protected] ~]# vim /data/monit/index.jsp #编写监控脚本,写入以下内容
<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024;
long tm = rtm.totalMemory()/1024/1024;
long fm = rtm.freeMemory()/1024/1024;
out.println("JVM memory detail info :<br>");
out.println("Max memory:"+mm+"MB"+"<br>");
out.println("Total memory: "+tm+"MB"+"<br>");
out.println("Free memory: "+fm+"MB"+"<br>");
out.println("Available memmory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
%>
#保存后,保存退出即可
#重启
[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh
[[email protected] ~]# /usr/local/tomcat/bin/startup.sh
访问192.168.20.5:8080/monit/会看到以下页面:
六、开启JMX远程调试功能
[[email protected] ~]# vim /usr/local/tomcat/bin/catalina.sh #编辑其文件,跳转文件的306行
export JDK_JAVA_OPTIONS #在该行下面添加以下内容,定义其监听端口为“8888”
CATALINA_OPTS=" $CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
#添加完成后,保存退出即可
[[email protected] ~]# cd /usr/local/jdk1.8.0_211/jre/lib/management/
[[email protected] management]# cp jmxremote.password.template jmxremote.password
[[email protected] management]# vim jmxremote.password #在文件末尾写入需要创建的用户,如下:
ljz 123.com
#由于其是一个只读文件,所以在写入后,需要使用命令“wq!”以便强制保存
[[email protected] management]# vim jmxremote.access #编辑此文件,给用户定义权限
#跳转至文件末尾,添加以下配置项,也可以直接修改末尾的模板
ljz readwrite \ #此行开头指定的是用户名
create javax.management.monitor.*,javax.management.timer.* unregister
#写入以上内容后,保存退出即可
[[email protected] management]# chmod 600 jmxremote.access jmxremote.password #必须修改其权限为600,否则会失败
#重启Tomcat服务
[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh
[[email protected] ~]# /usr/local/tomcat/bin/startup.sh
验证其远程调试功能,由于其需要图形化的支持,所以需要进入其图形化桌面环境,下面的操作不可以在xshell上进行了:
[[email protected] ~]# jconsole #执行此命令
#若上述命令无法执行,则需要执行“. /etc/profile”命令,以便重新加载环境变量
执行jconsole命令后,会弹出以下界面:
然后点击如下:
就可以看到以下界面,其中显示的是JVM虚拟机的资源使用情况:
七、开启mangent管理页面
1、在访问Tomcat的默认界面时,有一个“Manager App”的框,如下:
2、点击进入后,会看到以下403报错页面(翻译过后如下),我们需要复制它提示的代码:
此错误页面,已经将原因及该如何配置写的明明白白的。
3、现在配置开启它的manager管理页面:
[[email protected] ~]# vim /usr/local/tomcat/conf/tomcat-users.xml #编辑这个文件,跳转至文件末尾
<role rolename="manager-gui"/>
<user username="lisi" password="123.com" roles="manager-gui"/>
</tomcat-users> #在这个闭合的标签上面添加两行,以便添加用户
#添加的配置项中,“username”为用户名,“password”为用户密码。
[[email protected] ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml #编辑此文件,添加允许访问的IP
allow="192.168.20.254|192.168.20.5|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
#在上面“allow=”后添加允许访问的IP,以管道符“ | ”为分割
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
#重启服务验证
[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh
[[email protected] ~]# /usr/local/tomcat/bin/startup.sh
4、使用客户端访问它的默认首页,然后点击“Manager App”,会看到以下界面,输入用户名及密码:
5、登录后,即可看到我们的Tomcat根目录下的自定义目录:
6、下拉页面,可以通过war包添加自定义的目录:
1)准备war包:
[[email protected] ~]# vim index.jsp #编写jsp网页文件
test
test
[[email protected] ~]# jar -cvf test.war index.jsp #做成war包,名为“test.war”
2)在web图形界面,添加war包:
3)部署后,即可看到以下内容:
4)客户端可以访问TomcatIP+8080端口+/aaa进行访问测试,其内容就是我们做的war包中的内容,如下:
———————— 本文至此结束,感谢阅读 ————————
原文地址:https://blog.51cto.com/14154700/2445740