admin 管理员组

文章数量: 887031


2024年1月12日发(作者:matlab filter函数参数)

如何利用Apache+Tomcat配置JSP开发环境

配置前的准备

(一)准备一个测试用的JSP网页

打开文本编辑器,比如记事本,输入下列代码,并保存为test .jsp(注意扩展名为.jsp)。

<HTML>

<HEAD>

<TITLE>JSP测试页面</TITLE>

</HEAD>

<BODY>

<%n("<h1>Hello World! </h1>");%>

</BODY>

</HTML>

(二)安装J2SDK

不管哪种方案,在安装和配置JSP引擎之前必须先完成J2SDK的安装。

1、安装J2SDK

在Windows下,直接运行下载的j2sdk-1_4_1_文件,根据安装向导安装到一个目录,例如安装到f:j2sdk 1.4.1;

2、 添加环境变量

(1)如果你的操作系统是Win 98,可以用记事本直接编辑,添加下面命令行:

PATH=%PATH%;f:j2sdk1.4.1bin

SET JAVA_HOME=f:j2sdk1.4.1

SET CLASSPATH=f:

保存后,重新启动计算机,这样所添加的环境变量才会有效。

(2)如果你的操作系统是Win2000,那么按如下方式配置环境变量。右键单击"我的电脑",在弹出菜单中选择"属性"→"系统特性" →"高级" →"环境变量", 弹出环境变量对话框,就可以编辑系统的环境变量了。添加PATH、JAVA_HOME和CLASSPATH三个变量,变量值同上。

JSP环境的配置方案

(一)方案一:J2SDK+Tomcat

在这种方案里Tomcat既作为JSP引擎又作为Web服务器,配置比较简单。

1、安装Tomcat

直接运行下载的,按照一般的Windows程序安装步骤即可安装好Tomcat,安装时它会自动寻找J2SDK的位置。例如安装到f:tomcat4。

2、配置Tomcat的环境变量

添加一个新的环境变量TOMCAT_HOME,变量值为f:tomcat4,添加方法同J2SDK环境变量的配置方法。

3、测试默认服务

设置完毕后就可以运行Tomcat服务器了。用f:启动Tomcat,用f:关闭。(如果在执行或的时候提示Out of

Environment Space错误,选择DOS 窗口的菜单中的"属性"→" 内存"→" 常规内存", 把"初始环境"由"自动"修改成"2816"就可以了。)

启动Tomcat后,打开浏览器,在地址栏中输入localhost:8080(Tomcat默认端口为8080),如果在浏览器中看到Tomcat的欢迎界面,表示Tomcat工作正常。

4、测试项目

把刚才准备好的放在f:Tomcatwebappsexamplesjsp目录下, 在地址栏中输入localhost:8080/examples/jsp/,如果浏览器中显示"Hello World!",则说明你的JSP环境配置成功了!

由于Tomcat本身具有web服务器的功能,因此我们不必安装Apache,当然它也可以与Apache集成到一起,下面介绍。

实例讲解Apache+tomcat+ssl配置

我的运行环境:Windows2003 Server SP4 + J2SDK1.5.0 + Apache2.0.54 + Tomcat5.5.9

**准备软件:

1、安装 Apache 2.0.54

2、Tomcat 5.5.14

3、Jk2连接器(mod_)

一:配置Apache和tomcat

Apache安装在d:Apache2 下,监听端口 80;

Tomcat在D:Tomcat51 下,监听端口 8080;

两者都以windows 2000服务进行安装。

将mod_复制到d:Apache2modules目录下:

1.编辑d:文件,在LoadModule那一段代码中添加:

LoadModule jk2_module modules/mod_

2.将AddDefaultCharset ISO-8859-1 改为 AddDefaultCharset GB2312 使Apache自动支持中文显示;

3.在“虚拟主机配置代码段”中添加:(此段配置可以根据你的实际情况进行修改)

ServerAdmin linvsfen◎

DocumentRoot "d:/ Tomcat51/webapps/jsp-examples

ServerName localhost

ErrorLog logs/error_log

CustomLog logs/access_log common

**编写ties文件并加入d:Apache2conf目录,内容如下:

# Usually commented out on production environments

[2]

file=”D:/Apache2/logs/”

level=ERROR

# Provide the basic config needed

[config]

file=D:/Apache2/conf/ties

debug=1

# Provide the location of shm file on the Apache web server

[shm]

file=D:/Apache2/conf/

size=1000000

[:localhost:8009]

port=8009

host=localhost

#define the worker

[ajp13:localhost:8009]

channel=:localhost:8009

# Map the Tomcat examples webapp to the Web server uri space

[uri:/jsp-examples/*]

[uri:/*.jsp]

**编写一个jsp文件(),放在d:Tomcat51webappsjsp-examples 下;

重新启动以后,启动apache和tomcat,访问http://localhost/jsp-examples/可以访问。

二.Tomcat配置上ssl步骤:

1. 生成服务器证书和客户端证书dwp.p12

2、把放到conf目录下,

打开d: 文件,

然后修改文件,将注释掉的内容的注释去掉和增加证书存放的位置:如下:

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" disableUploadTimeout="true"

acceptCount="100" scheme="https" secure="true"

clientAuth="true" sslProtocol="TLS"

keystoreFile="" keystorePass="123456"

truststoreFile="" truststorePass="123456"/>

注:是证书存贮文件

3. 安装客户端证书dwp.p12

3. 修改Tomcat配置,使其自动启用SSL

打开d:testtomcat51webappsjsp-examplesWEB_ 文件,在security-constraint 标签下,增加如下内容:

Constrain the user data transport for the whole application

CONFIDENTIAL

注释掉标签下的内容

tomcat

role1

在web-resource-collection 标签下,增加如下内容:

/*

重新启动Apache和tomcat,

访问

localhost/jsp-examples/是可是访问的,这是系统提示用户出示证书,启用SSL加密通道,SSL建立后,返回结果。URL变为localhost:8443/jsp-examples/

apache tomcat配置

apache安装目录为APACHE_HOME

tomcat安装目录为TOMCAT_HOME (要设到环境变量中)

jdk安装目录为JAVA_HOME(要设到环境变量中)

1.安装apache:(假定安装目录为APACHE_HOME,根据你实际安装自行替换)

废话不多说,安装后修改APACHE_HOME/CONF/ 以下6个地方:

1) Port 8080 或者80 随你

2) ServerName localhost

3) DocumentRoot "e:/www" (为了发布方便,不如自己建个目录作为文档根)

4) 把原来的改为

5) 添加为缺省的主索引文件

DirectoryIndex

6) 这是最关键一步,在最后加上

#tomcat支持

include TOMCAT_HOME/conf/mod_-auto

只需要这一句就够了,别听那些白痴的话,加上什么,那没用.

把mod_拷贝进APACHE_HOME/module目录

这会先不管apache了,来设置tomcat3.2

步骤:

把tomcat解压缩,将它真正的目录jarakar-tomcat拷贝到你要的目录名TOMCAT_HOME

修改TOMCAT_HOME下的conf目录中的

1) 如果你不想看TOMCAT启动信息,这么做:

path="logs/"

verbosityLevel = "INFORMATION"

/>

增加一个PATH="logs/" 就可以了

2) 让tomcat改到8081上,一般来说www服务在80或者8080上:

value="nnectionHandler"/>

3)增加APJ13协议支持

ConnectionHandler"/>

就放在原来的APJ12连接器后面就可以了

4)配合APACHE修改文档根目录

5)为了用例子测试,还得改一下EXAMPLES的CONTEXT:

docBase="TOMCAT_HOME/webapps/examples" crossContext="false" >

要使用MOD_JK还得改一下同一目录下的TIES文件:

1) _home=TOMCAT_HOME

2) _home=JAVA_HOME

3) ps= 我爱windows 赫赫

现在ok了,开始启动!

别慌,还有启动顺序问题,注意啊,先启动tomcat让它自己修改一下配置,第一次一定

要先tomcat,以后除非修改tomcat的设置,都可以先启动apache了。

ok 来启动tomcat:运行TOMCAT_HOME/bin下面的

看到:Startting tomcat. Check logs/ for error messages.那就对了

再来检查tomcat的情况

先随便在e:www里面放个文件,内容是

JAVA天堂

<%="啊哈!jsp第一次运行!"%>

用浏览器打开localhost:8081

如果看到上面的话出现,那么根文档就成功了,再来用例子测试一下,用浏览器打开:

localhost:8081/examples/jsp

运行猜数字游戏,如果正确了,说明咱们的examples上下文也关联正确。这就简单了。

剩下就是运行apache了

运行apache,看到这么一行:

Apache/1.3.14 (win32) with mod_那就对了

再来测试它们的组合,用浏览器打开localhost:8080(我假设你用8080端口,如

果是80端口,那就用localhost

还是看到那句“啊哈!jsp第一次运行!”

这就说明apache和tomcat连上了

通过apache+tomcat配置网站

整合Apache+Tomcat

下载到/tmp:

j2sdk-1_4_2_

#cd /usr/local

#mkdir apache2

#cp /tmp/ /usr/local/apache2

#cd apache2

#tar xvf

#cd httpd-2.0.50

#./configure --with-layout=Apache2 --prefix=/usr/local/apache2 --enable-so

#make

#make install

.修改apache的

ServerName name OfYourServer

Group nogroup(要增加这个组)

# cd /usr/local/apache2/bin

#./apachectl start 启动apache (./apachectl stop 停止)

如果成功,通过浏览器就可以看到Apche的默认主页了

ServerIp

(httpd –l 可以列出已经加载的模块)

安装JDK

#cd /usr/local

#mkdir java

#cp /tmp/j2sdk-1_4_2_ /usr/local/java

#cd java

#sh j2sdk-1_4_2_

#pico /root/.bash_profile

把原来内容改为

JAVA_HOME=/usr/local/java/j2sdk1.4.2_05

CALSSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

BASH_ENV=$HOME/.bashrc

USERNAME="root"

export USERNAME BASH_ENV JAVA_HOME CLASSPATH PATH

有了这两个变量,Tomcat才能安装.

#cp /tmp/ /usr/local/

#cd /usr/local/

#tar zxvf

#pico /root/.bash_profile

把原来内容改为

JAVA_HOME=/usr/local/java/j2sdk1.4.2_05

CALSSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

CATALINA_HOME=/usr/local/jakarta-tomcat-5.0.27

CATALINA_BASE=/usr/local/jakarta-tomcat-5.0.27

BASH_ENV=$HOME/.bashrc

USERNAME="root"

export USERNAME BASH_ENV JAVA_HOME CLASSPATH CATALINA_HOME CATALINA_BASE PATH

#cd /usr/local/tomcat/bin

#./ 启动tomcat

# cd /usr/local/apache2/bin

#./apachectl restart

通过浏览器

SeverIP:8080 看到了一只猫!(port 8080 是Tomcat的默认端口)

安装connector JK2

如果以上安装顺利的话,继续安装connector吧

#cp /tmp/

#cd /usr/local

#tar zxvf

#cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2

#./

#./configure&--with-apxs2=/usr/local/apache2/bin/apxs&

make

make install (如果不成功,把mod_&拷贝到Apache得modules下)

#cp jk/build/jk2/apache2/mod_ /usr/local/apache2/modules

还有一个&,说是用来启动Apache 时自动启动Tomcat的,如果就也拷贝吧.我没有看到!

#cp jk/build/jk2/apache2/ /usr/local/apache2/modules

整合步入正题了,整合涉及到了4个配置文件

Apache 的 和 ties (创建)

Tomcat 的 和 ties (不过这两个文件,我没改过也成功了)

在Apache中添加mod_模块:

LoadModule jk2_module modules/mod_

ties:

这是我的ties

# Example socket channel, override port and host

[:localhost:8009]

port=8009

host=127.0.0.1

# define the worker

[ajp13:localhost:8009]

channel=:localhost:8009

# Uri mapping

[uri:/jsp-examples/*]

worker=ajp13:localhost:8009

好了,重启Apache和Tomcat

ServerIp/jsp-examples 如果看到的效果和

ServerIp:8080/jsp-examples 一样就说明整合成功.

开机时自动启动http和tomcat

#cd /etc/init.d

#touch httpd

#pico httpd

以下为内容

#!/bin/bash

#

# Startup script for the Apache Web Server

#

# chkconfig: - 85 15

# description: Apache is a World Wide Web server. It is used to serve

# HTML files and CGI.

# processname: httpd

# pidfile: /var/run/

# config: /etc/httpd/conf/

LD_LIBRARY_PATH=/usr/local/java/j2sdk1.4.2_05/jre/lib/i386:/usr/local/java/j2sdk1.4.2_05/jre/lib/i386/server

export LD_LIBRARY_PATH

CATALINA_BASE=/usr/local/jakarta-tomcat-5.0.27

export CATALINA_BASE

CATALINA_HOME=/usr/local/jakarta-tomcat-5.0.27

export CATALINA_HOME

APACHE_HOME=/usr/local/apache2

export APACHE_HOME

JAVA_HOME=/usr/local/java/j2sdk1.4.2_05

export JAVA_HOME

PROFILEDIR=/var/run

case "$1" in

start)

if [ -f $PROFILEDIR/Tomcat5_Apache2 ]; then

echo "Running Tomcat5_Apache2"

else

if [ -f $CATALINA_HOME/bin/ ]; then

if [ -f $APACHE_HOME/bin/apachectl ]; then

# "$CATALINA_HOME/bin/"

$CATALINA_HOME/bin/ start

echo "Startting Tomcat5"

# $CATALINA_HOME/bin/ start

sleep 3

echo "Startting Apache2"

$APACHE_HOME/bin/apachectl start

# echo "."

touch $PROFILEDIR/Tomcat5_Apache2

else

echo "Apache File Not Founds"

fi

else

echo "Tomcat File Not Founds"

fi

fi

;;

stop)

if [ -f $PROFILEDIR/Tomcat5_Apache2 ]; then

if [ -f $CATALINA_HOME/bin/ ]; then

if [ -f $APACHE_HOME/bin/apachectl ]; then

"$CATALINA_HOME/bin/"

echo "Stopping Tomcat5"

sleep 3

echo "Stopping Apache2"

$APACHE_HOME/bin/apachectl stop

rm $PROFILEDIR/Tomcat5_Apache2

else

echo "Apache File Not Founds"

fi

else

echo "Tomcat File Not Founds"

fi

else

echo "Not Running Tomcat5_Apache2"

fi

;;

*)

echo "Usage; `basename $0` {start|stop}" 1>&2

exit 1

;;

esac

exit 0

保存退出

#chmod 755 httpd

#chkconfig --add httpd

#ntsysv

把httpd那项选上

重启linux OK!

优化apache/tomcat配置

近日不得不越那个代疱地钻研发布和发布系统管理和测试的相关问题。

有充分证据表明现得绝大多数的apache/tomcat配置中,apache根本就是摆设,所有的响应负担,包括静态多媒体文件实际上是由tomcat 完成,而tomcat实际上是效率相当低的,大约是apache的十分之一。因此,没有达到集成两者的目的;但在优化配置本地基本成功,打算在网上测试服务器实际试行时,却碰到了"martix现象":无可解释的不可重复的异常表现。

看来,在tomcat/apache的配合上要动真格的,今天写的那份文章提示了一个现实的问题,apache根本就没有作用,更严重的是,107 和106上不匹配,107上甚至不能重复出106的配合。由于图片的量会不少,所以这是一个非常现实的问题。我想,目前唯一的办法就是下载到本地,参考可能参考的资料完整地进行一次配置。毕竟,现在的配置是几年前的,而且不是由我进行的。这里如果处理OK了,那么相信对于提供系统的处理能力和处理的速度,是大有益处的。......经过一天的奋斗,主要的时间在于重新在本地设备上安装所有相关的软件,包括本地的DNS服务器,没有这个没有办法测试虚拟主机解释。所以主要还是在晚上测试,深入钻研apache/tomcat的配合,基本搞清楚了两者的关系,确认原来的配置方式只是"表面上成功",实际上完全由 tomcat完成所有应答,apache只是聋子的耳朵——摆设。但是在本地完成所有测试,

原封不动地准备在网上进行更新设置时,再次碰到"Matrix 现象":出现了莫名其妙的差异;无法解释,自然消失。

第一个差异就是,按照最新的理解,apache解释的多媒体路径与tomcat解释的页面路径是不同的,因此,必须在页面上修整两者,否则图片和多媒体就会因为路径不一而不能获取;而在原来设置中由于完全由tomcat解释,所以两者是相同的。这个设想的实验在本地非常成功,但是在网上,就完全相反,路径解释无论如何都是对的——问题在于我在本地已经测试并修改了这个路径解释:老天爷,到底要那一个呢?而实际上,ties的过滤是完全一样的。这点如果还不算太怪的话,那么第二个差异就更怪了。

首先是使用原来的总是在虚拟主机DocumentRoot上被禁止访问,在强行使用本地设置文件置换(由于路径一样,问题倒不算大)后就变得可以了。这条权作是未知的某处错误存在,那么随后就怪事连连了:无论是那个虚拟主机,统统只是解释到第一个虚拟主机的目录,换言之,虚拟主机完,全失效。把那个设置文件拿回本地测试却是一切正常。随后再次到网上测试,这次却是跟着正常了......原因不明,唯一的可能......似乎是firefox缓存一类......总之是笔糊涂帐。真是莫名其妙。但前者的图片必须改由apache解释是确证无疑的,否则,系统性能会过大消耗,静态大文件的处理,不是tomcat的长处。

我们这个世界是一个物质物理世界,它的基本特征就是同质可重复性,整个现代科学都是建筑在这个基础上的。如果一旦碰到同质可重复性不能成立时,我的感觉就是俺是不是生活在Matrix里头了。

续:

今天在本地的测试得到了与远端同样的结果,至少看来重新象一个物质世界了! 目前唯一可能的解释,(不过也是解释得非常牵强的),就是firefox对于浏览过的网站或者出于加速的原因,有一些与过往的浏览器有很大不同的缓存策略。在以后的操作中要注意这一点。

这个结构许多人已经熟悉用了,而且在网上也有大量的howto,不过最关键的文件

ties设置就未必正确,如:

info=Ajp13 forwarding over socket

tomcatId=localhost:8009

[uri:/jsp-examples/*]

[shm:]

disabled=1

如果象上面那样uri:/jsp-examples/*的话,相信,apache屁用没有,根本上就是tomcat承受了一切的负担。 显然,如果是这样配置,系统承受的负担,我指的是java 服务器,将是大大超出应有的负荷的。应该修改上面的配置,让apache承但,主要是html和图片以及多媒体的下载任务,而不是tomcat,估计可以大大提供这个搭配系统的负载能力。

......

前天写到这里,忽然觉得这个配置颇为眼熟,赶快去查一下,果然现在的项目中的设置就是这个样子的,但是进一步的测试就让我有点入歧途,一会儿证明是那样,一会儿就表明是那样。软件这东西如果缺乏逻辑必然的联系,人是没有什么好干的。无论如何,继续上面的思路,象上面的配置,表明所有/jsp-

examples/*次级目录下的东东都是交由tomcat处理;Apache并没有相应的工作。正确的配置应该是:

[uri:/jsp-examples/*.jsp]

[uri:/jsp-examples/servlet/*]

如果使用了如struts,大概还需要增加*.action这样的后缀。这样,非此类型的文件将会交给apache。而这样的设置:

[uri:/*]

有极大的危险,将意味着所有的请求全部由tomcat响应;不过,看来ajp13作了预防性措施,事实上,这时侯ajp13把所有请求扔进了下水道,什么也不干。负作用就是虚拟主机的根目录我无论如何设不出它能够直接识别引导。只能使用html代替,不过,这也没有什么大不了的,如果是小型的首页,可以就地转向,而假如是大型的首页,本身就会定时转换输出为html页面。显然,在这种结构中使用通配符

是最容易配出运行框架的,却也是错误的。

把Apache与tomcat合并起来后,还得到了一个意外的收获,就是可以使用连接形式把一些主要的非jsp/servlet文件由apache在目录以外解释,从而简化了开发目录的管理。在实际的开发过程中,如果规划不佳,不多久就会积累了大量的无用的图片文件,工作目录动不动超过一个G是非常正常的;如果开放部分如允许用户上载文件之类,更是大得惊人,但是由于tomcat不能解释symbolic链接,这样就不能把这些图片移到目录以外,只能是使用全url才有可能实现,而把在合理配置 Apache/tomcat后,尽管tomcat不能解释链接符号,但Apache能够,这样,就把上面的问题解决了。

作者Blog:/zwwwxy/


本文标签: 配置 文件 安装 测试 解释