| 9.5 开发动态Web站点:PHP3和mod_perl XteamLinux中考虑到为了方便用户快速的开发高效率的动态Web站点,集成了PHP3和mod_perl等多种动态Web站点开发方案,用户可以根据自己的需要,选择最适合自己、用起来最顺手的方案。下面我们来简略的介绍一下所有的这些动态Web站点开发方案中最流行的两种:PHP3和mod_perl。我们这里着重要介绍的是它们和XteamLinux所捆绑的Apache Web服务器所结合起来以后的开发方案。 在介绍PHP3和mod_perl之前,我们先来看一下关于开发动态Web站点的最基本的技术:CGI的一些背景知识。 CGI即所谓的通用网关接口(Common Gateway Interface)。这是一种独立于平台的,通过Web服务器来运行其它外部程序的接口标准。CGI提供了一种独立于平台、独立于各种Web服务器、独立于各种编程语言的,简明的、标准的动态Web页面开发办法。 CGI的缺点是显而易见的。首先是性能上不去,为了创建进程以及连接状态等等,要消耗掉大量的资源。其次是CGI接口根本谈不上“面向对象”等等高级编程技术,它是一种非常底层的API(Application Programming Interface,应用程序编程接口)。此外,如何在多次请求之间维护状态信息、Transaction、开发更强的动态交互的Web站点等等,用CGI实现起来都是非常的困难,甚至是根本不可能实现的。 至于诸如Netscape的NSAPI、微软的ISAPI等等服务器API接口技术,确实解决了许多标准的CGI技术难以解决的问题。但是这些服务器API接口技术带来的严重问题是,它们完全依赖于特定的Web服务器、依赖于特定的编程语言;并且,利用这些API开发程序必须得特别小心,一个程序中的小错误就极有可能导致整个系统死机。 我们下面要介绍到的PHP3和mod_perl这两个方案,以及在后面一节中提到的基于Python的Zope技术,将在不同程度上解决以往在开发动态Web站点时所遇到的各种不同的问题。 我们先来粗略的看一下PHP3。PHP3是解释于服务器端、内嵌于HTML页面文件中的脚本语言,或者可以简单粗略的理解为SSI(Server Side Include)的高级形式。对于熟悉微软的Active Server Pages(ASP)的朋友们来说,也许PHP3会有一些似曾相识的感觉。它和Apache Web服务器结合起来,可以提供比普通的CGI程序更高的执行效率。并且,正如ASP相比较于ISAPI一样,PHP3的开发过程相比较于其它的动态Web开发方案也更为简明、清晰,开发效率也更高。 也许,PHP3的最强大的地方就在于它和各种数据库技术的紧密集成。我们都知道,一个没有数据库支持的站点是不能够被称为“动态”的。XteamLinux当前版本所捆绑的PHP3的Apache模块mod_php3版本3.0.5: [root@xteam /root]# rpm -q mod_php3 mod_php3-3.0.5-2 [root@xteam /root]# 这一版本的mod_php3已能支持如下所列的数据库: PostgreSQL Oracle Adabas D Sybase FilePro mSQL 1.x以及2.x Velocis MySQL Solid dBase Generic ODBC Unix dbm 所有支持ODBC接口的数据库系统 这几乎涵盖了在Web上使用的95%以上的数据库了。不过,数据库支持无论怎样都是一个比较大的话题,以后我们可以专门集中注意力于PHP3的数据库支持;暂时目前我们还是先回过头来看一个取自于PHP3手册中的简单的例子吧。这个例子是一小段嵌于HTML页面文件中的PHP3代码,验证用户的身份信息: <?php if(!isset($PHP_AUTH_USER)) { Header("WWW-authenticate: basic realm="My Realm""); Header("HTTP/1.0 401 Unauthorized"); echo "对不起,你的身份验证失败。"; exit; } else { echo "欢迎你,$PHP_AUTH_USER。<P>"; echo "你输入的密码是:$PHP_AUTH_PW。<P>"; } ?> PHP3程序脚本被包括在“<?php”和“?>”中间,当激活了PHP3支持的Apache Web服务器读到这样的标记时,就把这中间的PHP3代码解释执行,把结果连同HTML页面文件中的其它部分一起输出给客户端的Web浏览器。上面的Header()函数的输出被置于HTTP响应的头信息(Header)中间,而“echo”命令的输出在客户端Web浏览器看来,则相当于普普通通的HTML文件中的简简单单的一句话而已。 由于PHP3解释器是以Apache Web服务器的模块的身份来运行的,这就免去了一般的(诸如用标准Perl脚本语言所写的)CGI程序运行时,要启动一个解释器所带来的额外的系统开销;另外,PHP3又天生的具有脚本语言所特有的快速开发的优点,不需要用户去摆弄复杂、晦涩的C语言等等。而“嵌于大段HTML中的小段代码”,相比较于标准的CGI中的“嵌于一大段又一大段代码中的几行HTML”,对于Web写作来说,不啻是一个福音。利用PHP3,Web作者可以更加专注于Web本身了。 除了PHP3,XteamLinux还提供给用户另外的一个选择,即mod_perl。从Web诞生一直到现在,强大的Perl始终是动态Web开发中最最重要的角色。但是,随着Web一天比一天的长大,用Perl写作的CGI脚本的执行效率越来越引起人们的垢病。mod_perl加上Apache基本上解决了在Web开发中一直困扰着Perl的各种问题,而完全保留了Perl所一贯的强大。 篇幅所限,有好多话题只是简单的提了一下,而无法深入,如:DNS的性能调优,sendmail的详细设置,Apache的性能调优问题,虚拟主机的设置问题,用户访问控制的设置,Apache对多语言的支持,匿名FTP站点的架设,PHP3的数据库支持,mod_perl的介绍,等等。  谈谈您的看法
|