RedHat Linux网络服务器构架实务_第1页
RedHat Linux网络服务器构架实务_第2页
RedHat Linux网络服务器构架实务_第3页
RedHat Linux网络服务器构架实务_第4页
RedHat Linux网络服务器构架实务_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、RedHat Linux网络服务器构架实务2002-02-06 17:14:00 赵凤君 Yesky前言这里我将说明本文档的书写动机、配置目标、主要内容、遵循原则和使用说明。我主要的从事领域是网络开发,主要采用的技术方案是FreeBSD/Linux+MySQL/Oracle+JavaBean/EJB+Jsp,也就是所说的四层结构(也有人认为是三层结构,但在J2EE中添加了界面层的概念)。项目开发过程中,常常需要进行服务器的构架,每次配置完毕我都会写一份简单的配置文档作为项目技术文档的一部分。这份文档是我一次次配置的结晶,我将构建网路服务器常用的部分写进了本文档,其一可以作为初学者的安装向导,其

2、二也可以听取大家的意见和建议,使之更加严谨和完善。本文档的目标是构架一个比较规范的RedHat开发服务器作为项目的开发环境。本文档当前共十七个步骤,简明而全面的介绍了DNS、FTP、MySQL、Apache 、JVM、 Resin、 PHP等服务器的配置办法。下面是我书写本文档所遵循的几个原则:1、力求简明:去除任何多余的步骤;让命令说话,只加必要的注释,这样方便大家作为配置清单使用。本文档主要告诉读者如何去做,很少说明为什么这样做(这一点在本版本中有所改善),但需要注意的是,如果您忽略了其中的任何一步都可能导致后面出错;2、系统全面:步骤贯穿从安装操作系统到配置完成的全过程,初学者一步一步照

3、做即可;服务器的配置是一个系统的过程,很多说明文档只是说明某几个软件的配置方法,没有统筹兼顾,所以照搬往往失败;3、力求严谨:这是我的一个目标,也是我发布原因之一,当然这需要大家的检验才能实现;4、保持最新:包括操作系统在内,所有的软件都是截止到文档发布日的最新版本,如果有新的软件版本出现,我也会努力做到及时更新;5、精选软件:文中提及的软件都是大家所熟悉的,只有两个需要说明。其一:为什么不选择FreeBSD而用Redhat?FreeBSD可谓是Intel平台上最好的网络操作系统,但它对JAVA(尤其是新版本的JDK)的支持很差,我曾在较长一段时间内采用FreeBSD作为JAVA开发平台,然而

4、由于SUN并没有发布FreeBSD上的JDK,所以经常造成系统崩溃,已经是多次的经历了;为什么不用Tomcat而使用Resin?虽然Tomcat是Apache组织的一个项目,虽然它也在不断完善起来,但较之Resin还是有一定的差距;Resin在中文支持、执行效率、可定制性、升级速度、支持J2EE等方面都有不俗的表现,也是我个人已经体会到的;虽然我怀疑它在高端应用、系统负载等方面的性能,但应付中小型的Web项目方面应该是绰绰有余的;6、侧重JSP:以搭建JSP开发环境为主,可以作为JSP初学者的服务器配置手册:其一:RH7.2增强了多语言的支持,如果你在安装的过程中选择语言时选择了i18n的简体

5、中文包,加上Resin对中文的良好支持,你无需声明Content-Type(任何方式的声明都不需要),中文将自动支持,这一点文档中也已说明;其二:提供了Resin连接池的配置方法和调用方法,并提供了一个用于数据库连接和处理的组件;其三:提供了添加一个JSP虚拟主机的详细方法,从DNSFTP APACHE到Resin全面讲述;其四:指出了JDBC2.0的支持办法,并提供代码进行测试;7、编译安装:软件全部编译安装,有益于系统可定制性和系统稳定性;8、目标读者:Linux初学者的配置向导和中高级读者的参考;9、配置目标:本文档当前最适合作为企业内部开发服务器的配置手册,如果作为Internet服务

6、器,需要考虑的安全因素还很多,最起码不能全部安装,也不需要安装Xserver,Internet 服务器不仅需要我文档中提及的功能,更需要一个简洁安全的系统;10、功能清晰:我将服务器定位在一个DNS+FTP+MySQL+Apache+Resin+Php构架的Web开发服务器,而将可有可无的服务去掉。所以,文档中没有提及QMAIL、ORACLE和ASP、FrontPage扩展等配置方法。除了功能的分离和读者的需求之外,Oracle的最佳运行平台是SUSELinux,ASP的最佳运行平台是NT,至于Qmail,后续版本可以增加进去;以下是本文档的使用说明:1、颜色说明:深蓝色: 在原文文档中修改的

7、或者添加的部分深绿色: 我的注释2、符号说明#:系统或者软件配置文档中原有的注释;#: 我为随后段落做的说明/:我的行末说明/*/:篇幅较长的说明3、命令说明:我习惯使用vi来表示编辑一个文件,如果不喜欢使用这个工具,你完全可以使用Advanced Editor之类的可视化编辑器或者mc等其他命令。偶尔我会在命令之前加上shell表示这是一个命令,以与文件内容区别开来,但这个版本是中文的,所以我一般不加该符号。make 和make install是可以使用make;make install替代的,但为了便于查看每一步的提示信息,建议分开执行。. /在文中很多地方出现,中间没有空格,而且点号也不

8、明显,需要注意。软件列表下载下面的软件并将它们放到/home/src目录。首先要创建一个系统帐户,然后将软件放到该目录下。下面的软件都将在本文档中用到,下面的连接都是截止到01/18/2002的最新版本:RedHat 7.2 HYPERLINK .au/redhat/linux/7.2/ja/iso/i386/ .au/redhat/linux/7.2/ja/iso/i386/mysql-3.23.47.tar.gz HYPERLINK /mirror/mysql/Downloads/MySQL-3.23/mysql-3.23.47.tar.gz /mirror/mysql/Downloads

9、/MySQL-3.23/mysql-3.23.47.tar.gzmm.mysql-2.0.4-bin.jar HYPERLINK /mirror/mysql/Downloads/Contrib/mm.mysql-2.0.4-bin.jar /mirror/mysql/Downloads/Contrib/mm.mysql-2.0.4-bin.jarapache_1.3.22.tar.gz HYPERLINK /dist/httpd/apache_1.3.22.tar.gz /dist/httpd/apache_1.3.22.tar.gzphp-4.1.1.tar.gz HYPERLINK /do

10、_download.php?download_file=php-4.1.1.tar.gz /do_download.php?download_file=php-4.1.1.tar.gzj2sdk-1_3_1_01-linux-i386.bin HYPERLINK /j2se/1.3/download-linux.html /j2se/1.3/download-linux.htmljaf1_0_1.zip HYPERLINK /products/javabeans/glasgow/jaf.html /products/javabeans/glasgow/jaf.htmljavamail1_1_3

11、.zip HYPERLINK /products/javamail/javamail-1_1_3.html /products/javamail/javamail-1_1_3.htmlresin-2.0.5.tar.gz HYPERLINK /download/resin-2.0.5.tar.gz /download/resin-2.0.5.tar.gzphpMyAdmin-2.2.3-php.tar.gz HYPERLINK /phpmyadmin/phpMyAdmin-2.2.3-php.tar.gz /phpmyadmin/phpMyAdmin-2.2.3-php.tar.gz配置步骤S

12、tep 1 RedHat 7.2 install我的建议:1、安装时为home建立单独的分区,因为home是用户数据的存放之地,本文档中也将软件的安装文件都放到这个目录下,所以,这样做当你下次重新安装系统的时候,可以保留该分区,数据也就得以保全;2、采用定制安装的方式并选中Everything选项,这样特别适合于初学者,否则后面的安装过程中可能会出现找不到某个包或某个命令的情况;但如果是配置Internet服务器,就应该只选择必需的包,做到尽量的精简才够安全;3、选择语言时,建议选中simplifiedchinese(P.R.CHINA)选项,这样,当你配置好服务器的时候,在程序代码中无需任何

13、声明,中文将被支持而不会乱码;4、使用Gnome做为登陆管理器,使用KDE作为默认的Session,设置默认启动到X,这样做的目的是为了方便远程控制;5、IP:,这是我在本文档中使用的IP,这个可以自行设置。6、文档中我没有涉及到防火墙的设置,系统安装完成后你可以使用ntsysv或者chkconfig命令将iptables和ipchains两个服务禁用掉,否则会导致telnet和远程登陆等无法使用;当然,如果您熟悉防火墙设置,可以自行处理。Step 2 X setup#这一步完成后,重启服务器,然后你就可以使用Extra!X等远程控制软件以图形界面在微软平台上进行服务器配置,这样做的好处是可以

14、同时控制服务器端和客户端,不必奔走在两台机器之间。如果你按照下面的设置不能进行远程控制,那么,很有可能你的防火墙策略不允许这样做,禁用掉iptables和ipchains就可以了。vi etcX11gdmgdm.conf启用远程控制xdmcpEnable=1vi etcX11gdmSessionsDefault设置默认SessionexecetcX11xdmXsession kdevi etcX11xdmXaccess 设置广播对象192.168.1.*Step 3 Services setupShell ntsysv运行ntsysv命令启用named 、telnet 和 wu_ftpd 服务

15、,禁用httpd、mysqld、iptables和ipchains 服务和其他一些不需要的服务,然后用reboot重启服务器。Step 4 Dns setupvi etcnamed.conf1创建标准区域#你可以根据你的喜好来命名,这里我使用的后缀是.loc,主要是为了避免和Internet已经注册的域名相冲突,你可以自行决定你的后缀。#添加下面的文本到etcnamed.confzone yesgo.loctype master;file yesgo.loc;zone 1.168.192.type master;file 192.168.1;2 创建域名库文件touch varnamedyes

16、go.loctouchvarnamed192.168.1#编辑正向域名库文件,建立主机名和主机别名vi varnamedyesgo.locINSOAns.yesgo.loc. root.ns.yesgo.loc.(2001050801 ; Serial28800; Refresh14400; Retry3600000 ; Expire86400 ) ; MinimumINNSns.yesgo.loc.IN MX0ns.yesgo.loc.nsINAftpINCNAMEns.yesgo.loc.mailINCNAMEns.yesgo.loc.popINCNAMEns.yesgo.loc.smtp

17、INCNAMEns.yesgo.loc.#编辑反向域名库文件,建立主机名指针vi varnamed192.168.1INSOAns.yesgo.loc. root.ns.yesgo.loc.(2001050801 ; Serial28800; Refresh14400; Retry3600000; Expire86400 ); MinimumIN NS ns.yesgo.loc.IN MX 0 ns.yesgo.loc.2INPTRns.yesgo.loc.3 重新启动DNS服务etcrc.dinit.dnamed restart4 域名查询#测试域名是否解析成功,这是一个交互式的命令行,你可

18、以输入域名或者IP地址进行正向和反向查询nslookup -silStep 5 KDE setup这一步是可有可无的,因为你完全可以不去理会而直接使用默认界面。一般的做法是先根据KDE配置向导进行总体设置,然后再使用KDE控制中心进行详细配置,在此不多介绍。需要提的一点是你可以通过KDEControl Panel 中的Windows Manager来设置默认Session,当然也可以通过配置文件来实现这一点。Step 6 Ftp setupvietcshells#添加下面一行到etcshells,将作为FTP用户的shell,使其不能使用命令和telnet服务devnull# 增加ftpchr

19、oot组,该组中的用户将以自己的home目录作为FTP根目录groupadd ftpchroot# 添加FTP用户,该类用户只能使用FTP服务,且以自己的home目录为根目录useradd src -s devnull -gftpchroot 本帐号用来存放软件包passwd src*我习惯将软件包放到自定义的homesrc目录,主要目的还是上面提到的数据保全和软件上传问题,如果放到usrlocalsrc目录,这两点也能实现但不方便,如果你习惯将软件包放到usrlocalsrc,你可以删除usrlocalsrc然后为homesrc建立一个符号连接。*rm-R -f usrlocalsrcln

20、-s homesrc usrlocalsrcStep 7 MySQL、Apache and php Unistall使用Package管理器或者rpm命令卸载MySQL、Apache和PHP,建议初学者使用Package管理器,分别查找这三个关键词直到将所有相关的软件包都卸载干净。我们接着会编译安装这些软件。Step 8 MySQL install1 准备用户userdel mysqluseradd mysql -s devnull -g ftpchrootpasswd mysql2 安装MySQLcd homesrctar xvzf my*解包cd my*.configure -prefix

21、=usrlocalmysql配置make编译makeinstall安装.scriptsmysql_install_db建库3 修改文件夹权限#下面修改相关文件夹权限,否则MySQL服务不能启动,或者说你对数据库没有写权限chown -R rootusrlocalmysqlchgrp -R mysql usrlocalmysqlchown -R root usrlocalmysqlbinchgrp -R mysqlusrlocalmysqlbinchown -R root usrlocalmysqlvarchgrp -R mysqlusrlocalmysqlvarchmod 770 usrloc

22、almysqlvarchown -R root usrlocalmysqlvarmysqlchgrp -R mysqlusrlocalmysqlvarmysqlchmod 770 usrlocalmysqlvarmysqlchown -R root usrlocalmysqlvarmysql*chgrp -R mysqlusrlocalmysqlvarmysql*chmod 770 usrlocalmysqlvarmysql*chmod 770 usrlocalmysqllibmysqllibmysqlclient.a4 重新加载动态库#因为我们采用自定义编译安装的方式,所以跟系统原先定义的库

23、位置不一样,现在我们重新指定它并重新加载vietcld.so.conf#添加下面一行usrlocalmysqllibshellldconfig重新加载动态库5 测试MySQLcd usrlocalmysql.binsafe_mysqld -user=mysql &启动MySQL服务mysqladmin -u root -p passwordyour_password更改用户密码mysql -p开始使用6 创建启动脚本#创建MySQL服务,使之在系统启动时自动启动cd etcrc.dinit.dtouch mysqldvi mysqld#文件内容如下:#!binbash#Start MySQL

24、servicecdusrlocalmysql.binsafe_mysqld - -user=mysql、rs.first();和rs.last();都没任何作用,所以我仍然使用mm.mysql-2.0.4-bin.jar.zip。#创建类库主目录mkdir usrlocallibjava#下面安装MySQL的JDBC驱动,这个驱动是支持JDBC2.0的mkdirusrlocallibjavadriverscp homesrcmm.mysql-2.0.4-bin.jar.zipusrlocallibjavadrivers MySQL driver#下面安装JAF,需要说明的是,下载的jaf包是个

25、winzip文件,我是windows上解压的,然后创建了一个jaf的目录将activation.jar放到里面又上传到homesrc的,你可以自行解决mkdirusrlocallibjavajafcp homesrcjavajafactivation.jarusrlocallibjavajaf Jaf class#下面安装JAVAMAIL,我的处理办法同上mkdir usrlocallibjavajavamailcphomesrcjavajavamail*.jar usrlocallibjavajavamail JavaMail classesStep 13 Edit etcprofile#这

26、一步用来配置环境变量,Resin的安装需要依赖该步骤Vi etcprofile#在etcprofile文件末添加如下内容:JAVA_HOME=usrlocaljvmRESIN_HOME=usrlocalresinCLASS_HOME=usrlocallibjavaCLASSPATH=$CLASSPATH:$JAVA_HOMElibtools.jar:$JAVA_HOMElibdt.jar:$JAVA_HOMEjrelib:$RESIN_HOMElib:$CLASS_HOMEdriversmm.mysql-2.0.4-bin.jar.zip:$CLASS_HOMEjafactivation.ja

27、r:$CLASS_HOMEjavamailmail.jar: $CLASS_HOMEjavamail smtp.jar:$CLASS_HOMEjavamail pop3.jar: $CLASS_HOMEjavamailmailapi.jar:$CLASS_HOMEjavamailimap.jarPATH=$PATH:bin:sbin:usrbin:usrsbin:usrlocal:usrlocalbin:usrlocaljvmbin:usrlocaljvmjrebin:usrlocalmysqlbin:usrbinX11:usrX11R6binexport JAVA_HOME RESIN_HO

28、ME CLASS_HOME CLASSPATH PATH # 保存文件后注销登陆,然后重新进入,输入下面的命令查看系统变量是否已经生效:ShellenvStep 14 Resin Install1 安装Resincd homesrccp homesrcresin-2.0.5.tar.gzusrlocalcd usrlocaltar xvzf resin*cd resin*.configure -with-apache=usrlocalapache设置编译参数(Or:.configure-with-apxs=usrlocalapachebinapxs)make编译makeinstall安装2 建

29、立符号连接#建立resin的符号连接,道理同建立jvm符号连接ln -s usrlocalresin2.0.5usrlocalresin#建立resin服务程序的符号连接,道理同建立apache符号连接ln -s usrlocalresinbinhttpd.shusrbinresin3 修改配置文件vi usrlocalresinconfresin.confModify One: 建立连接池,类似于NT上的DSN(数据源)resource-refres-ref-namejdbctestres-ref-name数据源名称res-typejavax.sql.DataSourceres-type数据

30、源类型init-paramdriver-name=org.gjt.mm.mysql.Driver数据库驱动init-param url=jdbc:mysql:localhosttest 连接串 init-paramuser=your_user_name用户名init-parampassword=your_password密码init-parammax-connections=20最大连接数init-parammax-idle-time=30延时时间resource-ref#后面的测试部分有例子介绍如何调用数据源Modify Two: 修改默认主目录,如果使用虚拟主机,其实也可以不理会这个地方a

31、pp-dirusrlocalapachehtdocs app-dirModify Three: 修改Resin端口,与Apache协同工作http port=8080 删除本行即可Modify Four: 添加支持JSP的虚拟主机#添加一个支持JSP的虚拟主机需要做如下四方面的工作:DNS、FTP、APACHE、RESIN1、添加一个DNS别名(当然主机名也可以)vi varnamedyesgo.loc#追加如下一行,当然你可以自定义其他别名或主机名wwwIN CNAMEns.yesgo.loc.etcrc.dinit.dnamed restart重启DNS服务nslookup测试是否解析成功

32、2、添加一个FTP帐号Useradd www -s devnull -gftpchroot添加帐号Passwd www 修改密码Chmod 701homewww设置权限,否则将来访问时服务器会说你没权限3、在Apache中添加虚拟主机viusrlocalapacheconfhttpd.conf#指定你建立虚拟主机所用的IP地址NameVirtualHost # Add virtual hostVirtualHost www.yesgo.locServerAdminwebmasteryesgo.loc 管理员邮件DocumentRoothomewww根目录ServerNamewww.yesgo.

33、loc域名ErrorLog logswww.yesgo.loc-error_log错误日志名称CustomLog logswww.yesgo.loc -access_logcommon自定义日志名称VirtualHost4、在Resin中添加虚拟主机,以支持JSPviusrlocalresinconfresin.conf#在文档中查找host,然后在其后加入如下内容:hostid=www.yesgo.locapp-dirhomewwwapp-dir指定该站点的根目录classpathid=classes source=classes compile=true 指定class文件目录host注意

34、:按照上面地设置,你放置JavaBean的目录就是站点根目录下的classes目录,不可以死记硬背WEB-INFOclasses,关键要明白其中的道理,其实你设置什么都可以的,例如Amao,Agou啦,呵呵。强烈建议:设置classes目录的权限,否则客户端可以浏览和下载你的组件chmod 701 homewwwclasses 设置classes目录的权限,避免非法获取4 测试Resin#启动Resinshellresin start#重新启动Apache,因为刚才修改了httpd.conf,需要重启才生效shellapache restart#创建文件touch homewwwindex.j

35、spchown -R wwwhomewwwindex.jspchmod 701 homewwwindex.jsp#编辑源文件vihomewwwindex.jsp#源代码只有一句:1+1=%=1+1%#测试该程序lynxhttp:www.yesgo.loc#输出结果应该是:1+1=25创建启动脚本#创建Resin服务,道理跟创建MySQL和Apache服务是一样的,不过这里要设置相关环境变量。#创建脚本文件touchetcrc.dinit.dresin#更改文件权限chmod 701etcrc.dinit.dresin#连接到相关启动级别ln -s etcrc.dinit.dresinetcrc

36、.drc5.dS70resin#编辑启动脚本vi etcrc.dinit.dresin#文件内容如下:#!binbash#Set environment parameter:JAVA_HOME=usrlocaljvmRESIN_HOME=usrlocalresinCLASS_HOME=usrlocallibjavaCLASSPATH=$CLASSPATH:$JAVA_HOMElibtools.jar:$JAVA_HOMElibdt.jar:$JAVA_HOMEjrelib:$RESIN_HOMElib:$CLASS_HOMEdriversmm.mysql-2.0.4-bin.jar.zip:$

37、CLASS_HOMEjafactivation.jar:$CLASS_HOMEjavamailmail.jar:$CLASS_HOMEjavamail smtp.jar: $CLASS_HOMEjavamail pop3.jar:$CLASS_HOMEjavamailmailapi.jar: $CLASS_HOMEjavamailimap.jarPATH=$PATH:bin:sbin:usrbin:usrsbin:usrlocal:usrlocalbin:usrlocaljvmbin:usrlocaljvmjrebin:usrlocalmysqlbin:usrbinX11:usrX11R6bi

38、nexport JAVA_HOME RESIN_HOME CLASS_HOME CLASSPATH PATH#Start resin web serverexec usrlocalresinhttpd.sh startStep 15 PhpMyAdmin install#phpMyAdmin是我最喜欢的MySQL客户端工具。我也使用过其他的客户端,包括win32的DBTools、mysqlfront等和基于web的其他工具,然而,我最后发现phpMyAdmin仍然是不可替代的。它基于web的通用性、免安装、多用户、平台无关性、稳定性、开放源码和极快的升级速度实在是太好了。况且本文档主要探讨的是

39、服务器的配置,所以,我这里仍然只介绍phpMyAdmin。1 配置DNSvi varnamedyesgo.loc#追加如下一行,当然你可以自定义其他别名或主机名mysqlINCNAMEns.yesgo.loc.etcrc.dinit.dnamedrestart重启DNS服务nslookup测试是否解析成功2建立FTP#在安装MySQL的时候,我们已经建立了一个叫做mysql的帐号,如果你还没有建立,可以按照下面的语句建立:useraddmysq -s devnull -g ftpchrootpasswd mysql3 安装phpMyAdmintar xvzf homesrcphpMy*cpho

40、mesrcphpMyAdmin* homemysqlchown -R mysql homemysqlchown -Rmysql homemysql*chmod 701 homemysqlchmod 701 homemysql*4 添加虚拟主机vi usrlocalapacheconfhttpd.confVirtualHost mysql.yesgo.locServerAdmin webmasteryesgo.locDocumentRoot homemysqlServerName mysql.yesgo.locErrorLog logsmysql.yesgo.loc-error_logCusto

41、mLoglogsmysql.yesgo.loc-access_log commonVirtualHost5添加身份验证#添加MySQL用户#使用身份验证功能,phpMyAdmin需要一个启动用户,这个用户对mysql的相关表具有查询权限,具体定义如下:shellmysql -pmysqlGRANT USAGE ON mysql.* TO stduserlocalhost IDENTIFIED BYstdpass;mysqlGRANT SELECT (Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv, Create_pri

42、v, Drop_priv, Reload_priv,Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv,Index_priv, Alter_priv) ON mysql.user TOstduserlocalhost;mysqlGRANT SELECT ON mysql.db TOstduserlocalhost;mysqlGRANT SELECT (Host, Db, User, Table_name,Table_priv, Column_priv) ON mysql.tables_priv TOstduse

43、rlocalhost;#修改配置文件vi config.inc.php $cfgServers1host= localhost; 主机名$cfgServers1port= 3306;默认端口$cfgServers1socket= ;使用的socket路径$cfgServers1connect_type = tcp; 使用tcp还是socket方式来连接$cfgServers1stduser= ; 标准用户帐号名称$cfgServers1stdpass= ; 标准帐号的密码$cfgServers1auth_type= http;指定验证方式为config, http 还是cookie,这是2.2

44、.3版本的一个变化,比较安全的方式是http验证$cfgServers1user = root; MySQL 帐号$cfgServers1password = ;只有使用config验证方式的时候才需要填写$cfgServers1only_db= ; 如果你在这里指定了一个数据库,那么登陆后系统只列出这个数据库在左侧6 测试phpMyAdminapache restartlynxhttp:mysql.yesgo.loc建议使用客户端浏览器测试Step 16 Server Test# 为什么不使用 1+1=%=1+1%或者%out.print(Hello World!);%这样的例子呢?因为这样

45、的例子只能测试Apache和Resin是否能够协同工作,而不能测试数据库连接、JDBC2.0是否支持,中文问题是否存在等等。下面给出四个例子,第一个例子可以测试上述的所有问题;第二个例子告诉你如何使用Resin的连接池;第三个例子告诉你如何调用组件,如何实现数据层和处理层的分离;第四个例子用来测试PHP。例一:使用连接串连接数据库1 创建数据库# 数据库脚本如下,可存储为.sql文件,然后利用phpMyAdmin生成数据库#注意,后面的例子也将沿用该数据库。create database yesgouse yesgo;create table prov(prov_idtinyint(2)not

46、 nullprimary key,prov_namechar(6)not null);insert into prov values (01,安徽);insert into prov values(02,北京);insert into prov values (03,重庆);insert into provvalues (04,福建);insert into prov values (05,甘肃);insert intoprov values (06,广东);insert into prov values (07,广西);insertinto prov values (08,贵州);inser

47、t into prov values(09,海南);insert into prov values (10,河北);insert into provvalues (11,黑龙江);insert into prov values (12,河南);insert intoprov values (13,湖北);insert into prov values (14,湖南);insertinto prov values (15,内蒙古);insert into prov values(16,江苏);insert into prov values (17,江西);insert into provvalu

48、es (18,吉林);insert into prov values (19,辽宁);insert intoprov values (20,宁夏);insert into prov values (21,青海);insertinto prov values (22,山西);insert into prov values(23,陕西);insert into prov values (24,山东);insert into provvalues (25,上海);insert into prov values (26,四川);insert intoprov values (27,天津);insert

49、 into prov values (28,西藏);insertinto prov values (29,新疆);insert into prov values(30,云南);insert into prov values (31,浙江);insert into provvalues (32,香港);insert into prov values (33,澳门);insert intoprov values (34,台湾);2为数据库添加帐号#按如下方式添加的帐户只对yesgo数据库具有权限,而且对它拥有全部权限。但为什么要添加四次呢?主要是host的不同,需要注意的是,MySQL验证是一个连

50、接是否正确,不仅取决于帐号和密码,还要看主机名和数据库名。mysql -pmysql grant all privileges on yesgo.* to your_user_namelocalhost identified by your_password with grant option;mysql grant all privileges on yesgo.* to your_user_namens.yesgo.loc identified by your_password with grant option;mysql grant all privileges on yesgo.*

51、to your_user_name identified by your_password with grant option;mysql grant all privileges on yesgo.* to your_user_name%identified by your_password with grant option;mysqlexit3 创建JSP源文件touch homewwwcnmysql.jspchown -R wwwhomewwwcnmysql.jspchgrp -r root homewwwcnmysql.jspchmod 771homewwwcnmsql.jspvi

52、homewwwcnmsql.jsp# 源代码如下:% page language=javaimport=java.sql.*%Class.forName(org.gjt.mm.mysql.Driver);Connection conn =DriverManager.getConnection(jdbc:mysql:host_namedb_name,user_name,password);Statementstmt = conn.createStatement();ResultSet rs=stmt.executeQuery(select *from prov);rs.next();out.pr

53、int(rs.getString(prov_id)+rs.getString(prov_name)+br);rs.next();out.print(rs.getString(prov_id)+rs.getString(prov_name)+br);rs.previous();out.print(rs.getString(prov_id)+rs.getString(prov_name)+br);rs.last();out.print(rs.getString(prov_id)+rs.getString(prov_name)+br);rs.first();out.print(rs.getStrin

54、g(prov_id)+rs.getString(prov_name)+br);rs.close();stmt.close();conn.close();%4 测试该程序lynx http:www.yesgo.loccnmysql#正确的结果应该是:1 安徽2 北京1 安徽34 台湾1 安徽例二:使用连接池连接数据库1 建立数据源vi usrlocalresinconfresin.confresource-refres-ref-namejdbcyesgores-ref-name数据源名称res-typejavax.sql.DataSourceres-type数据源类型init-paramdriv

55、er-name=org.gjt.mm.mysql.Driver数据库驱动init-param url=jdbc:mysql:localhostyesgo 连接串init-paramuser=your_user_name用户名init-parampassword=your_password密码init-parammax-connections=20最大连接数init-parammax-idle-time=30延时时间resource-ref2 创建JSP源文件touch homewwwtestpool.jspchown -R wwwhomewwwtestpool.jspchgrp -r root

56、 homewwwtestpool.jspchmod 771homewwwtestpool.jspvi homewwwtestpool.jsp# 源代码如下:% page language=java import=java.sql.*,com.caucho.sql.*;%DBPool pool=new DBPool();Connection conn =pool.getPool(data_source_name ).getConnection();Statement stmt =conn.createStatement();ResultSet rs=stmt.executeQuery(selec

57、t * fromprov);rs.next();out.print(rs.getString(prov_id)+rs.getString(prov_name)+br);rs.next();out.print(rs.getString(prov_id)+rs.getString(prov_name)+br);rs.previous();out.print(rs.getString(prov_id)+rs.getString(prov_name)+br);rs.last();out.print(rs.getString(prov_id)+rs.getString(prov_name)+br);rs

58、.first();out.print(rs.getString(prov_id)+rs.getString(prov_name)+br);rs.close();stmt.close();conn.close();%3 调试该程序lynx http:www.yesgo.loctestpool.jsp#处理的结果跟例一是一样的:1 安徽2 北京1 安徽34 台湾1 安徽例三:使用处理层连接数据库#本例告诉你如何使用组件#其实你完全可以写一个bean来处理数据库,而不用象例二那么罗索。只用四条语句就可以取出数据库中的所有数据并显示出来,这样做实现了处理层和逻辑层的彻底分离,由逻辑层发出指令、由处理层

59、去响应相关处理,记录集也不会返回到逻辑层的jsp页面,而由处理层的bean处理,使得代码非常精简,效率也更高。至于如何书写组件不是本文档的重点,下面仅给出一个组件的例子并说明逻辑层的调用方法,你会发现其实逻辑层是个官僚,处理层是下属,呵呵。1创建处理层组件下面的组件是我为公司写的数据库处理组件的简化版本,考虑到篇幅和可读性等问题,这里我简化了它的功能(象数据分页、批量更新、获取字段数和字段名称,用set和get提高其扩展性、对其他连库方法的支持等都没有出现在下面的代码中),使之包含所有常用的功能并使之更加清晰和易于理解;其二,我将连库动作加到了构造函数中,这是个优点也是个缺点,优点是简化了连库

60、动作,缺点是降低了通用性,我没有添加设置数据源等方法,从而每当变换一次数据库就需要改写组件中的连接池名称,这在做一个固定项目的时候是可以的,如果你需要set数据源,可以自行添加;#使用组件的方法:我这里说的是使用bean的通用方法,你建立自己的bean目录可以仿照该例子。在你的站点根目录下建立resin.conf中指定的存放bean的目录,我上面的举例是classes,那你就建立classes目录,那么classes就是你站点的class根目录。然后在下面依次建立comgledecityyesgosql,注意它们之间是父子关系,不是同级文件夹,然后将下面即将建立的DBBridge.java放到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论