tomcat安装
tomcat安装在IP为y.y.y.y的服务器上
第一步,在/mnt文件夹中新建三个分别命名为server-jre、tomcat7和tomcat7-2的文件夹。
第二步,在server-jre文件夹下进行下载server-jre-8u202-linux-x64。到地址:Apache Tomcat® - Welcome!下载apache-tomcat-7.0.90的tar.gz压缩包。然后使用WinSCP将apache-tomcat-7.0.90压缩包上传到/mnt文件夹中的tomcat7和tomcat7-2文件夹。
命令:cd /mnt/server-jre
wget https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html/jre-8u202-linux-x64.tar.gz
第三步,分别在server-jre、tomcat7和tomcat7-2三个文件夹下进行解压tar.gz压缩包。
命令:cd /mnt/server-jre
tar -zxvf server-jre-8u202-linux-x64.tar.gz
cd /mnt/tomcat7
tar -zxvf apache-tomcat-7.0.90.tar.gz
cd /mnt/tomcat7-2
tar -zxvf apache-tomcat-7.0.90.tar.gz
第四步,配置jre环境变量,打开/etc/profile文件,在文件底部另起一行,加上下面三行代码:
export JRE_HOME=/mnt/server-jre/jdk1.8.0_202 export PATH=$PATH:$JRE_HOME/bin export CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar
第五步,测试server-jre是否配置成功。
命令:source /etc/profile #刷新profile文件
java -version #查看jdk版本
如果成功显示server-jre的版本,则说明server-jre配置成功。
tomcat配置及启动
第一步,配置tomcat环境变量,打开/etc/profile文件,在文件底部添加配置之后显示如下:
export JRE_HOME=/mnt/server-jre/jdk1.8.0_202 #tomcat1 export CATALINA_HOME=/mnt/tomcat7/apache-tomcat-7.0.90 export CATALINA_base=/mnt/tomcat7/apache-tomcat-7.0.90 export TOMCAT_HOME=/mnt/tomcat7/apache-tomcat-7.0.90 #tomcat2 export CATALINA_2_HOME=/mnt/tomcat7-2/apache-tomcat-7.0.90 export CATALINA_2_base=/mnt/tomcat7-2/apache-tomcat-7.0.90 export TOMCAT_2_HOME=/mnt/tomcat7-2/apache-tomcat-7.0.90 export PATH=$PATH:$JRE_HOME/bin:$CATALINA_HOME/bin:$CATALINA_2_HOME/bin export CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar
命令:source /etc/profile #刷新profile文件
第二步,编辑配置tomcat7和tomcat7-2中的server.xml文件。
进入文件夹/mnt/tomcat7/apache-tomcat-7.0.90/conf,编辑server.xml。server.xml文件代码如下:
...#port设置为8009 ... ...
进入文件夹/mnt/tomcat7-2/apache-tomcat-7.0.90/conf,编辑server.xml。server.xml文件代码如下:
...#port设置为8010 ... ...
第三步,编辑配置/mnt/tomcat7-2/apache-tomcat-7.0.90/bin下的 catalina.sh文件。为防止出错,先提前备份一下,然后把catalina.sh 和startup.bat文件中的变量CATALINA_HOME、CATALINA_base和CATALINA_TMPDIR对应替换成与环境变量配置时一致的CATALINA_2_HOME、CATALINA_2_base和CATALINA_2_TMPDIR,最后给予权限。
命令:cd /mnt/tomcat7-2/apache-tomcat-7.0.90/bin
chmod a+x catalina.sh
第四步,编辑配置tomcat7和tomcat7-2文件夹中的startup.sh 和 shutdown.sh文件。
/mnt/tomcat7/apache-tomcat-7.0.90/bin下的startup.sh文件代码如下:
#!/bin/sh ... # Start script for the CATALINA Server # --------------------------------------------------------- export CATALINA_base=$CATALINA_base export CATALINA_HOME=$CATALINA_HOME export TOMCAT_HOME=TOMCAT_HOME # Better OS/400 detection: see Bugzilla 31132 ...
/mnt/tomcat7/apache-tomcat-7.0.90/bin下的shutdown.sh文件代码如下:
#!/bin/sh ... # Stop script for the CATALINA Server # --------------------------------------------------------- export CATALINA_base=$CATALINA_base export CATALINA_HOME=$CATALINA_HOME export TOMCAT_HOME=TOMCAT_HOME # Better OS/400 detection: see Bugzilla 31132 ...
/mnt/tomcat7-2/apache-tomcat-7.0.90/bin下的startup.sh文件代码如下:
#!/bin/sh ... # Start script for the CATALINA Server # --------------------------------------------------------- export CATALINA_base=$CATALINA_2_base export CATALINA_HOME=$CATALINA_2_HOME export TOMCAT_HOME=TOMCAT_2_HOME # Better OS/400 detection: see Bugzilla 31132 ...
/mnt/tomcat7-2/apache-tomcat-7.0.90/bin下的shutdown.sh文件代码如下:
#!/bin/sh ... # Stop script for the CATALINA Server # --------------------------------------------------------- export CATALINA_base=$CATALINA_2_base export CATALINA_HOME=$CATALINA_2_HOME export TOMCAT_HOME=TOMCAT_2_HOME # Better OS/400 detection: see Bugzilla 31132 ...
第五步,测试tomcat是否配置成功。
命令:cd /mnt/tomcat7/apache-tomcat-7.0.90/bin
./startup.sh
netstat -ntl | grep 9004
cd /mnt/tomcat7-2/apache-tomcat-7.0.90/bin
./startup.sh
netstat -ntl | grep 9006
如果结果成功显示“Tomcat started”,则说明tomcat成功启动。
如果tomcat启动失败,那么可能就是启动时使用的端口被其他应用程序占用了,可以查看端口被哪个应用程序占用了。
命令:lsof -i:端口号
ps -ef | grep 进程号PID
tomcat成功启动后,然后直接根据IP和端口在本地浏览器访问。
如果页面成功显示“Apache Tomcat/8.5.73”,则说明tomcat配置成功。
如果发现访问不到,可以查看防火墙是否开着。
命令:systemctl status firewalld.service #查看防火墙的状态
systemctl stop firewalld.service #临时将防火墙关闭
关闭tomcat命令:./shutdown.sh
tomcat内存优化
第一步,进入/mnt/tomcat7/apache-tomcat-7.0.90/bin文件夹,编辑catalina.sh文件,在前面加入下面代码:
JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"
Windows编辑tomcat7/apache-tomcat-7.0.90/bin/catalina.bat,在前面加入下面代码:
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m
最大堆内存是1024m,对于现在的硬件还是偏低,实施时,还是按照机器具体硬件配置优化。
第二步,内存设置成功后,可以利用server-jre中的工具进行验证。
jps:用来显示本地的java进程,以及进程号,进程启动的路径等。
进入/mnt/server-jre/jdk1.8.0_202/bin,输入“jps”。
如果显示以下结果:
786 Bootstrap
2548 Jps
746 Bootstrap
(Bootstrap就是启动的tomcat,其进程号为786和746。),
那么已经配置成功。
tomcat 线程优化
maxThreads的配置绝对不是越大越好。maxThreads的配置并没有一个最优值,一定要根据具体情况来配置。
最好的做法是:在不断测试的基础上,不断调整、优化,才能得到最合理的配置。acceptCount大于等于maxThreads,这个值主要根据应用的访问峰值与平均值来权衡配置的。如果设的较小,可以保证接受的请求较快响应,但是超出的请求可能就直接被拒绝。如果设的较大,可能就会出现大量的请求超时的情况,因为系统的处理能力是一定的。maxThreads配置要结合JVM -Xmx参数调整,即要考虑内存开销。
第一步,进入/mnt/tomcat7/apache-tomcat-7.0.90/conf文件夹,编辑server.xml文件,对http connector进行优化:
第二步,编辑修改
由于多个connector共享一个线程池,所以ajp connector也可以设置使用tomcatThreadPool线程池。
第三步,若使用apache和tomcat做集群的负载均衡,并且使用ajp协议做apache和tomcat的协议转发,则还需要对ajp connector进行优化:
第四步,由于tomcat有多个connector,而tomcat线程的配置又支持多个connector共享一个线程池,因此增加下面的代码进行优化:
禁用DNS查询
当web应用程序想要记录客户端的信息时,也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。
DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。
修改/mnt/tomcat7/apache-tomcat-7.0.90/conf/server.xml文件中的Connector元素,修改属性enableLookups参数值: enableLookups="false"
如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。
设置session过期时间
tomcat采用数据库连接池技术,当用户在一定时间内不对数据库进行操作,tomcat就会自动关闭连接,这是为了更好地利用资源,防止浪费宝贵的数据库连接资源。
/mnt/tomcat7/apache-tomcat-7.0.90/conf/web.xml文件中通过参数指定:
180 #单位为分钟
APR插件提高Tomcat性能
tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术。APR有很多用途,包括访问高级I/O功能(如sendfile,epoll和OpenSSL),OS级别功能(随机数生成,系统状态等),本地进程管理(共享内存,NT管道和UNIX sockets)。
在产品环境中,特别是直接使用tomcat做WEB服务器的时候,应该使用Tomcat Native来提高其性能。要测APR给tomcat带来的好处,最好的方法是在慢速网络上(模拟Internet),将tomcat线程数开到300以上的水平,然后模拟一大堆并发请求。如果不配APR,300个线程就会很快用满,以后的请求就只好等待。但是配上APR之后,并发的线程数量明显下降,可能马上会从原来的300下降到几十,新的请求会毫无阻塞的进来。
在局域网环境中,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间连0.1%都不到,绝大部分时间都用来页面传输。如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用APR是非常必要的。
第一步,安装APR和tomcat-native。
第一种
先在/etc/profile文件中新增下面代码:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/apr/lib export LD_RUN_PATH=$LD_RUN_PATH:/mnt/apr/lib
环境变量生效命令:source /etc/profile
然后安装APR和tomcat-native:
命令:yum install apr apr-devel make gcc-c++ openssl openssl-devel
cd /mnt/tomcat7/apache-tomcat-7.0.90/bin
tar zxvf tomcat-native.tar.gz
cd tomcat-native-1.2.17-src/native
./configure
make
make install
第二种
cd /mnt/apr
wget http://archive.apache.org/dist/apr/apr-1.4.8.tar.gz
tar zxvf apr-1.4.8.tar.gz
cd apr-1.4.8
./configure
make
make install
cd /mnt/apr/lib
wget http://archive.apache.org/dist/apr/apr-util-1.5.1.tar.gz
tar zxvf apr-util-1.5.1.tar.gz
cd apr-util-1.5.1
./configure --with-apr=/mnt/apr/apr-1.4.8
make
make install
cd /mnt/tomcat7/apache-tomcat-7.0.90/bin
tar zxvf tomcat-native.tar.gz
cd tomcat-native-1.2.17-src/native
./configure --with-apr=/mnt/apr/apr-1.4.8
make
make install
第二步,设置tomcat整合APR。
修改tomcat的启动程序startup.sh,在程序中加入启动参数:
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/mnt/apr/lib"
重新启动tomcat服务,然后查看catalina.out文件。如果在catalina.out中出现“org.apache.coyote.http11.Http11Protocol init”,则说明安装成功。
tomcat的安全配置
第一步,当tomcat安装成功后,需要做的事情如下:
首次安装完成后立即删除webapps下面的所有代码
命令:rm -rf /mnt/tomcat7/apache-tomcat-7.0.90/webapps/*
注释或删除tomcat-users.xml所有用户权限。
第二步,隐藏tomcat版本。
首先找到/mnt/tomcat7/apache-tomcat-7.0.90/lib/catalina.jar,
然后解压catalina.jar,按照路径/org/apache/catalina/util/找到ServerInfo.properties文件。
命令:cd /mnt/tomcat7/apache-tomcat-7.0.90/lib
jar xvf catalina.jar
然后编辑修改ServerInfo.properties文件,把server.number和server.built置空。最后重新打成jar包,重启tomcat服务。
命令:cd /mnt/tomcat7/apache-tomcat-7.0.90/lib
jar cvf catalina.jar meta-INF org
第三步,隐藏tomcat 的服务类型。
/mnt/tomcat7/apache-tomcat-7.0.90/conf/server.xml文件中,为connector元素添加server=" ",注意不是空字符串,是空格组成的长度为1的字符串,或者输入其他的服务类型,在response header中就没有server的信息。
第四步,应用程序安全。
关闭war自动部署,设置unpackWARs="false" autoDeploy="false",防止被植入木马等恶意程序。
第五步,修改服务监听端口。
一般公司的tomcat都是放在内网的,因此针对tomcat服务的监听地址都是内网地址。
修改实例:



