刚刚完成了apache服务器的编译,接下来顺便把JK连接器也编译出来。
进入刚刚解压出来的tomcat-connector目录,再进入native目录。执行配置:
[root@lxp2 Downloads]# cd tomcat-connectors-1.2.32-src [root@lxp2 tomcat-connectors-1.2.32-src]# ls BUILD.txt conf docs jkstatus LICENSE native NOTICE support tools xdocs [root@lxp2 tomcat-connectors-1.2.32-src]# cd native/ [root@lxp2 native]# ls aclocal.m4 BUILDING.txt configure.in Makefile.am nt_service TODO.txt apache-1.3 CHANGES docs Makefile.in README.txt apache-2.0 common iis netscape scripts buildconf.sh configure jni NEWS STATUS.txt [root@lxp2 native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs
这里需要注意的是配置脚本要添加一个apxs完整路径作为参数。apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。
另外,配置脚本运行时会检查g++所在的目录,如果没有安装g++,则会显示:
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
请检查是否已经正确安装了c++编译器。
因为实验用的服务器安装的是X86_64版的Red Hat Enterprise Linux Server ,因此要安装如下的包:
libstdc++-devel-4.1.2-46.el5.x86_64.rpm
gcc-c++-4.1.2-46.el5.x86_64.rpm
如果使用rpm命令无法安装,可以在CentOS5464/CentOS/里查找到相应的资源,下载下来安装也是一样的。
配置无误后就可以编译了,执行make命令:
[root@lxp2 native]# make
7.JK连接器模块的部署
编译完成后使用ls命令来列出native目录下的所有目录和文件。注意有apache-1.3和apache-2.0两个目录。由于在配置编译的时候指定了apxs工具的位置。配置脚本会根据apxs的反馈结果自动识别目标apache服务器为2.x版本,因此本次编译生成的mod_jk.so模块会放在apache-2.0目录中,apache-1.3目录中是没有mod_jk.so的,这一点请注意。如下所示:
[root@lxp2 native]# ls aclocal.m4 CHANGES configure libtool NEWS TODO.txt apache-1.3 common configure.in Makefile nt_service apache-2.0 config.log docs Makefile.am README.txt buildconf.sh config.nice iis Makefile.in scripts BUILDING.txt config.status jni netscape STATUS.txt [root@lxp2 native]# cd apache-2.0/ [root@lxp2 apache-2.0]# ls bldjk54.qclsrc Makefile.apxs mod_jk.a mod_jk.lo bldjk.qclsrc Makefile.apxs.in mod_jk.c mod_jk.o config.m4 Makefile.in mod_jk.dsp mod_jk.so Makefile Makefile.vc mod_jk.la NWGNUmakefile [root@lxp2 apache-2.0]#
我们现在将编译好的mod_jk.so拷贝到apache服务器的modules目录中,这个目录是专门用来存放扩展模块的:
[root@lxp2 apache-2.0]# sudo cp ./mod_jk.so /usr/local/apache2/modules/ [root@lxp2 apache-2.0]# cd /usr/local/apache2/modules/ [root@lxp2 modules]# ls httpd.exp mod_authz_user.so mod_include.so mod_actions.so mod_autoindex.so mod_info.so mod_alias.so mod_cgi.so mod_jk.so mod_asis.so mod_dav_fs.so mod_log_config.so mod_auth_basic.so mod_dav.so mod_logio.so mod_auth_digest.so mod_dbd.so mod_mime.so mod_authn_anon.so mod_deflate.so mod_negotiation.so mod_authn_dbd.so mod_dir.so mod_reqtimeout.so mod_authn_dbm.so mod_dumpio.so mod_rewrite.so mod_authn_default.so mod_env.so mod_setenvif.so mod_authn_file.so mod_expires.so mod_speling.so mod_authz_dbm.so mod_ext_filter.so mod_status.so mod_authz_default.so mod_filter.so mod_substitute.so mod_authz_groupfile.so mod_headers.so mod_userdir.so mod_authz_host.so mod_ident.so mod_version.so mod_authz_owner.so mod_imagemap.so mod_vhost_alias.so
至此JK连接器模块就部署完成了,但是还需要配置,具体配置将在下文中详细描述。
8.部署tomcat服务器
由于要在本地开启两个tomcat服务器实例以模拟负载均衡+群集的效果,因此我们需要将之前解压出来的tomcat复制成两份,进入解压时的目录,重命名解压出来的原始目录为tomcat_server_1,然后复制此目录,副本目录名称为tomcat_server_2:
[root@lxp2 ~]# cd Downloads/ [root@lxp2 Downloads]# ls apache-tomcat-6.0.33 cpp apache-tomcat-6.0.33.tar httpd-2.2.21.tar apr-1.4.5 tomcat-connectors-1.2.32-src apr-1.4.5.tar.gz tomcat-connectors-1.2.32-src.tar apr-util-1.3.12 apr-util-1.3.12.tar.gz [root@lxp2 Downloads]# mv apache-tomcat-6.0.33 tomcat_server_1 [root@lxp2 Downloads]# cp -r tomcat_server_1 tomcat_server_2 [root@lxp2 Downloads]# ls apache-tomcat-6.0.33.tar httpd-2.2.21.tar apr-1.4.5 tomcat-connectors-1.2.32-src apr-1.4.5.tar.gz tomcat-connectors-1.2.32-src.tar apr-util-1.3.12 tomcat_server_1 apr-util-1.3.12.tar.gz tomcat_server_2 httpd-2.2.21 [root@lxp2 Downloads]#
现在测试tomcat_server_1是否能够正常工作。
将我实现写好的一个测试用例下载下来(测试用例基于Spring 3.0编写,已经打成war包),下载地址:。下载得到的文件是TestProject.war。将此压缩包放入tomcat_server_1的webapps目录下。然后切换到tomcat_server_1的bin目录下,启动tomcat_server_1:
[root@lxp2 bin]# ./startup.sh Using CATALINA_BASE: /root/Downloads/tomcat_server_1 Using CATALINA_HOME: /root/Downloads/tomcat_server_1 Using CATALINA_TMPDIR: /root/Downloads/tomcat_server_1/temp Using JRE_HOME: /usr/Java/jdk1.6.0_27 Using CLASSPATH: /root/Downloads/tomcat_server_1/bin/bootstrap.jar
然后在浏览器中访问:8080/TestProject/showInfo.do,如果没什么意外会显示类似于下面的信息:
This message is from Server, RealPath: /root/Downloads/tomcat_server_1/webapps/TestProject/ Current Session Id: 471D55C942346EC7BB48D07D9437D57E
信息中显示了当前测试用例所在的路径以及当前会话的SessionId。
此处要注意的地方同测试apache服务器是否正常工作时是一样的,需要注意防火墙是否阻塞了tomcat服务器默认采用的8080端口,是否有其他程序占用此端口。
看到没什么问题,我们先吧tomcat_server_1关闭
[root@lxp2 bin]# ./shutdown.sh Using CATALINA_BASE: /root/Downloads/tomcat_server_1 Using CATALINA_HOME: /root/Downloads/tomcat_server_1 Using CATALINA_TMPDIR: /root/Downloads/tomcat_server_1/temp Using JRE_HOME: /usr/java/jdk1.6.0_27 Using CLASSPATH: /root/Downloads/tomcat_server_1/bin/bootstrap.jar