开放源码技术为构建动态的商业软件及数据驱动的Web应用程序提供了一种低成本的解决方案。本书对开放源码技术进行了全面的剖析,详细地介绍了如何安全有效地实现这些方案,并将每种开放源码技术的优势和不足进行了对比,指导用户做出最佳的选择。
绪论
0.1 免费的午餐
0.2 开放源码软件
0.3 小结
0.4 资源
第I部分 结构
第1章 Web简介
1.1 它是如何工作的
1.2 本书没有介绍的内容
1.3 安全
1.4 小结
1.5 资源
第2章 Linux基础
2.1 概述
2.2 Unix基础
2.3 小结
2.4 资源
第3章 Apache Web服务器
3.1 概述
3.2 Apache的启动、停止和重启
3.3 配置
3.4 Apache安全
3.5 建立Web站点
3.6 Apache日志文件
3.7 小结
3.8 资源
第4章 Perl
4.1 概述
4.2 Perl文档
4.3 Perl语法规则
4.4 面向对象编程概述
4.5 我们不做讲解的内容
4.6 小结
4.7 资源
第5章 MySQL
5.1 概述
5.2 教程
5.3 数据库独立接口
5.4 表连接
5.5 载入与转储数据库
5.6 小结
5.7 资源
第II部分 静态技术
第6章 WML语言
6.1 概述
6.2 安装
6.3 基础知识
6.4 创建模板
6.5 其他有用的包含文件
6.6 转换器
6.7 更好的模板
6.8 通过.wmlrc配置WML
6.9 宏指令--创建自定义标签
6.10 使用eperl编程代码
6.11 一个WML项目
6.12 小结
第III部分 动态技术
第7章 通用网关接口
7.1 概述
7.2 Apache配置
7.3 第一个CGI程序
7.4 错误是怎么出现的
7.5 引入CGI.pm
7.6 CGI.pm的HTML简化操作
7.7 CGI程序接收到的信息
7.8 表单控件的方法
7.9 CGI的安全问题
7.10 关于die()
7.11 一个完整的项目--CGI/MySQL/DBI
7.12 小结
7.13 资源
第8章 mod_perl
8.1 概述
8.2 配置
8.3 把CGI转变成mod_perl程序
8.4 mod_perl编程
8.5 一个完整的项目
8.6 其他能做的事情
8.7 小结
8.8 资源
第IV部分 嵌入式技术
第9章 服务器端包含
9.1 概述
9.2 安全思考
9.3 小结
9.4 资源
第10章 Embperl
10.1 概述
10.2 安装Embperl
10.3 Apache的配置
10.4 一个简单的示例
10.5 Embperl命令
10.6 提交的数据及%fdat
10.7 其他的Wmbperl变量--$row和$col
10.8 一个Embperl项目
10.9 没有介绍的内容
10.10 小结
10.11 资源
第11章 Mason
11.1 概述
11.2 安装
11.3 Apache配置
11.4 一个简单的示例
11.5 内部Perl代码块
11.6 用%ARGS和<%args>处理提交数据
11.7 Mason组件
11.8 一个Mason项目
11.9 没有介绍的内容
11.10 小结
11.11 资源
第12章 PHP
12.1 概述
12.2 把PHP嵌入HTML
12.3 配置
12.4 两个简单的示例
12.5 语法
12.6 PHP的内置函数
12.7 PHP和MySQL
12.8 项目
12.9 小结
12.10 资源
参考文献
本书适合我们吗
本书是为这样一群读者编写的,他想建立一个交互的、基于数据库的Web站点,其站点的运营并不需要大量的资金(花在一大堆书籍和软件上)。在技术方面可以是个能干的Linux用户,但不必是一个Perl或CGI方面的专家;或者可以是一个爱好技术的图形设计师,想建一个网站,但又不想成为一个通过认证的计算机专家:还可以是一个微软认证的系统工程师,听说还有另一种方式可以完成同样的工作。
有些朋友可能买了四五本厚厚的书,并且很费力地读完了它们,才从中挑选出完成任务所需的知识。这样一来他们很可能用的不是一种最佳的方法,从而导致顾此失彼,学习了新知识后又忘记了旧知识,而温习好像变成了是在学习新东西,同时又往往没有考虑到站点和电脑的安全问题(这对于维持其安全是必需的)。本书的目标就是:总结大量关于开放源码方面的信息,这要通过某种方式宋进行,这种方式让潜在的Web开发者成长起来,并且使Web站点安全高效地运转,必要时我们还将提供有关其他资源的信息,以获得比本书中更多的知识。
我们面向的读者最好是对Unix和某种现代编程语言(C,FORTRAN,Peri,Pascal,C++和Java,这些语言几乎可以做任何事情)以及HTML都比较熟悉。由于本书篇幅有限,我们不能对它们做详尽的解释,故假设读者具有一些背景知识。但我们涉及的知识点比较多,对于这些知识点读者都能在搜索引擎上找到正确的答案。如果读者没有任何Unix方面的经验,或者不是一个经验丰富的程序员,本书也同样有用,它能激发读者学习兴趣,也许还可以指导大家去购买其他一些计算机方面的图书。
本书能做什么
在本书中我们将向大家介绍LAMP的支柱——Linux,Apache,MySQL,Peri和PHP,另外,还加入一些modperl,Embperl,Mason和WML的内容。我们介绍了很多方面的知识,这正是我们想要做的,希望覆盖的范围更广泛,把各种各样的、利用开放源码产品开发网站的途径都呈现给读者。本书的目的就是要指出每种开放源码的方法,所提供的最有价值的功能部分。
本书的另一个目的就是帮助读者认识当前的技术和标准:什么是很容易做到的?什么是通过多做工作也许能做到的?哪种工具适合于哪种任务?以及如何辨别读者需要的和读者不需要的东西(或者目前暂时不需要的)。而更为重要的是如何尽可能地以一种安全的方式来完成这些事情。毕竟,通过这些技术,已经把机器向全世界开放了,我们应该对那些怀有不良动机的人时刻保持警惕。
根据以往的经验,我们相信,得到任何复杂工具80%的效用,是因为知道其20%的功能的结果,不论这种工具是软件还是硬件,是机械的还是电子的。瑞士军刀是功能十分齐全的工具,但在大多数情况下,大家只会用它的刀片或者螺丝起子。
本书的目的就是要向读者介绍那20%,可以提供绝大部分功能的刀片和螺丝起子,并且让读者知道还存在80%功能,这样读者就可以在适当的时候使用另外的80%了。
当然,还要教会读者不要把刀片当作螺丝起子使用。
本书的主要内容
本书分为Ⅳ部分:
第I部分“结构”。Linux,Apache,MySQL和Peri——它们是LAMP结构系统的基础,LAMP建立在这个基础之上,其他程序也在这个基础上运行。
● Linux是操作系统,所有的东西都是基于它的。Linux是一个很大的主题,在安装之后,就不需要对它再做什么设置了,所以,我们只简单介绍一下Linux,不做太多的讲解。
● Apache是Web服务器软件,它提供网页给客户机,并且决定如何处理对文件、表单的请求。第1章将会讲解设置和建立Web站点的基础。
● MySQL是一个SQL数据库程序。它是“全球最受欢迎的开放源码数据库”(其网站上是这样说的)。
● Peri在与文本文件、shell脚本及其他很多东西相结合方面,是一流的编程语言(Python在功能上和Peri是很相似的,但由于我们对Peri有更多的了解而且也很喜欢Peri,所以就选择了Peri)。
第II部分“静态技术”。WML是一组程序,它能够可使建立和管理大型静态Web站点的工作变得很容易。
第III部分“动态技术”。CGI和modperi是两种程序,使用它们可以建立动态的Web站点。
● CGI是久经考验的、用于生成动态内容的技术。
● mod peri是一种在生成动态内容方面更好的、更快的并且更加强大的技术mod peri结合了开发源码的两大支柱:Apache和Peri。
第IV部分“嵌入式技术”。SSI,Embperl,Mason和PHP是在HTML页面中用于嵌入程序的技术。
● 服务器端包含(ServerSidelncludes,SSl)技术是内建在Apache中的。它的工作就是对HTML文件进行预处理,把SSI指令转化为HTML文本。它使程序员可以把可执行的代码嵌到HTML文件中。
● Embperl和Mason是用来建立嵌入式Web内容的两个Peri模块。
● PHP是另一种在HTML文件中嵌入可执行代码的手段。PHP能完成Embperl和Mason所能完成的任务,只是方式不同而已。
那么,为什么会有这么多的选择呢?请继续读下去吧,尊敬的读者,你会发现开放源码就意味着无数的选择!
这种自由软件有.doc文档吗
这是肯定的,这些文档是随自由软件的发布而发布的,看看两个站点吧:www.linuxdoc.org和httpd.apache.org/docs/,这是两个指定的自由文档站点,任何人都可以从那里取得最终的文档和源代码(因而有一句开放源码的笑话是:Luke,用源码吧!)。由于开发人员和用户的群体非常庞大,所以划分了许多的新闻组和论坛。在这些新闻组和论坛里,很有可能存在这样一种情况:读者所遇到的问题已经有人遇到过了,并且他们已经贴出了其解决办法。对于这些信息,我们可以使用Google(www.google,com)来进行搜索,也可以用其Usenet文件的搜索界面(groups.google.com)
如果读者的Linux系统是通过一个发行版本来安装的,那么,大多数文档可能已经安装在自己的硬盘中了。在理想的情况下,我们只需要阅读这些文档就可以了。尽管这是一种很不错的资源,但如果要作为学习手段的话,我们还需要其他一些东西,因为这些文档多数是作为参考资料的,并非指导资料。一部分文档也没有随着软件的修改而做更新(大家要注意,这些家伙可是免费工作的呀。然而,这却是封闭源码软件所能避免的问题)。