当前位置导航:炫浪网>>网络学院>>网页制作>>JSP教程

做一个果酱瓶[JAMPOT]服务器


做一个果酱瓶[JAMPOT]服务器



——组建JSP、PHP、MYSQL WEB服务器




 


忙了几天,在网上参考了无数文章,经历了数不清的失败,总算做好了一个支持JSP、PHP编程语言,MYSQL 数据库的网页服务器,现将经验心得整理如下,供朋友们参考,Let’s Go!


 


一、            应用环境及所需软件



1.       操作系统:WindowsXP sp2

2.       应用软件:

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



说明:SUN公司出品的JAVA开发包软件;



(2) Apache_2.0.52-win32-x86-no_ssl.exe



说明:目前最流行的个人WEB服务器软件;



(3) Mysql-4.1.7-win.exe



说明:The world's most popular open source database,关键可能是便宜吧J



(4) mod_jk_2.0.46.dll



说明:用于Apache和Tomcat之间通讯;



(5) Php-5.0.2-Win32.zip



说明:最流行的网页后台编程语言PHP



(6) phpMyAdmin-2.6.0.zip



说明:用php编写的mysql数据库管理软件



(7) [Odbc] mysql-connector-java-3.1.7-bin.jar



说明:JSP访问连接Mysql数据库时用驱动文件;



(8) Tomcat-5.0.30.exe



说明:一个JSP应用容器,不能完全代替Apache的;



以上软件都可以在网上找到,也可以到这里来下载。




 



 


二、            安装软件及配置



为了方便,请先建立D:\Jampot文件夹,好了,开始安装软件:

1.       安装JDK



运行J2sdk-1_4_2-windows-i586.exe,在选择安装路径的时候,选择D:\Jampot\J2sdk1.4.2,安装完成后,然后到“我的电脑>属性>高级>环境变量”做如下配置:

添加JAVA_HOME变量,变量值为:D:\Jampot \j2sdk1.4.2



修改path变量,添加D:\ Jampot\J2sdk1.4.2\bin,这样无论在何处运行java命令都行。



重新启动cmd进入dos,运行java和javac看有没有反应,如果出现命令的帮助,那么java就安装成功了,也可以运行一个java小程序看看:



public class TestJdk{



        public static void main(String arg[]){



                System.out.println("Hello,The Jdk is install successful!");



        }



}



保存为TestJdk.java,然后在CMD下运行



javac TestJdk.java



java TestJdk



如果出现“Hello,The Jdk is install successful!”,那么我们就可以进行下一步了。




 


2.       安装Apache



(1)运行Apache_2.0.52-win32-x86-no_ssl.exe,一路点"确定"和"接受"就行,选择路径时输入D:\Jampot;安装成功后的Apache目录为D:\Jampot\Apache2,安装成功后Apache服务会自动运行,在IE中输入http://localhost/可以看到apache的主页。



(2)修改httpd.conf



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



①     修改默认网站根目录:



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



DocumentRoot "D:/Jampot/Apache2/htdocs"



改为DocumentRoot "D:/Jampot/www"



②     修改字符设置



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



修改AddDefaultCharset ISO-8859-1为AddDefaultCharset GB2312



或将在AddDefaultCharset ISO-8859-1前加##将其屏蔽



③     修改默认主页



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



把DirectoryIndex index.html index.html 改为



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



④     设置错误页面[建议设置]



这样对于你的网站会更安全些,如果没设置,别人在你的网址后随便输入一个路径,会显示404错误,并且会显示你的服务器版本号,服务器配置一目了然,为了避免这种情况,可以设置错误页面。当出现404错误,即找不到网页时,把访问者导入到一个错误页面,找到httpd.conf中的这一部分:



# 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



将#ErrorDocument 404 /missing.html一行修改为ErrorDocument 404 /error/noFile.htm,其中noFile.htm为D:\Jampot\www\error\下一个错误文件,需要你自己建立。当发生404错误时,进入noFile.htm页面,可以提示网页没有找到。这样就不可能看到你的服务器软件信息了。也可以设置其它的错误导向的页面,具体http响应错误编号请查阅相关资料。



重新启动apache,如果没意外,此时已经安装成功,把静态页面放到d: erver\www\error\目录下,看能不能成功解析。随便输入一个:http://localhost/sdagasgdasasg.htm,看是不是导向你设置的404错误,即noFile.htm错误页面. 成功了吗?好了,开始下一步。




 


3.       安装Mysql

运行Mysql-4.1.7-win.exe,默认安装是在C:\mysql,在这里我们将Mysql数据库的安装到D:\Jampot\Mysql4_1,对于mysql 4.1以前的版本,在安装完成后可能需要将Mysql目录内的my-small.cnf复制到C:\Windows下,更名为my.ini并做如下修改:

[mysqld]

basedir=D:/Jampot/Mysql

datadir= D:/Jampot/Mysql/data

修改path变量,添加D:\ Jampot\Mysql4_1\bin,这样无论在何处运行mysql命令都行。



启动CMD,输入:

mysql –u root –p

输入密码(假设为abc)

abc

如果出现下面的字符:

Welcome to the MySQL monitor. Commonds end with ; or \g. Your MySQL connection id is 1 to server version: 4.1.7-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>



那么,我们的Mysql数据库就安装成功了!下面开始安装PHP了。


 


4.       安装PHP

Php-5.0.2-Win32.zip是一个ZIP压缩文件,解压里面的文件到D:\Jampot\Php5,然后打开PHP5目录,你会发现有一个叫做"php.ini-dist"的文件,这就是PHP的配置文件了,你需要把它改名成"php.ini",然后复制到Windows目录下,将D:\Jampot\PHP5目录下的" php5apache2.dll"文件复制到D:\Jampot\Aphache2\bin目录下。



打开php.ini文件,做如下的修改:



       找到extension_dir = "./" 改为extension_dir = " D:/Jampot/Php5/ext"



       找到;session.save_path = "/tmp"将';'去掉



设置你保存session的目录,如session.save_path = " D:/Jampot/Php5/session_temp";



编辑Apache2\conf\httpd.conf文件:



   在文件的最后面加上两句:



       LoadModule php5_module  bin/php5apache2.dll



       AddType application/x-httpd-php .php .php3



       PHPIniDir " D:/Jampot/Php5"



写一最简单的php程序测试:



<?php



phpinfo();



?>



命名为info.php存入D:\Jampot\www下,然后地址栏内敲入http://localhost/info.php应该显示php和apache2的相关信息了,现在可以使用PHP了,但我们还要让PHP支持mysql才行,打开php.ini文件,做如下的修改:



       找到;extension=php_mysql.dll将';'去掉改为extension=php_mysql.dll

好了,保存,重新启动apache,写个程序测试一下。

<?php

$link=mysql_connect('localhost','username','password');

if(!$link) echo "fail";

else echo "success";

mysql_close();

?>

如果运行后出现“success”,那么就说明你的PHP能使用MYSQL数据库了,到现在为止,我们的服务器已经算配置一半,它支持PHP语言、MYSQL数据库,休息一下。


 


5.       安装phpMyAdmin



解压phpMyAdmin-2.6.0.zip到D:\Jampot\phpMyAdmin2_6,修改目录内的config.inc.php文件:

设置$cfg['PmaAbsoluteUri']为http://localhost/phpMyAdmin

设置$cfg['blowfish_secret']='admin'

设置$cfg['Servers']['$i']['auth_type']='cookie'

设置$cfg['Servers']['$i']['user']为MYSQL用户名

设置$cfg['Servers']['$i']['password']为MYSQL用户口令

修改Apache内的httpd.conf文件,在最下面加以下语句:

php_admin_flag engine on

php_admin_flag safe_mode off

Alias /phpMyAdmin "D:/Jampot/phpMyAdmin2_6"

<Directory "D:/Jampot/phpMyAdmin2_6">

DirectoryIndex index.php

Options Indexes MultiViews

AllowOverride None

Order allow,deny

Allow from all

php_admin_flag engine on

php_admin_flag safe_mode off

php_admin_value open_basedir none

php_admin_value open_basedir "D:/Jampot/phpMyAdmin2_6"

</Directory>

注意:在修改的时候要注意大小写!


 


6.       安装Tomcat

其实,在前面的过程中,并没有使用Jdk,之所以先安装它是因为笔者的喜爱,但现在开始,我们就使用Jdk了。运行tomcat-5.0.30.exe安装文件,在windows下一路点"确定"就行了,比较简单,安装目录为D:\Jampot\Tomcat5,下面设置环境变量:



添加变量TOMCAT_HOME,变量值为:D:\Jampot\Tomcat5



修改path变量,添加D:\Jampot\Tomcat5\bin



重新启动后,tomcat会自动启动.在IE中输入http://localhost:8080/,然后就可以看到tomcat的主页。这样就安装好了Tomat,写一个jsp文件测试一下。



<html>

<hl>JSP test <hr>

<% out.println("This is a jsp page!"); %>

</html>



将文件存为jTest.jsp,放到D:\Jampot\Tomcat5\webapps\ROOT目录里。然后在IE中输入http://localhost:8080/jTest.jsp,看到了吗?



我们现在有两个问题要解决,一是和Aache服务器合并到一起;二是让JSP能连接MYSQL数据库。




 


第一步,合并Aache服务器。



Tomcat只是一个用来解析*.jsp文件的容器,它不是服务器,其解析静态htm/html文件的能力远远不如apache,整合后在同一个端口使apache来解析静态网页,而遇到*.jsp网页时,交由tomcat来解析.



1)        把mod_jk_2.0.46.dll文件复制到Apache2根目录bin文件夹下。



2)        修改Apache目录下的httpd.conf文件,在该文件最后添加以下语句:



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



#Connecting to tomcat using ajp13



       LoadModule jk_module  bin/mod_jk_2.0.46.dll



       JkWorkersFile "D:/Jampot/Tomcat5/conf/workers.properties"



       JkMount /servlet/* ajp13



       JkMount /*.jsp ajp13



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



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



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



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



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



3)        在D:\Jampot\Tomcat5\conf目录下建立workers.properties文件,内容为:



workers.tomcat_home= D:\Jampot\Tomcat5



workers.java_home= D:\ Jampot\J2sdk1.4.2



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的相关目录.



4)        修改D:\Jampot\Tomcat5\conf下的server.xml文件,这个是tomcat的主要配置文件,做以下修改:



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



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



ort="8080" minProcessors="5" maxProcessors="75"



enableLookups="true" redirectPort="8443"



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



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



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



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



port="8178" minProcessors="5" maxProcessors="75"



enableLookups="true" redirectPort="8443"



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



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



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



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



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



    <Connector port="8009"



               enableLookups="false" redirectPort="8443" debug="0"



               protocol="AJP/1.3" />



③ 在</Host>上边添加如下语句:



<Context path="/test" docBase="D:\Jampot\www\test" debug="0" reloadable="true"/>



这句话的意思是给Tomcat增加一个虚拟目录test,同时在D:\Jampot\www下建立test目录,将jTest.jsp文件复制到该文件夹。



5)        修改D:\Jampot\Tomcat5\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错误页面。那么需要在error .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);



xception.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.30



这样服务器版本会被别人看到,如果将web.xml文件做如上的修改,就不会出现这种情况。在“服务”里重新启动tomcat,然后在IE中输入http://localhost:8178/test/jTest.jsp,可以运行后,再输入http://localhost/test/jTest.jsp,是不是可以运行了。这样,我们只需将jsp放入jspfile文件夹里就可以运行了,第一部算是完成了。




 


第二步——让JSP连接Mysql数据库



将mysql-connector-java-3.1.7-bin.jar文件复制到D:\Jampot\j2sdk1.4.2\jre\lib\ext目录或将mysql-connector-java-3.1.7-bin.jar文件复制到D:\Jampot\ Tomcat5\common\lib目录,



写一个文件jTestMysql.jsp做测试:



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



<%@ page import="java.sql.*"%>



<html>



<body>



<%



Class.forName("org.gjt.mm.mysql.Driver").newInstance();



String url ="jdbc:mysql://localhost/test?



user=userName&password=userPass&useUnicode=true&characterEncoding=8859_1";



Connection conn= DriverManager.getConnection(url);



Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);



String sql="select * from tbTest";



ResultSet rs=stmt.executeQuery(sql);



while(rs.next()) {



%>



Your first field is:<%=rs.getString(1)%>



Your second field is:<%=rs.getString(2)%>



<%}%>



<%out.print("Operation DataBase is success,congratulate  you!");%>



<%rs.close();



stmt.close();



conn.close();



%>



</body>



</html>



将文件保存于D:\Jampot\www\test下,在IE中输入http://localhost /test/jTestMysql.jsp,如果你看到“Operation DataBase is success,congratulate  you!”,那么就说明我们已经可以用JSP连接MYSQL数据库,好了,我们可以使用这个果酱瓶了J




 



 


三、            注意问题



1.       Mysql数据库与PHP连接问题:

Mysql4.1以后版本同以前的不同,首先在安装的过程你,它会要求你设定root密码,因此在安装完后,你不能向前的版本那样使用空密码进入mysql。另外,Mysql对密码也进行了改革,我们在增加一个用户后,不能简单的使用grant的命令,还要使用Password命令,否则,用Php连接数据库时会连接不上。举个例字:

假设我们建立一个使用Test数据库的用户userTest,密码为passTest;

用root进入mysql,输入:

grant all on test.* to userTest@locathost identified by ‘passTest’;

这个时候可以用该用户在CMD下进入mysql,但用PHP语言连接时,就会报错。这是因为mysql对密码的加密方法进行了改变,所以我们要将用户userTest的密码改为旧的加密方式储存, 用root进入mysql,输入:

set password for userTest@localhost =old_password(‘passTest’);



退出mysql,然后用PHP连接,成功了吧。


 


2.       关于php的运行方式的问题

ScriptAlias /php/ "c:/php/"



AddType application/x-httpd-php .php



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



或者



LoadModule  php4_module  c:/php/sapi/php5apache2.dll 



AddType  application/x-httpd-php  .php4 



ScriptAlias  /php4/  "c:/php/" 



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



AddType  application/x-httpd-php4  .php  



上边的代码有人说php是以模块化运行,也有人说是以cgi方式运行的,我没有研究过,在此记录供有兴趣者研究。




 


3.       Tomcat与Aache合并及虚拟主机的问题

对于APACHE主机下访问的JSP文件,实际上物理上不存在与APACHE的主机上,而是存在TOMCAT的主机目录里,例如:

http://localhost/jTest.jsp 中的jTest.jsp文件实际上并不是存在于在 D:\Jampot\www下,而是在D:\Jampot\Tomcat5\webapps\ROOT 下。这点请注意,不要混淆概念!

在本文中,我使用的是虚拟目录的方法来解决的,即:

<Context path="/test" docBase="D:\Jampot\www\test" debug="0" reloadable="true"/>



实际在www下的test目录是Tomcat中Root下的一个虚拟的test目录。




 


在网上还有一种虚拟主机的方法,我不太清楚,在这里列出来,供有兴趣的朋友参考:

 Tomcat与Apache虚拟主机的实现:



这种方法把tomcat和apache的根目录设置为同一目录,但是必须限制客户对目录下一些文的访问,比如存入class 的web-inf,在httpd.conf下添加以下代码:



#deny the access to WEB-INF



<Directory ~ "/WEB-INF/">



Order allow,deny



Deny from all



</Directory>



在最后加入下面这段代码



<VirtualHost localhost>        //localhost为本机,你可用本机ip



  ServerAdmin [email protected]  //你的mail地址



  DocumentRoot d:\yourweb       //你的项目根目录



  ServerName localhost          //你的服务名,若你的机器有域名,设为域名



 ErrorLog logs/rosealet_home_log.txt  //错误日志,在C:\Apache\logs下



 CustomLog logs/rosealet_Custom_log.txt common   //访问日志,在C:\Apache\logs下



</VirtualHost>




 


4.       关于本文中使用软件中的版本兼容问题

我在刚开始配置服务器的时候,用的Tomcat软件是tomcat 5.5.7结果发现不能运行,后来看了log文件才知道,tomcat 5.5以上的版本需要jdk1.5以上版本,害的我又重新下载了一个tomcat 5.0.30才可以使用。

另外,mysql-connector-java-3.1.7-bin.jar文件是mysql-connector-java-3.1.7.zip文件解压后目录内的一个文件——有这一个文件就够了。mysql-connector-java-3.1.7.zip文件可以到mysql.com网站下载,我在看了它的帮助以后,发现它建议mysql数据库使用4.1以后的版本,因此,我不保证该文件大家能够连接上mysql数据库4.1以前的版本。




 



 


到此,本文应该告一段落了,我这也要感谢网上众多的网友,没有参考他们的相关文章,靠我自己可能需要花费更多的时间和精力,但大部分人在写的时候没有署名,因此我只能说感谢moonsbird(http://www.hyd8.net/info/10100.htm)等网友,本文初次写成,如有错误之处,请见谅并告诉本人(mail:[email protected]),谢谢!



本人主页:http://javaheart.niwote.com



本人QQ:312652431




 


网名:墨·非[Mophay]



2005年4月5日星期二



凌晨0时6分




 



 



 


相关下载:



1.        http://freeweb.nyist.net/~bwc/bd/j2sdk-1_4_2.exe



2.        http://freeweb.nyist.net/~bwc/bd/jakarta-tomcat-5.0.30.exe



3.        http://freeweb.nyist.net/~bwc/bd/mod_jk_2.0.46.dll



4.        http://freeweb.nyist.net/~bwc/bd/mysql-connector-java-3.1.7-bin.jar



5.        http://freeweb.nyist.net/~guyusl/bd/apache_2.0.52-win32-x86-no_ssl.msi



6.        http://freeweb.nyist.net/~guyusl/bd/MYSQL-4.1.7-win.exe



7.        http://freeweb.nyist.net/~guyusl/bd/php-5.0.2-Win32.zip



8.        http://freeweb.nyist.net/~guyusl/bd/phpMyAdmin-2.6.0.zip


相关内容
赞助商链接