当前位置:文档之家› ApacheTomcat整合教程

ApacheTomcat整合教程

Apache、Tomcat整合配置教程

准备相关软件

下载安装Apache2.2.4

Apache下载地址:https://www.doczj.com/doc/7419015945.html,/dist/httpd/binaries/win32/,选择下载windows平台安装包文件apache_2.2.4-win32-x86-no_ssl.msi。

接受安装协议

配置Apache服务器信息

Network Domain设置站点名称,这个不会对实际站点产生影响。

Server Name设置当前服务器名称,这个不会对实际站点产生影响。

Administrator’s Email Address设置站点管理员邮件地址,Apache文档说明当站点出错时的页面底部会出现该地址。

一般选择典型(Typical)安装

选择安装路径

这里使用默认安装路径,实际安装过程可以选择其他路径。

安装完毕

下载Tomcat5.5.26

Tomcat5.5.26下载地址:https://www.doczj.com/doc/7419015945.html,/download-55.cgi,选择Core的zip包。

下载Tomcat Connector(jk.1.2.6)

Tomcat Connector下载地址:https://www.doczj.com/doc/7419015945.html,/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.26/,此处注意一定要下载与Apache版本匹配的jk。jk文件名后半部分名称反应Apache的版本,如:mod_jk-1.2.26-httpd-2.2.4.so其匹配的Apache为2.2.4,与本次安装的Apache版本一致。

相关说明

为什么要配置Tomcat负载平衡和集群

负载平衡:负载平衡能处理高并发量的请求

Tomcat集群:Tomcat集群配合负载平衡可以是系统达到高可用性,即任何一台服务器不可用,自动重新连接后,能保持session数据一致,不需要重新输入密码。

Tomcat负载平衡是为拥有高并发量的网站准备的;

Tomcat集群对于硬件性能高(尤其是内存要大)且对用户高可用性需求苛刻(不需重复保存会话中的数据,例如用户连接任何一台节点服务器不需要重新输入密码)的站点,选择集群方式可以满足需求。

简单原理介绍

1.apatche与tomcat的之间的联系由jk完成,用的是ajp协议。每个tomcat都在监听ajp 端口。默认的AJP Connector 的端口是8009。

2.配置了集群的tomcat之间通过tcp协议通信复制session,当然要在tomcat应用中的web.xml文件中加入,标志着要复制session。复制session是为了在某个服务器正在被请求时宕机,请求由apache通过jk转发到其他tomcat 服务器时,session中的信息丢失采取的一中保持session的方式,还有其他的解决方案,如把session存到数据库中。

3.jk把请求分配给某个tomcat服务器遵循着不同的原则,这里我们使用的是负载平衡。在workers.properties中定义了很多worker,如果worker的type把定义成lb,就表示这个worker是负载平衡worker,他知道怎样提供轮询来分配request。而负载平衡也分很多平衡的方式,采用哪种方式决定于属性worker.balancer.method;下面具体描述不同的负载平衡方式(默认的是R方式)。

worker.balancer.method=Request(简写R):负载平衡worker将根据每个tomcat服务器上处理的request数来寻找最佳的tomcat服务器。这种方式适合绝大数application。

worker.balancer.method=Session(简写S):负载平衡worker根据各个tomcat上session 的数量来寻找最佳tomcat,但是负载平衡worker并没有状态,所以不知道session个数,所以把没有session cookie的请求或url中没有encode sessionid的请求当作new session。

worker.balancer.method=Traffic(简写T):负载平衡worker根据jk和tomcat直接的网络状况来找最佳的tomcat服务器。

worker.balancer.method= Busyness(简写B):负载平衡worker根据tomcat的流量选择流量最少的tomcat。

如何验证配置

1、运行每个tomcat节点

2、运行apache服务器

3、成功的例子:在不同的客户端发起请求,请求会被平均分配给tomcat(负载均衡)

关闭其中一个tomcat1,tomcat1原来处理的请求会被其他tomcat2接收,

如果此前被关闭的tomca1t的session中存在信息,tomcat2中tomcat1的session信息依然存在,表现为登录→tomcat宕机→请求被转到另外一个tomcat,并仍然处于登录状态

查看当前apache的工作模式

1、windows下查看apache工作模式

在DOS下使用命令:httpd –l

2、linux下查看apache工作模式

# apachectl –ls

在Windows系统下如果优化Apache的性能

mpm_winnt.c是专门针对Windows NT优化的MPM(多路处理模块),它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说mpm_winnt只能启动父子两个进程, 不能像Linux下那样同时启动多个进程。

mpm_winnt主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化Apache,下面详细来说明一下。

ThreadsPerChild

这个参数用于设置每个进程的线程数, 子进程在启动时建立这些线程后就不再建立新的线程了. 一方面因为mpm_winnt不能启动多个进程, 所以这个数值要足够大,以便可以处理可能的请求高峰; 另一方面该参数以服务器的响应速度为准的, 数目太大的反而会变慢。因此需要综合均衡一个合理的数值。

mpm_winnt上的默认值是64, 最大值是1920. 这里建议设置为100-500之间,服务器性能高的话值大一些,反之值小一些。

MaxRequestsPerChild

该参数表示每个子进程能够处理的最大请求数, 即同时间内子进程数目.设置为零表示不限制, mpm_winnt上的默认值就是0.

官方参考手册中不建议设置为0, 主要基于两点考虑: (1) 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存; (2) 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

因此这个参数的值更大程度上取决于服务器的内存,如果内存比较大的话可以设置为0或很大的数字,否则设置一个小的数值。需要说明的是,如果这个值设置的太小的话会造成Apache频繁重启,在日志文件中会看到如下的文字:

Process exiting because it reached MaxRequestsPerChild. Signaling the parent

这样一来降低了Apache的总体性能。

配置apache最大连接数

(1)获取apache的工作模式

(2)根据其工作模式,在httpd.conf中添加相应的配置

例如工作模式为prefork

则可以设置

StartServers 5

ServerLimit 1500

MaxClients 1500

MinSpareThreads 25

MaxSpareThreads 75

ThreadsPerChild 70

MaxRequestsPerChild 100

如果是在windows系统下,工作模式为winnt,则只能设置

ThreadsPerChild 70

MaxRequestsPerChild 100

单台主机多站点场景(集群)

在一台机器上配置多个站点,每个站点有自己独立的域名。假设服务器有两个站点https://www.doczj.com/doc/7419015945.html,和https://www.doczj.com/doc/7419015945.html,,两个站点分别运行在一个tomcat下。为方便说明,下面分别简称为wap和bbs站点。

Apache配置

将Tomcat Connector文件mod_jk-1.2.26-httpd-2.2.4.so拷贝到Apache安装目录Apache2.2\modules下。

在Apache配置文件Apache2.2\conf\httpd.conf末尾增加以下内容;

配置完成以后使用开始程序菜单目录中的Apache HTTP Server 2.2.4→Configure Apache Server→ Test Configuration检查Apache配置文件是否正确。

Tomcat Connector配置

在Apache配置目录Apache2.2\conf创建workers.properties配置文件,该文件主要用于配置Apache与Tomcat的集成要用到的Tomcat实例。

Workers.properties文件放置一下内容;

Tomcat配置

Wap和bbs分别运行在两个Tomcat实例下,将刚才下载的Tomcat分别解压为两个目录tomcatbbs和tomcatwap。

Tomcatbbs实例配置

打开bbs站点tomcat目录下的conf\server.xml,找到下面的节点内容

注意以上标注红色的配置,同一台机器的多个Tomcat不能重复使用以上端口,下半部分AJP 的端口配置要和workers.properties的端口配置保持一致。

再找到Host节点配置更改一些内容

Tomcatwap实例配置

打开wap站点tomcat目录下的conf\server.xml,找到下面的节点内容

以上标注红色的配置,同一台机器的多个Tomcat不能重复使用以上端口,下半部分AJP 的端口配置要和workers.properties的端口配置保持一致。请注意本次配置分别改了两个端口为9090和9009。

在找到Host节点配置更改一些内容

常见问题

修改host文件,加入https://www.doczj.com/doc/7419015945.html,,https://www.doczj.com/doc/7419015945.html,解析至当前机器127.0.0.1。

分别启动Apache和两个Tomcat,打开两个浏览器分别输入https://www.doczj.com/doc/7419015945.html,,https://www.doczj.com/doc/7419015945.html,测试是否显示不同的站点内容。

如果没有达到预期效果请检查一下几点配置:

Apache2.2\conf\httpd.conf配置文件是否配置的两个Host是否配置了域名

Host中JkMount /*.* tomcatwap配置tomcat对应的Service.xml中配置的域名是否一致 Worker.properites中配置的tomcat实例端口是否和对应tomcat Service.xml文件中的AJP 端口是否一致

Tomcat Service.xml配置文件Host节点是否有

reloadable="true"/>配置内容

Tomcat站点内容目录下是否有httpd.conf文件Host节点中DirectoryIndex index.jsp配置的文件

单台主机单站点(集群、负载均衡)Apache配置

将Tomcat Connector文件mod_jk-1.2.26-httpd-2.2.4.so拷贝到Apache安装目录Apache2.2\modules下。

在Apache安装目录找到conf/httpd.conf文件,在末尾增加一下内容

Tomcat Connector配置

在Apache配置目录Apache2.2\conf创建workers.properties配置文件,该文件主要用于配置Apache与Tomcat的集成要用到的Tomcat实例和负载均衡分发控制器。

Workers.properties文件放置一下内容;

Tomcat配置

Tomcat配置文件Service.xml主要注意两个地方,一个是Engine节点需要增加节点标识jvmRoute,一个是将原本注释掉的Session复制节点改为有效。具体如下

我们分别将两个Tomcat配置文件中的jvmRoute设置为tomcat1、tomcat2,Server节点端口分别配置为8005和9005,集群Receiver 节点tcpListenPort端口分别配置为4001和4002,Connector节点端口分别配置为8080和9090,AJPConnector端口分别配置为8009和9009,Connector端口配置参照单主机多站点场景。请注意两个Tomcat配置文件Host节点的域名配置必须一样,Server.xml中的jvmRoute名称必须和worker.properties中的tomcat实例名称一致,不然无法实现session_stricky。

Web.xml配置

Web.xml配置文件加上节点,此配置说明当前Web工程处于分布式部署环境。如果不进行这个配置,每次访问页面tomcat都会产生一个新的sessionid。

常见问题

修改Host文件将https://www.doczj.com/doc/7419015945.html,解析到本机。打开两个IE窗口分别提交session操作,然后在控制台观察效果。

正常情况为;同一个IE窗口的所有请求都分发到同一个Tomcat,当关闭其中一个Tomcat 时,IE窗口重新请求会分发到另一个Tomat并且Session保持同步。

如果没有达到预期效果请检查一下几点;

Apache配置文件中DirectoryIndex配置的文件是否存在tomcat应用的目录下

Apache配置文件中JkMount是否分发到负责均衡控制器

两个Tomcat端口是否有重复,

Worker.properties中tomcat端口是否和对应server.xmlAJPConnector端口一致

Server.xml配置文件的Host节点name属性是否一致

Server.xml配置文件的Engine节点是否配置jvnRoute,并且与worker.properties配置的名称保持一致

Server.xmlHost节点内的Cluster节点是否设置为有效

Linux下的集群、负载均衡

软件系统环境

操作系统:redhat 4 i386

前端服务器:httpd-2.0.63.tar.gz安装在linux下

负载平衡器:mod_jk-1.2.27-httpd-2.0.61.so二进制版本

集群节点:apache-tomcat-5.5.27.zip安装在windows下

配置步骤:

A、安装apache.

下面详细讲解apache的安装步骤:(注意:凡是标记为紫色的,皆为在终端中应该执行的命令,黄色字体为执行结果说明!以下是在linux4下用root用户登陆的状态下测试通过的) A:打开终端,执行以下命令确认编译环境:

#system-config-packages

# rpm –q gcc

执行结果显示gcc-3.4.3-9.EL4,说明gcc已经安装

B:进行apache服务器编译安装

1.释放源码包文件:将你已经下载的httpd-

2.0.6

3.tar.gz复制到目录“/usr/local/src/”

2.进入此目录对httpd-2.0.6

3.tar.gz进行解压,执行以下命令:

# cd /usr/local/src/

# tar zxvf httpd-2.0.63.tar.gz

Tar命令执行成功后会在当前目录下出现名为“httpd-2.0.63”的目录,执行:

# ls

显示结果:httpd-2.0.63.tar.gz httpd-2.0.63 说明解压成功

进入httpd-2.0.63目录:

# cd httpd-2.0.63

3.编译前配置,执行以下命令:

# ./configure –prefix=/usr/local/apache2 –enable-so –enable-rewrite

说明:--prefix指定要安装到的系统目录

--enable-so 设置apache服务器可以使用动态加载模块功能

--enable-rewrite 设置apache服务器具有rewrite功能

此命令执行过程需要比较长的时间,屏幕上将显示配置的过程信息

4.编译服务器程序,执行命令:

# make

此命令执行过程需要比较长的时间,屏幕上将显示编译的过程信息

5.安装已经编译完成的程序:

# make install

此命令执行过程需要比较长的时间,屏幕上将显示安装的过程信息

#ls /usr/local/

此时,将会显示出apache2目录,恭喜你,安装成功了!!

6.如何启动apache?

进入你安装好的apache2的bin目录

# cd /usr/local/apache2/bin

# apachectl start

7. 如何关闭apache?

进入你安装好的apache2的bin目录

# cd /usr/local/apache2/bin

# apachectl stop

B、安装各个tomcat到不同的主机上

一、下载以下软件,并将其放置于/usr/local/src目录下:

Jdk: jdk-1_5_0-linux-i586-rpm.bin

Tomcat: apache-tomcat-6.0.18.tar.gz

Mysql: mysql-5.0.67-linux-i686.tar.gz

二、安装配置JDK

# chmod u+x jdk-1_5_0-linux-i586-rpm.bin //设置包可执行的属性

# ./ jdk-1_5_0-linux-i586-rpm.bin //自动安装,中间需要确定安装

协议只需输入yes

# cd /usr/ //进入安装好的目录

# ln –s /usr/java/jdk1.5.0 jdk1.5.0 //创建jdk1.5.0目录连接到/usr/jdk1.5.0

三、设置环境变量:写到/etc/profile中,那样系统启动时就会自动加载jdk,打开文件

/etc/profile,并将以下语句写入:

export JA V A_HOME=”/usr/jdk1.5.0”

export PA TH=”$PA TH:$JA V A_HOME/bin”

export CLASSPATH=”$JA V A_HOME/lib”

export CA TALINA_HOME=”/root/tomcat6.0”

四、安装配置tomcat

# cd /usr/local/src //进入你放置tomcat的文件夹

# tar zxvf apache-tomcat-6.0.18.tar.gz -C /usr/local/ //解包至usr/local文件夹

# ln –s /usr/local/apache-tomcat-6.0.18/ /root/tomcat6.0 //做个tomcat6.0目录连

接至tomcat

五、启动tomcat

# cd /root/tomcat6.0

# bin/startup.sh

如果显示以下内容,恭喜你,配置OK了

六、关闭tomcat

# cd /root/tomcat6.0

# bin/shutdown.sh

C、安装配置mysql(附)

1. 建立mysql的用户和组,指定mysql的用户和组宿主目是”/usr/local/mysql/data

# groupadd -g 200 mysql

#useradd -u 200 -g mysql -d /usr/local/mysql/data -M mysql

执行结果如下:

2.解压安装包到指定目录并建立连接文件

# tar zxvf mysql-5.0.67-linux-i686.tar.gz –C /usr/local

# cd /usr/local

# ln -s mysql-5.0.67-linux-i686/ mysql

3.在/var/lib目录下建立mysql的子目录,并设置属主和属组。

# mkdir /var/lib/mysql

#chown –R mysql:mysql /var/lib/mysql

#chown –R root:mysql /usr/local/ mysql-5.0.67-linux-i686/

#chown –R mysql:mysql /usr/local/mysql/data/

执行结果如下图所示:

4. 进入MYSQL服务器程序目录,复制mysql的配置文件到https://www.doczj.com/doc/7419015945.html,f 到https://www.doczj.com/doc/7419015945.html,f到“/etc”

目录中并执行mysql_install_db命令初始化MYSQL服务器中的数据

#cd /usr/local/mysql

#cp support-files/https://www.doczj.com/doc/7419015945.html,f /etc/https://www.doczj.com/doc/7419015945.html,f //会提示是否overwrite 只需

//y 然后回车

# ./scripts/mysql_install_db

执行中:

5. 设置MYSQL系统用户对行建立的数据库文件有足够的访问权限。

#chown -R mysql:mysql /var/lib/mysql/

#chown -R mysql:mysql /usr/local/mysql/data/

执行过程如下:

6.启动服务,并指定系统用户mysql运行

# /usr/local/mysql/bin/safe_mysqld --user=mysql &

相关主题
文本预览
相关文档 最新文档