标签:控制 rtu 虚拟 line 测试的 流量 调整 make 初始
Linux Tomcat JSP动态网页解析 v7.0 ★★★1 Tomcat 概述
Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,Tomcat本身也是一个HTTP服务器,可以单独使用,apache是一个以C语言编写的HTTP服务器。Tomcat主要用来解析JSP语言。目前最新版本为8.0。
常见版本:5.5x 6.0x 7.0x
官网: Apache.tomcat.org
2 Tomcat JDK
JDK: java开发工具包,包含 JRE、javac 、javaw工具
JRE:java运行环境,在JDK包中
SDK:辅助开发工具, java开发的套件
针对不同使用的类库
J2EE: 企业应用
J2SE: 标准
J2ME: 手机
3 Tomcat 安装
安装tomcat之前需要安装jdk (Java Development Kit) 是 Java 语言的软件开发工具包(SDK)),这里选择jdk-6u18-linux-x64-rpm.bin,bin文件安装跟sh文件方法一样,sh ./ jdk-6u18-linux-x64-rpm.bin,回车即可,默认安装到/usr/java/jdk1.6.0_18目录下。
下载JDK与Tomcat.
? jdk下载地址:
? http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
? http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.rpm
http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz?AuthParam=1480477540_8dd19bbd8e9b40171c9830eba9d480a6
配置JDK环境变量
配置java环境变量,vi /etc/profile 添加如下语句:
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
source /etc/profile //使环境变量立刻生效。
java -version //查看java版本,显示版本为1.6.0_18,证明安装成功。
? tomcat下载地址:
http://tomcat.apache.org
wget –c http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.0.39/bin/apache-tomcat-8.0.39.tar.gz
在官网下载tomcat相应版本,下载完后解压:
tar -xzf apache-tomcat-6.0.30.tar.gz
;mv apache-tomcat-8.0.39 /usr/local/tomcat即可。
启动tomcat,命令为:/usr/local/tomcat/bin/startup.sh
查看ps -ef |grep tomcat 进程及端口是否存在,
通过页面访问可以看到tomcat默认测试页面:
生成链接以便版本升级
ln -s apache-tomcat-7.0.54 server
生成链接以便版本升级
ln -s jdk1.7.0_55 latest
ln -s latest default
4 Tomcat 配置文件详解
<Server>................................Server层
<Service>............................Service层
<Connector/>
<Engine>..........................Engine层
<Host>.........................Host层
<Context/>...............Context层
</Host>
</Engine>
</Service>
<Server>
Server层
对应Server组件,表示整个Tomcat(Catalina Servlet容器),它处于Tomcat顶层,可以包含一个或多个Service层。
对应Service组件,是Server层中的一个逻辑功能层,包含一个Engine层,以及一个或多个Connector,Service组件将一个或多个Connector组件绑定到Engine层上,Connector组件侦听端口,获得用户请求,并将请求转发到Engine层处理,同时把处理结果转发给用户,从而实现一个特定的功能。
Engine层
对应Engine组件,负责请求分发处理,可以连接多个Connector,它从Connector接收请求后,解析出可以完成用户请求的URL,根据URL可以把请求匹配到正确的Host上,当Host处理完用户请求后,Engine层把结果返回给适合连接器,再由连接器传输给用户。
Host层
对应Host组件,表示一个虚拟主机,一个Engine层可以包含多个Host层,每个Host层可以包含一个或多个Context层,对应不同的web应用。
Context层
对应Context组件,代表某个虚拟主机上的实际目录或一个WAR,即单个Web应用程序,它运行在特定的虚拟主机中,使用最为频繁。一个Host层包含多个Context层,每一个Context都有唯一的路径,Host层接到请求后,根据用户请求的URL,将请求定位到Context层。
元素名 属性 解释
server port 指定一个端口,这个端口负责监听关闭tomcat 的请求
shutdown 指定向端口发送的命令字符串
service name 指定service 的名字
Connector ( 表示客户端和service之间的连接) port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
minProcessors 服务器启动时创建的处理请求的线程数
maxProcessors 最大可以创建的处理请求的线程数
enableLookups 如果为true ,则可以通过调用request.getRemoteHost() 进行DNS 查询来得到远程客户端的实际主机名,若为false 则不进行DNS 查询,而是返回其ip 地址
redirectPort 指定服务器正在处理http 请求时收到了一个SSL 传输请求后重定向的端口号
acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
connectionTimeout 指定超时的时间数( 以毫秒为单位)
Engine ( 表示指定service 中的请求处理机,接收和处理来自Connector的请求) defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host 元素的name 属性值是一样的
Context ( 表示一个web 应用程序,通常为WAR 文件,关于WAR 的具体信息见servlet 规范) docBase 应用程序的路径或者是WAR 文件存放的路径
path 表示此web 应用程序的url 的前缀,这样请求的url为http://localhost:8080/path/ ****
reloadable 这个属性非常重要,如果为true ,则tomcat 会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes 目录的变化,自动装载新的应用程序,我们可以在不重起tomcat 的情况下改变应用程序
host ( 表示一个虚拟主机 ) name 指定主机名
appBase 应用程序基本目录,即存放应用程序的目录
unpackWARs 如果为true ,则tomcat 会自动将WAR 文件解压,否则不解压,直接从WAR 文件中运行应用程序
Logger ( 表示日志,调试和错误信息) className 指定logger 使用的类名,此类必须实现org.apache.catalina.Logger 接口
prefix 指定log 文件的前缀
suffix 指定log 文件的后缀
timestamp 如果为true ,则log 文件名中要加入时间,如下例:localhost_log.2001-10-04.txt
Realm ( 表示存放用户名,密码及role的数据库) className 指定Realm 使用的类名,此类必须实现org.apache.catalina.Realm 接口
Valve ( 功能与Logger 差不多,其prefix 和suffix 属性解释和Logger 中的一样) className 指定Valve 使用的类名,如用org.apache.catalina.valves.AccessLogValve 类可以记录应用程序的访问信息
directory 指定log 文件存放的位置
pattern 有两个值,common 方式记录远程主机名或ip 地址,用户名,日期,第一行请求的字符串,HTTP 响应代码,发送的字节数。combined 方式比common 方式记录的值更多
<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" # HTTP连接方式
connectionTimeout="20000"
redirectPort="8443" /> # 重定向8443
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
注意:tomcat的配置文件中的注释内容不能使用#号,而要使用<!-- xxxxxx -->
5 Tomcat 定义发布目录
默认发布目录: /usr/local/tomcat/webapps/ROOT
【注】:修改发布目录时,要把源webapps/目录下所有文件rm –rf *,否则tomcat默认去找原目录
Vi /usr/local/tomcat/conf/server.xml
修改程序部署路径:
方法1:
<Host name="localhost" appBase="E:\www\javapms" unpackWARs="true" autoDeploy="true">
appBase="E:\www\javapms" 设置程序部署路径,
在server.xml尾部的</Host>前面插入下面一行参数。
方法2:<Context path="/" docBase="/data/webapps/www" reloadable="true"/>
</Host> #此处插入
path:浏览器访问时的路径名
docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径,不是项目的路径。其实也就是编译后的项目
reloadble:设定项目有改动时,tomcat是否重新加载该项目
测试网页index.jsp
<html>
<body>
<h1>tomcat jsp test page</h1>
<%=new java.util.Date()%>
</body>
</html>
6 Tomcat 服务与端口
【注意】:生产环境中,tomcat有二个工作目录,
[root@tomcat01 tomcat8]# ll
rw-r--r--. 1 root root 16195 11月 9 2016 RUNNING.txt
drwxr-xr-x. 4 root root 4096 11月 30 08:51 temp
drwxr-xr-x. 7 root root 4096 11月 29 08:53 webapps
drwxr-xr-x. 3 root root 21 11月 14 23:22 work
此工作目录发产生一些临时文件,建议在重启tomcat的时候,手动清空这二个文件夹。
6.1 启动和关闭
常用java解析器: tomcat resin jboss weblogic websphere
生产使用环境:tomcat6.0
生产管理环境:
chown -R tomcat.tomcat /usr/local/jdk/
chown -R tomcat.tomcat /usr/local/tomcat
su - tomcat 切换到tomcat用户下执行启动tomcat
停止
PID =$(ps -ef |grep java |grep -v "grep"|awk ‘{print $2}‘) # 通过shell取java的PID
Kill -9 PID
/usr/local/tomcat8/bin/shutdown.sh
启动
/usr/local/tomcat8/bin/startup.sh
6.2 默认端口:8005 8080 8009
关管端口 shutdown.sh的控制端口
访问端口 http连接端口
代理端口
6.3 防火墙配置:
打开防火墙,使外部能访问
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
service iptables save
service iptables restart
或直接修改文件/etc/sysconfig/iptables.
vi /etc/sysconfig/iptables
A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
service iptables restart
在浏览器输入: http://192.168.16.133:8080
如在本机可以输入: http://localhost:8080
出现tomcat的页面表示安装成功.
6.4 jsp测试页:
vim /usr/local/tomcat8/webapps/ROOT/index.jsp
<html>
<body>
<center>Now time is: <%=new java.util.Date()%></center>
</body>
</html>
7 Tomcat 管理 进程脚本
/usr/local/tomcat/webapps/ROOT 发布目录 tomcat
如果启动多个tomcat服务,需要修改 800
8080 8009端口, 复制一次tomcat目录
Tomcat守护进程脚本
!/bin/bash
usage(){
echo "USAGE: start | stop | status"
}
define PID
tomcat_pid=ps -ef |grep tomcat | grep -v "grep" |awk ‘{print $2}‘
TOMCAT_PATH=/usr/local/tomcat/
start(){
/usr/local/tomcat8/bin/startup.sh
}
status(){
ps -ef |grep tomcat | grep -v "grep"
}
stop(){
kill -9 $tomcat_pid
sleep 5
cd $TOMCAT_PATH
rm temp/ -rf
rm work/ -rf
TOMCAT_STATUS=$tomcat_pid
if [ -z $TOMCAT_STATUS ];then
echo "tomcat stop"
else
kill -9 $tomcat_pid
fi
}
MAIN(){
case $1 in
start)
start
;;
stop)
stop
;;
status)
status
;;
*)
usage
esac
}
MAIN $1
8 Tomcat 安全管理配置规范
8.1 管理端口保护8005
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 35830/java
[root@apache01 webapps]# telnet 127.0.0.1 8005
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ‘^]‘.
SHUTDOWN
能过telnet命令连接到8005端口,可以执行SHUTDOWN命令关闭tomcat
优化方案:
修改默认的8005端口,修改shutdown指定字符串
<Server port="8005" shutdown="SHUTDOWN">
将端口修改成随机端口,将关闭命令修改成任意字符
8.2 ajp连接端口8009
修改默认的8009端口,通过Iptables控制ajp端口访问
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
保护此端口的目的在于防止线下的测试流量被mod_jk转发至线上tomcat服务器
8.3 禁用管理端
删除tomcat/目录的一些host-manager docs examples 或者将tomcat的目录设定为
tomcat以外的目录
对于前端web模块,tomcat管理端属于tomcat高危安全隐患,一旦被攻破,×××通过上
传web shell的方式将会直接取得服务器的控制
修改默认的发布目录站点位置
<Context path="/" docBase="/data/webapps/www" debug="0" reloadable="true" crossContext="true"/>
8.4 降权启动
以非root用户启动tomcat
8.5 文件列表访问控制
conf/web.xml文件中default部分listings的配置必须为false;
false为不列出目录文件,true为允许,默认false
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
8.6 版本信息隐藏
1.修改conf/web.xml,重定向403,404以及500等错误到指定的错误页面,
2. 也可以修改应用程序目录下的WEB-INF/web.xml下的配置进行错误页面的重定向
<error-page>
<error-code>403</error-code>
<location>/forbidden.jsp</location>
<error-code>404</error-code>
<location>/notfound.jsp</location>
</error-code>
<error-page>
<error-code>500</error-code>
<location>/systembusy.jsp</location>
</error-page>
在配置中对一些常见错误进么重定向,避免当出现错误时,tomcat默认显示的错误页面暴
露服务器和版本信息,必须确保程序根目录下的错误页面已经存在
8.7 server header重写
在HTTP Connector配置中加入server的配置
server="webserver"
当tomcat HTTP端口直接提供web服务时,此配置生效,加入此配置,将会替换http响
应server header部分的默认配置,默认是Apache-Coyote/1.1
示例:
[root@tomcat01 conf]# curl --head 127.0.0.1:8080
HTTP/1.1 403 Forbidden
Server: Apache-Coyote/1.1
Cache-Control: private
Expires: Thu, 01 Jan 1970 08:00:00 CST
Content-Type: text/html
Content-Length: 559
Date: Sun, 31 Dec 2017 14:28:10 GMT
修改配置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" server="nginx1.1"/>
修改后的结果
[root@tomcat01 scripts]# curl --head 10.204.3.7:8080
HTTP/1.1 403 Forbidden
Cache-Control: private
Expires: Thu, 01 Jan 1970 08:00:00 CST
Content-Type: text/html
Content-Length: 559
Date: Sun, 31 Dec 2017 14:33:57 GMT
Server: nginx1.1
8.8 访问限制
通过限制,限制访问的ip来源
ip的白名单,拒绝非白名单IP的访问,此配置主要是针对高保密级别的系统,
<Context docBase="/data/webapps/www" debug="0" reloadable="false" crossContext="true"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.10,192.168.1.*" deny="*.*.*.*" />
</Context>
8.9 起停脚本权限回收
去除其他用户对tomcat的bin目录下的shutdown.sh startup.sh catalina.sh的执行权限
chmod -R 744 tomcat/bin/*
8.10 访问日志格式规范
开启tomcat默认访问日志中的referer和User-Agent记录,是为了一旦出现安全问题能够更好的根据
日志进行问题排查
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t %r %b %{Referer}i %{User-Agent}i $D" resolveHosts="false" />
9 Tomcat的状态管理和host管理
管理状态页文件
/usr/local/tomcat8/webapps/manager
修改配置文件
vim /usr/local/tomcat8/conf/tomcat-users.xml
在最后</tomcat-users>段前添加的内容如下:
<role rolename="admin-gui"/>
<user username="tomcat" password="s3cret" roles="admin-gui"/>
重启服务
访问状态页
http://10.204.3.6:8080/manager
10 Tomcat 多实例
11 Tomcat 性能优化
11.1 硬件资源优化
比如内存,硬盘
11.2 架构上的优化
利用缓存和压缩 在nginx前端
做动静分离 缓解tomcat压力
搭建集群 采用nginx请求分流
11.3 JVM参数调优
优化文件: /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="
server
Xms6000M
Xmx6000M
Xss512k
XX:NewSize=2250M
XX:MaxNewSize=2250M
XX:PermSize=128M
XX:MaxPermSize=256M
XX:+AggressiveOpts
XX:+UseBiasedLocking
XX:+DisableExplicitGC
XX:+UseParNewGC
XX:+UseConcMarkSweepGC
XX:MaxTenuringThreshold=31
XX:+CMSParallelRemarkEnabled
XX:+UseCMSCompactAtFullCollection
XX:LargePageSizeInBytes=128m
XX:+UseFastAccessorMethods
XX:+UseCMSInitiatingOccupancyOnly
Duser.timezone=Asia/Shanghai
Djava.awt.headless=true"
参数的详细配置,参考:http://blog.51cto.com/zhongliang/2101918
11.4 Tomcat 参数优化
这里着重讲解tomcat参数的优化:server.xml文件,关闭DNS查询、配置最大并发等参数。
maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
当然这些值都不是越大越好,需要根据实际情况来设定。可以基于测试的基础上来不断的调优分析。
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" 连接超时
redirectPort="8443"
maxThreads="500" 最大线程 就是最大并发数
minSpareThreads="20" 最小空闲线程数
acceptCount="100" 队列大小 等待处理的
disableUploadTimeout="true" 类似于Apache中的keeyalive一样
enableLookups="false" 关闭DNS查询
URIEncoding="UTF-8" />
maxSpareThreads : 最大空闲线程数
acceptCount是当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuse connection
压缩
compression=”on” compressionMinSize=”2048″ compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”
11.5 外部调优
禁用DNS查询
调整线程数(线程池)
maxThreads="600" 最大线程数
minSpareThreads="100" 初始化时创建的线程数
maxSpareThreads="500" 一旦创建的线程越过这个值,Tomcat就会关闭不再需要的socket线程
acceptCount="700" 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
压缩
11.6 java工具 监控和管理控制台
在windows端安装jdk包,找到以下命令
在c:\ Program Files\jdk\bin\jconsole.exe 监控和管理控制台
通过IP:端口连接到监控和JAVA控制台
在c:\ Program Files\jdk\bin\jvisualvm.exe
通过IP:端口连接 管理工具
在tomcat服务器上修改配置文件
catalina.sh中加入配置,放置在#!/bin/bash标签下
vim /usr/local/tomcat8/bin/catalina.sh
!/bin/bash
CATALINA_OPTS="$CATALINA_OPTS
Djava.rmi.server.hostname=10.204.3.7
Dcom.sun.management.jmxremote
Dcom.sun.management.jmxremote.port=12345
Dcom.sun.management.jmxremote.authenticate=true
Dcom.sun.management.jmxremote.ssl=false
Dcom.sun.management.jmxremote.pwd.file=/usr/local/jdk1.7/jre/lib/management/jmxremote.password"
配置权限文件
cd /usr/local/jdk1.7/jre/lib/management/
cp jmxremote.password.template jmxremote.password
vi jmxremote.password
zhongliang 123456 # 用户名zhongliang 密码249765270
chmod 600 jmxremote.password
重启tomcat服务,开启监听端口12345
连接jconsole和jvisualvm
输入远程主机:端口 10.204.3.7:12345
选择文件—》添加JMX..连接—》10.204.3.7:12345
CPU使用情况 堆,垃级回收 抽样器
实时线程数
注意:在控制台上执行GC清理的时候,会出现前端断连
12 Zabbix监控tomcat
zabbix编译的时候,指定--enable-java
yum安装的时候,yum install zabbix-java
vim zabbix_server.conf
JavaGateway=192.168.3.14
JavaGatewayPort=10052
StartJavaPollers=5
第三方工具,cmdline-jmxclient
http://crawler.archive.org/cmdline-jmxclient/
13 Apache整合tomcat
安装httpd
安装tomcat
编译生成mod_jk。
下载tomcat-connectors-1.2.42-src.tar.gz包
Wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz
tar xzvf tomcat-connectors-1.2.42-src.tar.gz
cd tomcat-connectors-1.2.42/native
./configure --with-apxs=/usr/local/apache2/bin/apxs
make
cp ./apache-2.0/mod_jk.so /usr/local/apache/modules/
配置。
在/usr/local/apache/conf/下面建立两个配置文件mod_jk.conf和workers.properties。
vi mod_jk.conf#######################
添加以下内容:
指出mod_jk模块工作所需要的工作文件workers.properties的位置
JkWorkersFile /usr/local/apache/conf/workers.properties
Where to put jk logs
JkLogFile /usr/local/apache/logs/mod_jk.log
Set the jk log level [debug/error/info]
JkLogLevel info
Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /servlet/ worker1
JkMount /.jsp worker1
vi workers.properties###########################
添加以下内容:
Defining a worker named worker1 and of type ajp13
worker.list=worker1
Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
整合apache和tomcat
Vim httpd.conf#############
DirectoryIndex index.jsp index.html
添加index.jsp
LoadModule jk_module modules/mod_jk.so
加载mod_jk.so模块
Include /usr/local/apache/conf/mod_jk.conf
引入配置文件
将tomcat和apache的发布目录设置成一致。建立站点文件index.jsp
14 Nginx整合Tomcat 集群
T_INSTALL_DIR=/usr/local/tomcat
Port=export 8005+1
复制多个tomcat到tomcat1 tomcat2 tomcat3
修改对应每个发布目录的端口
安装nginx
tar zxvf nginx-1.7.8.tar.gz //解压
cd nginx-1.7.8
./configure --with-http_stub_status_module --with-http_ssl_module//启动server状态页和https模块
make && make install
修改nginx.conf配置文件,添加一个location
location ~ .(jsp|do)$ {
index index.jsp;
proxy_pass http://192.168.74.129:8081; //来自jsp或者do的后缀的请求交给tomcat处理</span>
proxy_redirect off;
proxy_set_header Host $host; //后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; //允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; //缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout 90; //nginx跟后端服务器连接超时时间
proxy_read_timeout 90; //连接成功后,后端服务器响应时间
proxy_buffer_size 4k; //设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 6 32k; //proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k;//高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; //设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
tomcat虚拟主机
tomcat 配置状态信息
tomcat配置错误页面优雅显示
tomcat配置管理页面
tomcat 配置日志管理
15 Tomcat故障
日志文件
/usr/local/tomcat/logs/catalina.out
【注】:tomcat查端口时正常,服务正常,但访问后,服务消失,
问题原因:因为配置文件不正确,导致报错,服务自动停止
解决方法:检查配置文件
例如:配置文件中没有定义发布目录,但是发布目录中的ROOT已被删除,会导致此类问题发生
15.1 cannot execute binary file
/usr/local/tomcat8/bin/catalina.sh: line 433: /usr/local/jdk1.8/bin/java: cannot execute binary file
[root@tomcat01 local]# java --version
bash: /usr/local/jdk1.8/bin/java: cannot execute binary file
原因:软件版本与系统版本不一致
15.2 insufficient free space available after evicting expired cache entries-consider increasing the maximum size of the cache.
tomcat部署jenkins启动报错:
insufficient free space available after evicting expired cache entries-consider increasing the maximum size of the cache.
解决该问题方法,修改tomcat/conf/context.xml文件,增加资源最大可缓存的大小:
<Resources
cachingAllowed="true"
cacheMaxSize="102400"
/>
标签:控制 rtu 虚拟 line 测试的 流量 调整 make 初始
原文地址:http://blog.51cto.com/zhongliang/2152908