tomcat中的一些解释

news/2024/7/10 2:05:43 标签: tomcat, apache, 负载均衡, service, server, servlet
 使用 apache tomcat 配置一个可以应用的 web 网站,要达到以下要求: 1、  Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡 2、  为系统设定 Session 超时时间,包括 Apache tomcat 3、  为系统屏蔽文件列表,包括 Apache tomcat
2.    安装 tomcat
2.1. 下载,解压 tomcat
不要下载安装版 , 下载地址
http://tomcat.apache.org
2.2. 配置 tomcat
2.2.1 .     配置 server 的关闭口
我们需要在一台机器上跑 2 个不同的 tomcat ,需要修改不同的 tomcat 的关闭口,避免出现端口被占用的情况。在 server.xml 中找到 server, 将:
<Server port="8005" shutdown="SHUTDOWN">
改为
<Server port="XXXX" shutdown="SHUTDOWN">
XXXX 在这里表示不同的端口:我的两个 tomcat 分别使用 8035 8045
 
注意:这里之所以要配置不同的 tomcat 关闭口,只是因为我们使用了多个 tomcat ,其实用一个 server 多个实例也可以。
2.2.2 .     配置 service
我们需要对不同的 tomcat service 取不同的名字,在 server.xml 中找到:
<Service name="Catalina">
改为:
<Service name="XXXX">
两个 service 分别为 tomcat6 tomcat5
2.2.3 .     配置 Connector
这个部分主要是要改两个 Connector ,当然前提是你的 tomcat 只有两个 Connector
修改 ajp1.3 的端口:
找到: <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改为: <Connector port="XXXX" protocol="AJP/1.3" redirectPort="8443" />
两个 Service ajp/1.3 的端口分别为: 8019 8029
修改 http 的端口:
找到:
<Connector port="8080" protocol="HTTP/1.1"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443" />
改为:
<Connector port="XXXX" protocol="HTTP/1.1"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443" />
两个 Service ajp/1.3 的端口分别为: 8060 8070
2.2.4 .     配置 Engine
Engine 主要是配置 jvmRoute 属性,找到:
<Engine name="Catalina" defaultHost="localhost">
改为:
<Engine jvmRoute="XXXX" name="Catalina" defaultHost="localhost">
两个实例分别为: tomcat6 tomcat5.
2.2.5 .     配置公用性 Context
如果有 Context 是多个系统公用的,比如图片等的存放地,可以做个配置:
Host 中增加:
<Context path="/image" docBase="D:/webRoot/image" debug="0" reloadable="false" crossContext="true">
</Context>
2.2.6 .     屏蔽文件列表
打开 tomcat 目录下的 conf/web.xml
找到:
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
listings 参数改为 false;
2.3. 配置应用 (web.xml)
对系统应用做些控制。
配置 session 过期时间,大多数网站用户都只是做些浏览性的操作,为了减轻服务器负载压力,我们将 session 超时时间从默认的 30 分钟变为 5 分钟。
web 应用程序的 web.xml servlet-mapping 之后增加如下一段:
<session-config>
    <session-timeout>5</session-timeout>
</session-config>
3.    安装 Apache
3.1. 下载、安装 Apache
下载地址 http://httpd.apache.org/download.cgi
下载后点击安装 msi 文件。
安装的时候没有什么特别需要注意的地方,按照默认就行了。是否安装为 service 看具体情况而定。
3.2. 下载、安装 Apache tomcat Connector
http://tomcat.apache.org/download-connectors.cgi
注意,很多网站上都介绍是 JK2 ,可能是觉得 JK2 JK 要新吧,其实 JK2 已经停止研发了,建议使用 jk1.2
下载压缩包,之后将 module 目录中的 mod_jk-apache****.so 文件放入 /module/ 目录下。
3.3. 配置 Apache httpd.conf
3.3.1 .     配置端口:
找到
Listen 80
改为
Listen **
当然如果不需要改的话,就不用改了。正常情况无须更改。
3.3.2 .     配置 DocumentRoot
找到 DocumentRoot 段,将其改为:
DocumentRoot "E:/MyWebsite"
这里的 "E:/MyWebsite" 指的是你的 web 程序的根路径,视具体应用而定。
3.3.3 .     配置 serverName
找到 serverName 这个段,将其配置为你的 ServerName
如果没有配置为域名,配为 IP 也可以,此处还不是很清楚,多虚拟主机的情况的配置。
3.3.4 .     配置虚拟主机
<VirtualHost *:80>
    ServerAdmin flyffa@gmail.com
    DocumentRoot E:/MyWebsite
    ServerName localhost
    DirectoryIndex index.html index.htm index.jsp
    ErrorLog logs/error_log
    CustomLog logs/access_log common
    ErrorDocument 404 /sys/logon.jsp
</VirtualHost>
3.4. 配置 JK 方式的负载均衡
3.4.1 .     配置 module
我们需要与 tomcat 做连接,所以要把 tomcat connector 的模块配置进去。
LoadModule 部分加入:
LoadModule jk_module modules/mod_jk-apache-2.0.55.so -加载模块
这个 so 是我下载的版本,个人可以根据自己下载的文件名加以配置
JkWorkersFile conf/workers.properties -指定 connector 的配置文件名称
JkLogFile logs/mod_jk.log -指定 connector 的日志文件名称
JkLogLevel info -指定 connector 的日志等级
3.4.2 .     配置 worker 列表 (conf/workers.properties)
定义列表
worker.list=tomcat6,tomcat5,loadbalancer
定义一个名为 “loadbalancer” worker
其作为对多个 Tomcat 进程的负载平衡使用:
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat5, tomcat6
负载平衡类型的 worker 并不与 Tomcat worker 通讯,它负责管理这些 Tomcat worker
定义多个 worker 列表
# Set properties for tomcat6 (ajp13)
worker.tomcat6.type=ajp13
worker.tomcat6.host=localhost
worker.tomcat6.port=8019
worker.tomcat6.lbfactor=50
worker.tomcat6.cachesize=10
worker.tomcat6.cache_timeout=600
worker.tomcat6.socket_keepalive=1
worker.tomcat6.reclycle_timeout=300
 
# Set properties for tomcat5 (ajp13)
worker.tomcat5.type=ajp13
worker.tomcat5.host=localhost
worker.tomcat5.port=8029
worker.tomcat5.lbfactor=50
worker.tomcat5.cachesize=10
worker.tomcat5.cache_timeout=600
worker.tomcat5.socket_keepalive=1
worker.tomcat5.reclycle_timeout=300
注意: lbfactor= 50 当此 Tomcat worker 被用于一个负载平衡 worker 使用时,此属性将被使用。它定义了此 worker 的负载平衡权值。 cachesize= 10 当在多线程的 web server (例如 apache2.0 IIS Netscape )中使用 JK 时,此属性是有效的。如果将 cachesize 的值设置为较高的值,这些支持多线程的 web server 将获得很好的处理能力。如果此属性不被设置,则连接 cache 特性将失效。
3.4.3 .     配置 Apache tomcat 的桥接
DocumnetRoot 片段下加入
JkMount /*.jsp tomcat6
JkMount /*.do tomcat6
JkMount /*Servlet tomcat6
这里只是简单的将 apache 的请求转到其中的一个 tomcat 中,形成桥接,至于负载均衡的时候,就无须进行这步操作,直接启动负载均衡。启动负载均衡见下一节。
3.4.4 .     启动负载均衡
DocumnetRoot 片段下加入
JkMount /*.jsp loadbalancer
JkMount /*.do loadbalancer
JkMount /*Servlet loadbalancer
-指定对所有的请求启动负载均衡,这里的 loadbalancer 定义的 worker 的名字
这里我在配置的时候犯了两个错误:
第一是没有配置 JkWorkersFile conf/workers.properties ,以为 Apache 会自动认识(其实 apache 是自动产生了一个叫做 ajp13 worker ,指向本机的 8009 端口)。
第二是以为 JkMount 语句中出现 loadbalancer,ajp13 之类的是系统设定的东西,其实都是在 workers.properties 文件中定义的,结果出现名字不匹配的情况。后来配置了 JkLogFile logs/mod_jk.log 之后看到错误日志才明白。
3.5. 配置 Proxy 方式的负载均衡
使用 Apache2.1 以上的版本,就可以用 mod_proxy_ajp 来完成负载均衡的配置,不过到目前为止,没有看到如何让 Apache 负责静态部分, tomcat 负责动态部分的配置方式,只能用 path 进行区分分发请求。如:在虚拟主机的配置中增加:
ProxyPass / ajp://localhost:8019/
ProxyPassReverse / ajp://localhost:8019/
而形如:
ProxyPass /*.jsp ajp://localhost:8019/
ProxyPassReverse /*.jsp ajp://localhost:8019/
这样的配置是不能通过的。

http://www.niftyadmin.cn/n/1376511.html

相关文章

SaaS:IT巨头们的“时装秀”

本文讲的是SaaS&#xff1a;IT巨头们的“时装秀”&#xff0c;【IT168 资讯】如果说&#xff0c;一个明星要想在公众场合最为抢眼&#xff0c;必须选择最为流行的时装的话&#xff0c;那么Saas对于IT企业来说&#xff0c;毫无疑问就是今年最为流行的“时装”了。IBM、微软、甲骨…

C++中指针和指针变量

指针和指针变量的理解&#xff1a; #include<iostream> using namespace std; int main() {int n;int * m;m &n;n 10;cout << "n:" << n << endl;*(int*)m 110;cout << "*m:" << *m << endl;cout <&l…

现代社会的50项必需“求生技能”

要过得健康充实&#xff0c;还得靠自立。要学会自立&#xff0c;必须得掌握一些技巧。可能和你在学校里学到的不同&#xff0c;但全才远远要比专门只会一样的人更能够适应生活。这里是每个人都该学会的50件事情。&#xff08;不完全统计&#xff09;1. 生火——火能产生光和热。…

CVE-2016-10190 FFmpeg Http协议 heap buffer overflow漏洞分析及利用

2019独角兽企业重金招聘Python工程师标准>>> 作者&#xff1a;栈长蚂蚁金服巴斯光年安全实验室 ———————— 1. 背景 FFmpeg是一个著名的处理音视频的开源项目&#xff0c;非常多的播放器、转码器以及视频网站都用到了FFmpeg作为内核或者是处理流媒体的工具。2…

Delphi的TService 服务路径获取 Dll中获取文件路径

研究delphi服务的路径&#xff0c;试了好几个方法 &#xff0c;都没取出来&#xff0c;最后发现&#xff0c;要采用取DLL路径的方法 //一、获取Dll自身路径//1)方法一&#xff1a;Function GetDllPath&#xff08;sDllName:string):string;var ModuleFileName:array[0..255] of…

c#值类型和引用类型转

在C#中&#xff0c;值类型&#xff1a;整型、布尔型、字符型、实数型、结构型、枚举型。引用类型&#xff1a;类、对象、字符串、数组、接口、委托。区别&#xff1a; 1、值类型通常被分配在栈上&#xff0c;它的变量直接包含变量的实例&#xff0c;使用效率比较高。 2、引用类…

标签中value使用表达式变量的问题

现象&#xff1a; org.apache.jasper.JasperException: /condition.jsp(11,1) According to TLD or attribute directive in tag file, attribute value does not accept any expressions org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:4…

感受野

感受野 正式定义&#xff1a; 在神经网络中&#xff0c;感受野的定义是&#xff1a; 卷积神经网络的每一层输出的特征图&#xff08;Feature ap&#xff09;上的像素点在原图像上映射的区域大小。 posted on 2017-09-14 19:58 眷恋你的方圆 阅读(...) 评论(...) 编辑 收藏 转载…