红联Linux门户
Linux帮助

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

发布时间:2011-05-27 15:14:08来源:红联作者:shuming
[i=s] 本帖最后由 shuming 于 2011-5-29 11:18 编辑 [/i]

第一次配置web服务器,现在widows下面配置理解一下基础知识。 文章参考:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1513814
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
版本最好用这个版本,其他的我没有试过,有可能会导致整合不成功。
(4) php-5.2.17-nts-Win32-VC6-x86.zip
是一个压缩包,下载下来直接解压就行了。
(5) mod_jk.rar
这个module是放到apache中的module中去的,利用它来使Tomcat和Apache之间通讯。
(6) mysql-max-3.23.46a-win.zip
数据库mysql,其版本对整合影响不大.
(7) jdbc驱动 mysql-connector-java-5.0.8.zip
mysql的驱动程序,和数据库连接时用

下面开始安装所有的软件:
一.安装j2sdk
在Windows下,直接运行下载的j2sdk-1_4_2-windows-i586.exe文件,根据安装向导安装
到一个目录,例如安装到d:\server\j2sdk1.4.2
1.配置环境变量:
添加CLASSPATH变量,其值为:
.;D:\server\j2sdk1.4.2\lib\dt.jar;d:\server\j2sdk1.4.2\lib\tools.jar;
这个配置保证java运行时可以找到class类。
注意: Classpath 是类路径:了解一下java程序运行的原理:
(1). javac ***.java ---->****.class 文件,
(2). java虚拟机通过classloader装载上面的字节码(.class文件)和java本身已经封装好的类库并调用 java 命令 执行对于的.class 类文件,
而classloader 就是通过类路径 classpath指定的位置来查询字节码的。
其中. ---->当前目录,即.java文件和javac已编译文件所在的目录;
D:\server\j2sdk1.4.2\lib\dt.jar;d:\server\j2sdk1.4.2\lib\tools.jar二者都是jdk里面的类库文件。
2.添加JAVA_HOME变量,变量值为d:\server\j2sdk1.4.2
java_home:就是jdk的安装路径,在运行程序时会用到jdk的安装路径,所以先把它记录下来。当用到时就根据java_home来查询。
3.在原来的path变量中,添加d:\server\j2sdk1.4.2\bin,这样无论在何处运行java名令都行。
注意:path变量:是在dos下输入相关的命令(javac、java),dos系统调用命令对应的方法进行操作;这些根据path里面的地址查询对应的命令令。

4. 重新启动计算机。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安装成功啦!可以进行下一步.
5. 注意:一般cmd进入dos会默认显示一个目录:用cd 进入***.java 文件的目录,如果就不去就把***.java放入 dos默认目录中编译、执行。

二.apache安装
1.运行apache_2.0.49-win32-x86-no_ssl.exe,一路点"确定"和"接受"就行,路径选 d:\server\apache group。
此时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安装成功

三.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"--------->php-5一下的用
Action application/x-httpd-php "/php/php-cgi.exe"--------->php5 和php5以上用,以上两句根据php版本选择一句即可。
在d:\server\www下建立网页:index.php,内容为:

php测试
phpinfo();
?>

用文本编辑器编辑好为存为index.php,重新启动apache,在IE中输入http://localhost/index.php,如果出现php的
环境变量,说明php,安装成功,如果不能解析中的部分,则说明没有成功安装。

四.Tomcat的安装
1.我用的是jakarta-tomcat-4.1.30.exe安装文件,在windows下一路点"确定"就行了,比较简单,安装目录为 d:\server\tomcat
2.下面设置环境变量:
(1). 同jdk的环境变量,添加变量TOMCAT_HOME,值为d:\server\tomcat----->tomcat安装目录;
(2). 增加变量CATALINA_HOME,值为d:\server\tomcat----->servlet容器;
(3). 在path变量中加入d:\server\tomcat\bin------>以便找到tomcat对应的命令
3.下面启动tomcat,运行tomcat目录下的,bin/startup.bat文件就行啦,出现tomcat运行控制台,tomcat成功启动.
在IE中输入http://localhost:8080/,看到大猫的吧,则tomcat安装成功.

五.安装MySQL
第一步:解压 mysql-max-3.23.49-win.zip,运行mysql安装文件,把mysql安装到d:\server\mysql
第二步:在环境变量path中加入 d:\server\mysql\bin------>以便找到mysql对应的命令
第三步:进入d:\server\mysql\bin目录,运行winmysqladmin,刚会出现对话框,设置mysql用户密码,假设
帐号为:root 密码为:123
第四步:进入dos,进入mysql/bin下,运行以下命令打开mysql --->mysqld-nt --standalone 则mysql开启;
注意:可以安装mysql后它就自动启动,所以你输入上面的启动命令会没有反映。这时直接输入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文件夹下。
注意:把mod_jk.dll.rar解压后里面的.dll文件放到modules文件夹下面
第二步:配置APACHE
打开apache根目录下conf\httpd.conf
添加以下语句:
#------------------------------------------
#connecting to tomcat using ajp13
LoadModule jk_module modules/mod_jk_2.0.47.dll
JkWorkersFile "d:/server/tomcat/conf/workers.properties"
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
#-----------------------------------------------------
注意:以上语句的基本意思是:
loadModule一行:加载mod_jk.dll动态链接库模块,使之与tomcat通讯
注意:LoadModule jk_module modules/mod_jk_2.0.47.dll里面的mod_jk中又很多.dll文件选择一个与apache版本对应的(接近的---自己理解可能 不正确),否则会出现 不能把modules中的mod_jk的.dll加载到server中的错误。
jkWorkersFile:指明工作时tomcat相关文件workers.properties位置
jkMount:两行指明当遇到*.jsp和servlet时,交由ajp13协议,继而转发给tomcat处理。
第三步:建立workers.properties文件,在tomcat根目录conf下建立workers.properties文件,内容为:
workers.tomcat_home=d:\server\tomcat ---->tomcat的安装路径
workers.java_home=d:\server\j2sdk1.4.2 ---->jdk的安装路径
ps=\
# worker.list=ajp13
worker.list=ajp12,ajp13

worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
worker.ajp12.lbfactor=1worker.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.虚拟目录设置:
(1).找到下面内容:
unpackWARs="true" autoDeploy="true">
修改为:
unpackWARs="true" autoDeploy="true">
使tomcat主目录为d:\server\www.
(2).找到下面内容:
reloadable="true" crossContext="true">
修改为
reloadable="true" crossContext="true">
这个我的理解是应该是使tomcat根目录下的jsp作为一个虚拟主机吧.
2.设置tomcat监听端口,找到下面的内容:
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="0"
useURIValidationHack="false" disableUploadTimeout="true" />
默认的端口是8080,但这个大家都知道,最好修改一下,假设修改为:8123,则如下:
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互相通讯,如果下面的部分
注释掉,一定要把去掉.

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错误页面的配置,在最后一行之前加入以下内容:

404
/error/noFile.htm


java.lang.NullPointerException
/error/error.jsp

第一个之间的是404未找到jsp网页的错误导向页面,使之发生404错误时,
网页导向至/error/noFile.htm,也可以用类似方法添加其多的错误代码导向页面。
第二个之间的是当jsp网页出现java.lang.NullPointerException导常时
导向至/error/error.jsp错误页面。那么需要在第个jsp网页中加入以下内容:
<%@ page errorPage="/error/error.jsp" %>
典型的error.jsp错误页面的程序写法如下:
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page isErrorPage="true"%>

错误页面

出错了:

错误信息: <%= exception.getMessage() %>

Stack Trace is :
<%

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());
%>



当出现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

Order allow,deny
Deny from all

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

到此为至,tomcat和apache的整合就完成啦.重新启动tomcat和apache,
把jsp网页放到d:\server\www\下,例如:

JSP test


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


存为index.jsp,在IE中输入http://localhost:8123/index.jsp
如果出现了
Hello World!
刚说明tomcat运行正常,在IE中输入http://localhost/index.jsp,如果也出现
Hello World!
恭喜你!整合成功啦,你在jsp漫长艰辛的道路上迈出了一大步~!

注意:在启动apache时很多会碰到下面的问题:
System.Net.Sockets.SocketException: 通常每个套接字地址(协议/网络 地址 端口)只允许使用一次
这个是netsh winsock reset的问题,有两种解决办法:
1.WinsockxpFix.exe尝试修复winsock,重启后,apache就可以启动了;
2.机子不重启也可以的,只要修复一下网络连接就可以了
其实Windows本身就带有修复工具的
只要直接在运行里输入:netsh winsock reset
连提示重启都不用, 问题完全解决,很好很强大!

文章评论

共有 3 条评论

  1. shuming 于 2011-05-29 10:00:31发表:

    自己顶一下

  2. tsaqhlg 于 2011-05-27 16:26:39发表:

    纯支持

  3. chen4u 于 2011-05-27 15:58:20发表:

    感谢分享,学习中