王朝网络
分享
 
 
 

Windows下Apache+Tomcat+MySQL+jsp+php的服务器整合配置经验总结

王朝mysql·作者佚名  2008-05-31
宽屏版  字体: |||超大  

1.作者:moonsbird

题目:Windows下Apache+Tomcat+MySQL+jsp+php的服务器整合配置经验总结

时间:2004.8.19

最初发表于西南交通大学锦城驿站

2.本文是作者学习几年来学习jsp/配置服务器环境的经验总结。可以转载,但请注明出处.

开始学习jsp很久了,网上有许多关于jsp整合的例子,但存在着许多问题。

对于Apache+Tomcat+MySQL+jsp+php的整合,针对不同的Tomcat和apache的版本,稍微有些区别。

即使你E文很好,去看Tomcat和Apache的手册,也不一定能完全整合成功。暑假在家,网速不像

在交大那样---老黄牛拉破车样的慢,所以基于此作者查阅大量网上资料,汲其精华,写这篇文

章希望能为初学者提供方便,也可以作为高手的参考手册。

jsp是优秀的,它基于Java技术,利用JavaBean/Servlet制作动态网站,Java强大的面向对

象编程使Jsp相对于php和asp有着得天独厚的优势。但学习jsp相对于php和asp来说是有难度的。

我想原因之一就是jsp服务器环境的配置要棘手一些。对于动态网页制作,在交大asp曾很长时

间占据上风,不太多的“高手”(也许很多人认为使用jsp的是高手吧)使用jsp,交大比较成功的

jsp网站如世纪星网(Tomcat)、网络教育学院网站(Resin)、交大招生就业网(Tomcat),服务器是

Linux 9,运行相对来说比较稳定可靠。Linux下的Apache和Tomcat整合我曾经发过一篇文章,需

要的大家在锦城搜搜。linux和windows下整合思想是相同的,利用apache来解析*.html/*.htm

静态网页,当遇到*.jsp和servlet时,通过一个apache中的module把jsp页面抛给Tomcat(或者

resin)来处理,在linux下通过编译来制作这个module,要麻烦一些,本文通过现成的win下的一

个module来完成整合。

废话不说啦,下面开始整合:

所需软件

(1) j2sdk-1_4_2-windows-i586.exe

jdk的版本关系倒不是很大,不影响Apache和Tomcat的整合,配置环境变量时注意一些就行了.

(2) apache_2.0.49-win32-x86-no_ssl.exe

apache版本对整合影响不是太大,但最好利用此版本。

(3) jakarta-tomcat-4.1.30.exe

版本最好用这个版本,其他的我没有试过,有可能会导致整合不成功。

(3) php-4.3.3-Win32.zip

是一个压缩包,下载下来直接解压就行了。

(4) mod_jk.dll

这个module是放到apache中的module中去的,利用它来使Tomcat和Apache之间通讯。

(5) mysql-max-3.23.46a-win.zip

数据库mysql,其版本对整合影响不大.

(6) jdbc驱动

mysql的驱动程序,和数据库连接时用

以上软件我就不把down的地址贴出来啦,去网上搜baidu、北大天网,只要用心找,应该问题

不大,如果真的找不到,发信找我要吧。

一.安装j2sdk

在Windows下,直接运行下载的j2sdk-1_4_1_01-windows-i586.exe文件,根据安装向导安装

到一个目录,例如安装到d:\server\j2sdk

1.配置环境变量:

添加CLASSPATH变量

变量值为

./;%CLASSPATH%;D:\server\j2sdk1.4.0\lib\dt.jar;d:\server\j2sdk1.4.0\lib\tools.jar;

d:\server\j2sdk1.4.0\bin

这个配置保证java运行时可以找到class类。

2.添加JAVA_HOME变量,变量值为d:\server\j2sdk1.4.0

3.在原来的path变量中,添加d:\server\j2sdk1.4.0\bin,这样无论在何处运行java名令都行。

重新启动

cmd进入dos,运行java和javac看有没有反应,如果出现命令的帮助,那么java就安装成功了

也可以运行一个java小程序看看.

public class test{

public static void main(String args[]){

System.out.println("看到这个说明java安装成功!");

}

}

把上以程序存放在test.java文件中,一定要是test.java才行,然后利用命令编译

javac test.java

如果没有错误,则说明编译成功,如果有错,在程序书写正确的基础上,刚说明java环境变量没

有配置好,刚重新配置。如果编译成功,则运行:

java test

注意,不是java test.java!如果无误,刚会打印出:

看到这个说明java安装成功!

gxgx,jdk安装成功啦!可以进行下一步.

二.apache安装

1.运行apache_2.0.49-win32-x86-no_ssl.exe,一路点"确定"和"接受"就行,路径选

d:\server\apache group\apache2。

此时apache已经安装成功,且已运行,在IE中输入http://localhost/可以看到

apache的主页。安装成功!

2.修改httpd.conf

apache的配置文件是httpd.conf,位于apache根目录的下的conf文件夹下

(1).修改默认网站根目录:

在d:\server下建立文件夹www,以此作为网站的根目录

DocumentRoot "D:/server/Apache Group/Apache2/htdocs"

改为DocumentRoot "D:/server/www

(2).修改字符设置

apache解析中文网页时会产生乱码,

修改AddDefaultCharset ISO-8859-1为AddDefaultCharset GB2312

(3).修改默认主页

当访问目录时,apache会自动导入的主页,优先级以先后顺序为准

把DirectoryIndex index.html index.html.var改为

DirectoryIndex index.html index.jsp index.php default.jsp default.php index.html.var

(4).设置错误页面

这样对于你的网站会更安全些,如果没设置,别人在你的网址后随便输入一个路径,会显示404错

误,并且会显示你的服务器版本号,服务器配置一目了然,为了避免这种情况,可以设置错误页面。

当出现404错误,即找不到网页时,把访问者导入到一个错误页面

找到:

#

# Customizable error responses come in three flavors:

# 1) plain text 2) local redirects 3) external redirects

#

# Some examples:

#ErrorDocument 500 "The server made a boo boo."

#ErrorDocument 404 /missing.html

#ErrorDocument 404 "/cgi-bin/missing_handler.pl"

#ErrorDocument 402 http://www.example.com/subscription_info.html

#

httpd.conf中的这一部分,#ErrorDocument 404 /missing.html

一行修改为ErrorDocument 404 /error/noFile.htm,其中noFile.htm为d:\server\www\error\下一个错误文件,需

要你自己建立。当发生404错误时,进入noFile.htm页面,可以提示网页没有找到。这样就不可能看到

你的服务器软件信息了。也可以设置其它的错误导向的页面,具体http响应错误编号请查阅相关资料。

重新启动apache,如果没意外,此时已经安装成功,把静态页面放到d:\server\www\error\目录下,看能不能成功解析。

随便输入一个:http://localhost/sdagasgdasasg.htm,看是不是导向你设置的404错误,即noFile.htm错误页面.

成功了吧!

关于apache中其他参数的意义,我就不说啦,你可以去网上查,其实最好的方法是看httpd.conf中的注释部

分,已经说得很清楚啦。

好啦,到此apache安装成功,你可以休息一下,听首音乐,开始下一步的安装:)

三.php安装

解压php-4.3.3-Win32.zip,到d:\server\php目录下.下配置PHP和Apache,使之能解析php程序。

将d:\server\php\目录中的“php.ini-dist”改名“php.ini”,并复制到C:\windows\system32

(Win2K目录为:C:\winnt\system32)下,在apache的配置文件httpd.conf中下入以下几行,使之

支持php.

ScriptAlias /php/ "d:/server/php/"

AddType application/x-httpd-php .php3

AddType application/x-httpd-php .php

AddType application/x-httpd-php .phtml

Action application/x-httpd-php "/php/php.exe"

在d:\server\www下建立网页:index.php,内容为:

<html>

<head><title>php测试</title></head>

<?php

phpinfo();

?>

</html>

用文本编辑器编辑好为存为index.php,重新启动apache,在IE中输入http://localhost/index.php,如果出现php的

环境变量,说明php,安装成功,如果不能解析<?php phpinfo(); ?>中的部分,则说明没有成功安装。

四.Tomcat的安装

我用的是jakarta-tomcat-4.1.30.exe安装文件,在windows下一路点"确定"就行了,比较简单,安装目录为

d:\server\tomcat

下面设置环境变量:

同jdk的环境变量,添加变量TOMCAT_HOME,值为d:\server\tomcat;增加变量CATALINA_HOME,值为

d:\tomcat\server,在path变量中加入d:\server\tomcat\bin

下面启动tomcat,运行tomcat目录下的,bin/startup.bat文件就行啦,出现tomcat运行控制台,tomcat成功

启动.

在IE中输入http://localhost:8080/,看到大猫的吧,则tomcat安装成功.

五.安装MySQL

第一步:解压 mysql-max-3.23.46a-win.zip,运行mysql安装文件,把mysql安装到d:\server\mysql

第二步:在环境变量path中加入 d:\server\mysql\bin

第三步:进入d:\server\mysql\bin目录,运行winmysqladmin,刚会出现对话框,设置mysql用户密码,假设

帐号为:root 密码为:123

第四步:进入dos,进入mysql/bin下,运行以下命令打开mysql

mysqld-nt --standalone

则mysql开启

然后运行:

mysql

如果开启,则出现以下文字:

Welcome to the MySQL monitor. Commonds end with ; or \g.

Your MySQL connection id is 1 to server version: 3.23.46-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

注意:此时mysql没有设置密码,为了不让别人进入你的数据库,请为mysql设置密码,具体操作请参阅mysql

的中文说明文档。

至此,mysql安装成功!

六.安装MySQL的驱动类jdbc

解开jdbc驱动包,把里面的org文件夹复制到jsp可以找到的位置就行啦。可以是tomcat的根目录common/classes

文件夹下,也可以是jsp网站class类WEB-INF/class/下。当加载驱动程序时,以便能找到相关的类。或者把jdbc包

的路径加入到classpath变量中。

七.Tomcat和Apache的整合配置

Tomcat只是一个用来解析*.jsp文件的容器,它不是服务器,其解析静态htm/html文件的能力远远不如apache,

整合后在同一个端口使apache来解析静态网页,而遇到*.jsp网页时,交由tomcat来解析.

第一步:把 mod_jk.dll复制到apache根目录module文件夹下。

第二步:配置APACHE

打开apache根目录下conf\httpd.conf

添加以下语句:

#------------------------------------------

#connecting to tomcat using ajp13

LoadModule jk_module modules/mod_jk.dll

JkWorkersFile "d:/server/tomcat/conf/workers.properties"

JkMount /servlet/* ajp13

JkMount /*.jsp ajp13

#-----------------------------------------------------

注意:以上语句的基本意思是:

loadModule一行:加载mod_jk.dll动态链接库模块,使之与tomcat通讯

jkWorkersFile:指明工作时tomcat相关文件workers.properties位置

jkMount:两行指明当遇到*.jsp和servlet时,交由ajp13协议,继而转发给tomcat处理。

第三步:建立workers.properties文件,在tomcat根目录conf下建立workers.properties文件,内容为:

workers.tomcat_home=d:\server\tomcat

workers.java_home=d:\server\j2sdk1.4.0

ps=# worker.list=ajp13

worker.list=ajp12,ajp13

worker.ajp12.port=8007

worker.ajp12.host=localhost

worker.ajp12.type=ajp12

worker.ajp12.lbfactor=1

worker.ajp13.port=8009

worker.ajp13.host=localhost

worker.ajp13.type=ajp13

worker.ajp13.lbfactor=1

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=ajp12, ajp13

worker.inprocess.type=jni

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jaxp.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parser.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)jasper.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)servlet.jar

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)webserver.jar

worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar

worker.inprocess.cmd_line=-config

worker.inprocess.cmd_line=$(workers.tomcat_home)/conf/jni_server.xml

worker.inprocess.cmd_line=-home

worker.inprocess.cmd_line=$(workers.tomcat_home)

worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll

worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout

worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr

worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)

注意以上文件第一、二行填上tomcat和jdk的相关目录.

第四步:配置tomca/conf下的server.xml文件,这个是tomcat的主要配置文件,重要配置如下:

1.虚拟目录设置:

找到下面内容:

<Host name="localhost" debug="0" appBase="/webapps"

unpackWARs="true" autoDeploy="true">

修改为:

<Host name="localhost" debug="0" appBase="d:/server/www"

unpackWARs="true" autoDeploy="true">

使tomcat主目录为d:\server\www.

找到下面内容:

<Context path="examples" docBase="/examples" debug="0"

reloadable="true" crossContext="true">

修改为

<Context path="" docBase="/" debug="0"

reloadable="true" crossContext="true">

这个我的理解是应该是使tomcat根目录下的jsp作为一个虚拟主机吧.

2.设置tomcat监听端口,找到下面的内容:

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"

port="8080" minProcessors="5" maxProcessors="75"

enableLookups="true" redirectPort="8443"

acceptCount="100" debug="0" connectionTimeout="0"

useURIValidationHack="false" disableUploadTimeout="true" />

默认的端口是8080,但这个大家都知道,最好修改一下,假设修改为:8123,则如下:

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"

port="8123" minProcessors="5" maxProcessors="75"

enableLookups="true" redirectPort="8443"

acceptCount="100" debug="0" connectionTimeout="0"

useURIValidationHack="false" disableUploadTimeout="true" />

3.找到以下8009端口的地方,这个很重要,通过8009,tomcat与apache互相通讯,如果下面的部分

被<!---->注释掉,一定要把<!---->去掉.

<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"

port="8009" minProcessors="5" maxProcessors="75"

enableLookups="true" redirectPort="8443"

acceptCount="10" debug="0" connectionTimeout="0"

useURIValidationHack="false"

protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

第五步:配置tomcat的conf/web.xml文件:

类似于apache下404错误页面的配置,在最后</web-app>一行之前加入以下内容:

<error-page>

<error-code>404</error-code>

<location>/error/noFile.htm</location>

</error-page>

<error-page>

<exception-type>java.lang.NullPointerException</exception-type>

<location>/error/error.jsp</location>

</error-page>

第一个<error-page></error-page>之间的是404未找到jsp网页的错误导向页面,使之发生404错误时,

网页导向至/error/noFile.htm,也可以用类似方法添加其多的错误代码导向页面。

第二个<error-page></error-page>之间的是当jsp网页出现java.lang.NullPointerException导常时

导向至/error/error.jsp错误页面。那么需要在第个jsp网页中加入以下内容:

<%@ page errorPage="/error/error.jsp" %>

典型的error.jsp错误页面的程序写法如下:

<%@ page contentType="text/html;charset=GB2312"%>

<%@ page isErrorPage="true"%>

<html>

<head><title>错误页面</title></head>

<body>

出错了:</p> 错误信息: <%= exception.getMessage() %><br>

Stack Trace is : <pre><font color="red"><%

java.io.CharArrayWriter cw = new java.io.CharArrayWriter();

java.io.PrintWriter pw = new java.io.PrintWriter(cw,true);

exception.printStackTrace(pw);

out.println(cw.toString());

%></font></pre>

</body>

</html>

当出现NullPointerException异常时tomcat会把网页导入到error.jsp,且会打印出出错信息。

第五步主要是安全考虑,在正常情况下,如果找不到网页即出现404错误或者jsp程序出错,在客户端

会列举出类似于如下的信息(以tomcat为例,resin类似):

HTTP Status 404 - /sdags.jsp

--------------------------------------------------------------------------------

type Status report

message /sdags.jsp

description The requested resource (/sdags.jsp) is not available.

--------------------------------------------------------------------------------

Apache Tomcat/5.0.19

这样服务器版本会被别人看到,如果完成第五步的配置,就不会出现这种情况.

第六步:配置httpd.conf文件

这种方法把tomcat和apache的根目录设置为同一目录,但是必须限制客户对目录下一些文件的访问,比如存入class

的web-inf,在httpd.conf下添加以下代码:

#deny the access to WEB-INF

<Directory ~ "/WEB-INF/">

Order allow,deny

Deny from all

</Directory>

这样,当试图记问http://localhost/web-inf/时,apache将会拒绝.

到此为至,tomcat和apache的整合就完成啦.重新启动tomcat和apache,

把jsp网页放到d:\server\www\下,例如:

<html>

<h1>JSP test<hr>

<%out.println("Hello World!");%>

</html>

存为index.jsp,在IE中输入http://localhost:8123/index.jsp

如果出现了

Hello World!

刚说明tomcat运行正常,在IE中输入http://localhost/index.jsp,如果也出现

Hello World!

恭喜你!整合成功啦,你在jsp漫长艰辛的道路上迈出了一大步~!

以上整合文章我是在仓促的的时间完成的,可能有些错误。或考虑不周的地方,但是总体应该没

太大问题,我是反复使用这种方法整合成功的。如果有疑问,可以直接给我联系.

moonsbird: mail:pengw97@163.com

http://blog.csdn.net/jangill/archive/2007/03/18/1532857.aspx

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有