Tomcat简介

2017-01-10  本文已影响0人  断尾壁虎V

JAVA介绍

Java有很多常见的名词,由于java是通过过java虚拟机运行的,所以在运行java的主机上需要配置java环境,常见的名词有如下几种:

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Tomcat安装部署

Tomcat需要java的运行环境,在安装Tomcat时,需要安装JDK.

yum install java -y

在官方下载pache-tomcat-8.5.9.tar.gz, 解压到/usr/local目录下,并创建软链接:

ln -s  /usr/local/apache-tomcat-8.5.9    /usr/local/tomcat

添加系统账户tomcat,并添加文件权限:

useradd  -u 1001 tomcat 
chown -R  tomcat:tomcat  /usr/local/tomcat

启动tomcat:

 /usr/local/tomcat/bin/startup.sh 

通过查看端口,可以发现启动了8080,8005和8009端口:

[root@localhost local]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp6       0      0 :::8009                 :::*                    LISTEN      9229/java           
tcp6       0      0 :::8080                 :::*                    LISTEN      9229/java                 
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      9229/java      

tomcat的服务器主配置文件在/usr/local/tomcat/conf/server.xml中,其中指定了默认的3个端口:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

tomcat的站点根目录为:/usr/local/tomcat/webapps/ROOT
当修改tomcat的配置文件之后需要重启服务(使用tomcat用户):

$ /usr/local/tomcat/bin/shutdown.sh
$ /usr/local/tomcat/bin/startup.sh 

提示:在生产环境中,有时通过tomcat自带的脚本是无法停止服务的,一般会自定义脚本,使用kill 命令来结束进程,也可以多次使用kill -9 命令终止服务。
在重启tomcat服务前,需要删除上次启动服务所加载的缓存文件,默认目录为/usr/local/tomcat/work/usr/local/tomcat/temp 避免缓存原因造成不必要的问题。

Tomcat 服务状态管理

Tomcat在默认的其实页面列出了后端管理的选项,生产中可以利用这些状态参数监控tomcat服务器的运行情况。在默认的设置中,是没有权限查看的,如果要实现特定IP段访问Tomcat服务器服务状态信息,需要配置tomcat-users.xml文件。
添加用的访问权限,在/usr/local/tomcat/conf/tomcat-users.xml末尾添加用户和授权:

# vim /usr/local/tomcat/conf/tomcat-users.xml 

 <role rolename="manager-gui" />
 <role rolename="admin-gui" />
 <user username="tomcat" password="1qaz2wsx" roles="manager-gui" />
</tomcat-users>

修改上述文件需要重启tomcat,配置完成之后就可以在本机访问后端的管理信息。
如果让除本机之外的其他IP段访问tomcat管理节点信息,需要修改context.xml
Tomcat在8.5.4及以上版本对<tomcat>/webapps/manager/META-INF/context.xml 做出了调整,只需要修改对应的allow IP正则部分即可:

<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" />
</Context>

将127部分修改为其他网段的地址,\d 表示[0-9],如果只是单独修改此 context.xml 不需要重启tomcat即可生效。

为了安全,需要移除多余的后台管理组件,可以将/usr/local/tomcat/webapps目录下的host-managerexamples,docs目录直接移除。

Tomcat 安全设置

  1. 管理端口配置
    系统监听的8005端口可以实现关闭tomcat服务,这里需要关闭此端口或修改SHUTDOWN命令:
# netstat -lntp|grep 8005
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      10914/java          

在配置文件server.xml将端口修改为8792,SHUTDOWN命令修改为DONTTUCH:

<Server port="8792" shutdown="DONTTOUCH">

重启tomcat后端口改变,即时连上此端口,使用原来的SHUTDOWN命令也无法关闭tomcat了:

# netstat -lntp|grep 8792
tcp6       0      0 127.0.0.1:8792          :::*                    LISTEN      11000/java          

8009 ajp端口的管理也需要进行配置,默认情况下可以关闭此端口。
将配置文件中的此项配置注释掉:

   <!--
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 
    -->

* 降权设置
  - 禁止root权限用户启动服务,尽量降低tomcat用户的目录访问权限。如果要使用80端口,可以配置iptables进行转发。
  - 文件列表的访问控制:`conf/web.xml`文件listings的配置文件必须为false(默认为false)禁止读取文件列表。
    ```
    <param-name>listings</param-name>
    <param-value>false</param-value>

$ curl --head http://172.16.10.60:8080/
HTTP/1.1 200
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 10 Jan 2017 07:08:25 GMT
Server: TRYINH



####Tomcat调优
Tomcat调优主要是对Tomcat自身内部进行调优和对外部应用和组件进行调优,外部的调优主要是操作系统,JVM,Nginx代理等,Tomcat自身的调优主要是禁止DNS查询,调整线程数,压缩等。
1. 禁止DNS查询
 当web应用程序要记录客户端的信息时,会记录客户端的IP地址或者通过域名服务器查找机器名 转换为IP地址,但是DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP,这样会消耗一定的时间。修改`server.xml`文件中的Connector元素,修改属性enableLookups参数值为*false*,若为false则不进行DNS查询,而是返回其ip地址:

<Connector
port="8887" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" />

* 调整线程数
   maxThreads="600"       ///最大线程数
  minSpareThreads="100"    ///初始化时创建的线程数maxSpareThreads="500"    ///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount="700"     //指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

<Connector port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100"
maxSpareThreads="500" acceptCount="700" connectionTimeout="20000" redirectPort="8443" />

* 启用压缩
Tomcat有一个通过在server.xml配置文件中设置压缩的选项。压缩可以在connector像如下设置中完成:

<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8181" compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />


* JVM堆内存优化
   Tomcat默认的内存参数比较小,在实际的生产环境中容易造成性能瓶颈,这种解决方法是通过增加JVM的栈内存实现的.在 linux系统下,内存优化需要修改TOMCAT_HOME/bin/catalina.sh,在文件末尾添加如下内容(最大堆内存是1024m):

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"

-Xms – 指定初始化时化的堆内存
-Xmx – 指定最大堆内存







上一篇下一篇

猜你喜欢

热点阅读