窗体顶端
Windows xp 环境下的: apache+php+mysql+tomcat+jdk
——张安春
需要下载几个软件包:
1. php- 5.0.3-Win32
2. pecl- 5.0.4-Win32.zip
3. apache_ 2.0.54-win32-x86-no_ssl.msi
4. mysql- 4.1.11-win32.exe
5. j2sdk-1_4_2-windows-i586.exe
6. jakarta-tomcat- 4.1.30.exe
7. mysql-connector-java- 3. 1.8a.zip
8. mod_jk.dll
安装 PHP5
假设你的系统安装于 C 盘,否则下列目录均须改成相应的盘的目录。
将下载来的 php-
5.0.3-Win32 解压缩到 C:/PHP5/ 目录下。将 PECL 扩展模块集合包里的所有文件解压缩到 C:/PHP5/ext/ 目录下。
复制 C:/PHP5/ 目录下的 php5ts.dll 文件到 C:/windows/(如果是 windows 2000 操作系统,则为 C:/WINNT/ 目录,下同,不再重复说明) 目录下。
复制 C:/PHP5/ 目录下的所有dll 文件到 C:/windows/system32/ 目录下:
复制 C:/PHP5/ 目录下的 php.ini-dist 文件到 C:/windows/ 目录下,并改名为 php.ini ,并用记事本打开编辑:
定位到下面两行:
; Directory in which the loadable extensions (modules) reside. |
修改下面一行使它指向 C:/PHP5/ext/ 目录,修改后如下:
; Directory in which the loadable extensions (modules) reside. |
定位到下面两行:
;Windows Extensions |
可以看到下面列出了所有可支持扩展,我们可以去掉前面的分号来使 PHP 支持相应的扩展。这跟你的机器已经安装的软件有关,不过extension=php_mbstring.dll(宽字符集扩展)和extension=php_mysql.dll一定要选上,为了后面安装mysql提供支持。
9. 安装apache_
2.0.54-win32-x86-no_ssl.msi
准备好下载下来的apache_2.x.x-win32-x86-no_ssl.msi 。双击后开始安装。一步 Next 下来,同意许可协议后会有填写服务器信息的页面,本地调试,前面两个输入 localhost 即可。
一路 Next 下来,均按照默认路径安装――当然你也可以选择你自己需要的路径。Apache 会自动安装并启动相关服务。
我们可以从这个监控器来重起、停止、启动 Apache 服务。双击小图标打开控制界面:
接下来对 Apache 的配置文件进行配置,用记事本打开 C:/Program Files/Apache Group/Apache2/conf/ (我这里是按照默认安装路径安装,后面的设置按照自己的安装路径做相应的改变) 目录下的 httpd.conf 文件,定位到下面这行:
DirectoryIndex index.html index.html.var |
在其后面添加一个 PHP 默认页,通常是 index.php ,如下:
DirectoryIndex index.html index.html.var index.php |
为了使 Apache 识别 PHP 的相关扩展名,搜索并定位到下面这个部分:
<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin"> |
在后面添加如下两行:
AddType application/x-httpd-php .php .phtml .php3 .php4 |
指定 php 模块,找到并定位到如下这行:
#LoadModule ssl_module modules/mod_ssl.so |
在下面添加一行:
LoadModule php4_module c:/php5/php5apache2.dll |
使它指向 PHP5 目录下的 php5apache2.dll 文件,路径一定要准确。
修改DocumentRoot为你所想要的目录比如说e:/web
另外,如果要禁止目录浏览,查找并定位到下面这行:Options Indexes FollowSymLinks
去掉Indexes 变成:Options FollowSymLinks
OK,保存 httpd.conf 文件后重起 Apache 服务器。
安装MySQL
运行mysql-
4.1.11-win32.exe
设置好root密码到这里 MySQL 的安装告一段落,非常简单。
安装MySQL管理软件phpmyadmin
二、安裝
1. 将phpMyAdmin- 2.5.1-php.zip 置放于网页的主目录
2. 解压缩
3. 将解压缩后的 phpMyAdmin- 2.5.1 目录更改名称,建议以容易记但不易被人猜到放那里。
三、设定
1. 利用文昼编辑器修改设定档 config.inc.php
....(略)
* If the auto-detection code does work properly, you can set to TRUE the
* $cfg['PmaAbsoluteUri_DisableWarning'] variable below.
*/
$cfg['PmaAbsoluteUri'] = 'http://140.128.51.xxx/phpMyAdmin/';
(设定 phpMyAdmin 安装的网址)
/**
* Disable the default warning about $cfg['PmaAbsoluteUri'] not being set
* You should use this if and ONLY if the PmaAbsoluteUri auto-detection
* works perfectly.
*/
$cfg['PmaAbsoluteUri_DisableWarning'] = FALSE;
/**
* Disable the default warning that is displayed on the DB Details Structure page if
* any of the required Tables for the relationfeatures could not be found
*/
$cfg['PmaNoRelation_DisableWarning'] = FALSE;
/**
* Server(s) configuration
*/
$i = 0;
...(略).....................
$cfg['Servers'][$i]['auth_type'] = 'config'; // Authentication method (config, http or cookie based)?
(认证模式)
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = '密码'; // MySQL password (only needed
// with 'config' auth_type)
认证模式:
· config (不用密码)
· http 模式认证
安装jdk
在Windows下,直接运行下载的j2sdk-1_4_1_01-windows-i586.exe文件,根据安装向导安装
到一个目录,例如安装到d:/server/j2sdk
1.配置环境变量:
添加CLASSPATH变量
变量值为
./;%CLASSPATH%;D:/server/j2sdk
1.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名令都行。
重新启动
安装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驱动器jdbc
解开jdbc驱动包,把里面的mysql-connector-java-
3.1.8-bin.jar复制到tomcat的根目录common/lib文件夹下 ,就行了
测试代码:test.jsp
<%@ page language="java" contentType="text/html;charset=GBK" %>
<%@ page import="java.sql.*" %>
<%
try {
out.println("quailzhangs");
Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
out.println("hehe");
}
catch (Exception E) {
out.println("Unable to load driver.");
}
%>
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/j2sdk
1.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!