JavaGroups网站雏形已大致建设完毕!2008-1-8
本系统的论坛社区有Discz网上论坛提供,JSP服务由我自己制作,采用Apache+Tomcat+PHP+MySql+phpMyAdmin系统整合使用。今已测试成功。2008-1-8
下面将介绍系统制作的难点部分:
一、首先是Apache+Tomcat+PHP+Mysql+phpMyAdmin整合部分:
1、 安装Apache
a) 下载Apache2.2.6.msi
b) 安装后在E盘中建立网站存放空间WebRoot,再修改Apache2.2下的conf/httpd.conf文件
c) 在httpd.conf中找到ServerRoot 设置为 ServerRoot “E:/Apache2.2”
d) 找到DocumentRoot 设置为 DocumentRoot “E:/WebRoot”
e) 找到<Directory > 设置为 <Directory "E:/WebRoot">
f) 保存,再在WebRoot中新建index.html内容为<h1>Apache Success</h1>
g) 启动Apache,在浏览器中输入http://localhost若出现Apache Success则配置成功。
h) 启动故障解决办法:
i. 有时出现无法启动的,查看logs/error.logs出现“(OS 10022)提供了一个无效的参数”的信息 就修改 “本地连接”—“TCP/IP”—“高级”—“wins”去掉LMHOST查询前的“勾”,选上“启用TCP/IP 的NetBOIS”。再启动Apache服务,就OK了
2、 安装PHP服务
a) 下载php-5.2.5-Win32.zip 解压到E:/PHP里
b)
配置php.ini
把E:/php文件夹下的php.ini-recommended改名,改名为php.ini[ 出于安全和效率的考虑,建议使用php.ini-recommended作为php.ini的蓝本,而不要使用php.ini-dist。]
打开php.ini,找到extension_dir = "./" 改为 extension_dir = "E:/php/ext",也就是你的PHP目录下,包含着一大堆.dll文件的那个目录.找到;extension=php_gd2.dll,;extension=php_mbstring.dll,;extension=php_mysql.dll这3行,把这3行前的";"都去掉,让这3行生效,也就是说,让你的PHP支持mysql组件.
在E:/php/ 创建文件夹 session_tmp 找到session.save_path 这一行,设成session.save_path = "C:/php/session_tmp"这句话的作用是,让产生的session文件,都存到你设的目录C:/php/session_tmp里去,不然你的系统目录里,会有很多session文件.(真正用做网络服务器时是不把session文件夹建到web文档文件夹里的)[要是您以CGI方式安装了以后,就要找到session.auto_start段,改成session.auto_start = 1.用我们这方法装就不用改]
然后保存php.ini
c)
设置path
a.设置环境变量PHPRC 使 php.ini有效
[这一步可以在httpd.conf里添加 PHPIniDir "E:/php" 来实现,但是我建议用设置path的方法,要是你对PHP命令行下有兴趣的话,这样设置时正确的设置方法]
右击“我的电脑”选 ”属性“——"高级"——环境变量 ——下面的“新建”
来新建一个系统变量 ,输入如下(其中E:/php是你的 PHP 所在的文件夹);(如图12)
b.在系统变量 里 双击 变量 "path",弹出系统path变量的编辑框, 在变量值后面加上 ;E:/php [也就是你的PHP的文件夹]
c.点击 系统变量 的 “新建”输入(如图13)的信息(E:/php/ext的E:/php为你的 PHP所在的文件夹)
3、 整合Apache+PHP服务
a)
回到httpd.conf文件
找到 DirectoryIndex index.html index.html.var 在后面加入 index.htm index.php
在最后加入
LoadFile E:/php/php5ts.dll #(使apache运行时加载php5ts.dll)
LoadFile E:/php/libmysql.dll
LoadModule php5_module E:/php/php5apache2.dll #(如果是apache2.2.X,载入php5apache2_2.dll模块,当初我开始写这篇的时候,还官方发布的php包还没有这个模块)
AddType application/x-httpd-php .php #(让PHP解释器将.php文件作为它的解释的一种文件类型)
保存设置。
在WEB根目录(E:/WebRoot)里建一个名为test.php的文件内容如下
<?php phpinfo(); ?>
重新成功启动apache服务
用浏览器打开 localhost/test.php
如果可以看到一个有很多信息的页面,OK了
这里你将PHP安装为APACHE的模块,此时PHP环境基本已经配置成功
4、 安装MySql:
a) 这个就不用说了,很简单。但要注意使用时要设置root的密码,因为开始时root的密码为空。
b) 启动服务
c) 参考:Mysql中文手册
5、 安装Tomcat
a) 下载Tomcat6.04.zip
b) 设置环境变量:
i. “JAVA_HOME=E:/Java/jdk1.6.0”
ii. “JRE_HOME=E:/Java/jre1.6.0”
iii. 重启计算机
iv. 运行Tomcat6.04/bin/startup 启动服务
v. 修改Tomcat6.04/conf/sever.xml文件,找到<HOST > 修改”webapps”为”E:/WebRoot”
vi. 在E:/WebRoot中建立ROOT的文件夹,再在ROOT中建立index.jsp文件,其内容为<% out.print(“Tomcat Test Success!!”);%>
vii. 在地址栏中输入http://localhost:8080测试
6、 整合Apache和Tomcat(这是重点,也是难点)
a) 下载mod_jk-1.2.26-httpd-2.2.4.so (注意:mod_jk的版本要和Apache的版本大体一致
b) 将其放在Apache/modules里。
c) 打开Apache/conf/httpd.conf文件,在最后添加:
LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so
JkWorkersFile "E:/Apache Tomcat 6.0.14/conf/workers.properties"
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
JKMount/*.do ajp13 #提供.do的方式访问网站
d) 在E:/Apache Tomcat 6.0.14/conf下新建worker.properties文件其内容是:
workers.tomcat_home=E:/Apache Tomcat 6.0.14
workers.java_home=E:/Java/jdk1.6.0_03
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)
e) 保存,重启Tomcat,Apache,输入http://localhost/index.jsp测试WebRoot/ROOT中的index.jsp文件。
7、 到此,服务器配置全部成功。
8、 这种配置是将php,html文件有Apache执行,由Apache提供服务,而Tomcat只做JSP文件的解释器,不做服务器用。
9、 安装phpMyAdmin
a) 下载phpMyAdmin并解压到E:/WebRoot
修改config.sample.inc.php文件名为config.inc.php
配置config.inc.php文件(亦可以参考phpMyAdmin目录下的Documentation.html的"Quick Install")
手工修改(这是我的配置实例,仅供参考)
<?php
/*
* Generated configuration file
* Generated by: phpMyAdmin 2.10.0.2 setup script by Michal Čihař <michal@cihar.com>
* Version: $Id: setup.php 9697 2006-11-13 08:32:28Z nijel $
* Date: Sat, 14 Apr 2007 08:27:28 GMT
*/
/* Servers configuration */
$i = 0;
/* Server localhost (cookie) [1] */
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = true;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* End of servers configuration */
$cfg['blowfish_secret'] = '46208fe1319777.57747900';
?>
b.通过Web界面进行修改
http://yourdomain/phpmyadmin/script/setup.php进行配置
10、 安装Discuz论坛
a) 下载Discuz!_6.0.0RC1_SC_UTF8版本解压到E:/WebRoot下Discuz
b) 输入http://localhost/Discuz/install.php
c) 设置好就OK了
二、解决Apache、Tomcat 之间的资源访问技术
由于这是两种不同的服务器,Tomcat只能作为JSP的解释器,都是ROOT里面。读取图片、CSS是相对<%=request.getContextPath()%>的,而不是想读ROOT的,所以要将CSS、images等非JSP的文件要放在WebRoot里面,这样就能解决两种服务器的资源访问问题。
三、解决数据库、网页相互读取的乱码问题
由于网页的访问方式都是通过UTF-8编码来传递的,因此在网页间、网页与数据库之间的编码要统一。不能由多种编码混合使用,这样只会造成乱码出错率的提高,服务器的性能下降。
1、 使用JSTL标签:
a) 使用JSTL标签库:param[xxxx]或param.xxxx (个人认为这是解决JSP乱码的最好方式)
b) 连接数据库时指定编码:在库名后加上“?useUnicode=true&characterEncoding=utf-8”(引号里的内容)
2、 使用Java编码转换
a) String s=new String(“request”.getBytes(“utf-8”),”iso-8859-1”);
b) 写入数据库就用iso-8859-1编码,从数据库中读出来就用utf-8
3、 使用编码函数:(这种办法不是很好,Java有很好的字符转换器,不必如此,故不详细写出)
总结:要充分利用JSP和JSTL标签,他们在处理网页上是很有效率的。