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文件中加入
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配置文件加上 常见问题 修改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 &