|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
做一个果酱瓶[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 admin@rosealet.com //你的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:kafeimo@371.net),谢谢! 本人主页: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 返回类别: 教程 上一教程: java中的基于套结字(socket)的通信 一. 一个双人单方向通信例子 下一教程: java中文件长度的转变 您可以阅读与"做一个果酱瓶[JAMPOT]服务器"相关的教程: · 一个SOCKET服务器样板程 · 一个用来访问http服务器的东西。功能类似于java.net中的那个。但要强。 · 扬扬的J2EE学习笔记(二)J2EE的客户端/服务器 · 基于java得web服务器实现[Z] · 接收网络服务器发送来的数据 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |