订单查询 购书指南 购物车 收藏  
    首页 热点专题 精确搜索 精品推荐 俱乐部论坛 下载服务 走近科海 征稿专栏 新书预告 各地经销商 特价直销


第 18 章 简易的WWW服务器架设

     
 


18.1.3 有哪些类型的 WWW 网站?什么是 LAMP

上一节我们提到的都是关于客户端相对于服务器端请求数据方面的问题,这节要讲述到底有哪些主要的 WWW 主机操作系统与软件搭配。在回答这个问题之前,先来讨论 WWW 主机的两种基本类型。

•  仅提供用户浏览的网站:这种类型的网站大多是提供静态的网页,或许还提供一些动画图示。因为它仅提供你来浏览,服务器端不需要与客户端互动,所以你可以到该网站上去浏览,但是无法进行数据的上传。目前主要的免费虚拟主机大多是这种类型,所以,只要依照 HTML 的语法写好网页,并且上传到该网站空间上,那么你的数据就可以让大家浏览了。

•  提供与用户互动的数据库网站:这种类型的网站可就多姿多彩了。因为它提供了与用户互动的数据库软件,因此,用户可以依据主机提供的服务,来进行留言、数据上传等服务。由于服务器端与客户端是互动的,因此一个接口良好的“数据库软件”就相当重要,因为它可以在线实时更新用户所传递的数据信息。这方面的网站很多,例如最简单的留言版、讨论区、论坛、现金流与物流的商业型网站等,都是属于这种互动类型的网站。

动态网页比静态网页精彩,因为它可以跟用户互动,也就增加了 WWW 主机的可变性与灵活性。所以,当然选择架设能支持动态网站的 WWW 主机比较好。那么支持动态网页的 WWW 主机需要些什么呢?就如同刚刚我们提到的,最重要的是那个可以随时更新数据的“数据库软件”所提供的信息,因此,一定要有数据库软件。而且,只有数据库,没有访问接口来沟通服务器端与客户端的数据传递当然还是无法直接在 Web 接口上面访问数据库的内容。因此,我们还需要一个“网页程序语言”来编写这个接口。当然,最主要的是还要有能提供 WWW 服务的软件,所以你需要:

•  WWW 服务器软件(目前有 Apache 和 IIS 两大系统)

•  数据库软件(例如 MySQL , MS 的 SQL ,及其他相关的数据库)

•  编写网页的网页语言(例如 shell scripts , perl scripts , Java , PHP , CGI 等)

目前有哪些主流的个人动态 WWW 主机系统呢?大致上可以分为两种:一种是 Windows 系统的 IIS + MS 的 SQL + ASP WWW 服务器,这种 WWW 主机架设上比较容易,不过由于 Windows 的某些特性,所以很容易被黑客所破坏;另外一种则是 Linux 系统上面的 Apache+ MySQL + PHP 的 WWW 服务器(简称 LAMP ),这种服务器架设上有一定程度的困难,尤其在升级与维护方面,但是架设妥当的话,它的硬件要求、性能、安全性等方面,则相对较佳。下面鸟哥将针对 Linux 系统上面的动态 WWW 主机进行介绍,当然,主角是 WWW 包的 Apache 。其他需要了解的是: PHP 与 MySQL 分别是两个独立于 Apache 的包,因此要让 Apache 这个 WWW 软件能够启用 PHP 与 MySQL 的功能,就必须要启动 Apache 里面的 PHP 与 MySQL 的模块。

首先,分别介绍一下 LAMP 里面的各个模块:

•  Apache :在 1995 年之前就出现了很多架设 Web 服务器的软件,不过, 1995 年之后,由国际超级计算机应用中心( National Center for Supercomputing Applications, NCSA )主导并克服了一些 Web 主机的臭虫之后,才让这个 http 协议的 WWW 包得到了更广泛的应用。因为这个版本已经去掉了一些 bug ,因此,这个 WWW 包被戏称为“ A patchy server (一个经过更新后的服务器)”,后来,因为要将名字确定下来,干脆就直接取其谐音—— Apache 。

•  PHP :官方的说法为:“ PHP is a tool that lets you create dynamic web pages. PHP-enabled web pages are treated just like regular HTML pages and you can create and edit them the same way you normally create regular HTML pages. ”所以说, PHP 可简单地视为一种程序语言,可以用来设计留言版、论坛、或聊天室等动态网页。由于它具有免费、跨平台、易学及效率高等优点,目前算是很流行的一种设计网页的程序语言。(基本上, PHP 是用来设计网页的程序语言,当然其功能不止于此!你可以轻易地在市面上找到相关的书籍。)

•  MySQL :官方网站上的翻译文件这样说:“ MySQL 是一个真正的多用户、多线程的 SQL 数据库服务器。 SQL (结构化查询语言)是世界上最流行的和标准化的数据库语言。 MySQL 是以客户 / 服务器的结构实现的,它由一个服务器背景执行程序 mysqld 和很多不同的客户程序和库组成。 SQL 是一种标准化的语言,它使得存储、更新和访问信息更容易。例如,你能用 SQL 语言为一个网站检索产品信息及存储顾客信息,同时 MySQL 也足够快和灵活以允许你存储日志文件和图像。 MySQL 的主要目标是快速、健壮和易用。”简单来说, MySQL 就是一个数据库软件,例如你在设计论坛的时候,由于讨论的文章会日渐增多,因此就会有所谓的数据库处理的情况, MySQL 的目的就是在于处理这些由客户端传送来的数据。当然,其功能还不止于此,我这里仅说一些我们可能会用到的。

18.1.4 SSL 与 CA 的认证机制

我们在前面讲到 HTTP 使用的传输协议仍然是 TCP/IP ,它传输的时候是使用明文来传送的,也就是说,在 Internet 上面的 WWW 数据,基本上都是以没有加过密的形式在传送。那么,有些别有用心的人利用 TCP Listen 的功能,即可将 Internet 上面的数据包捕捉下来进行解析,并可能进一步取得该数据包内的信息。“这有什么了不起,不过就是 WWW 信息而已,又不像 SSH 这种远程联网服务器那么重要。”嘿嘿!这您可就有所不知了。要知道我们的网站并不涉及现金流及物流的信息,所以当然没有什么“隐密性”可言,但是,如果换成是一个商业网站呢?例如网络书店的信用卡交易,例如一些金融公司提供的网络交易行为!这些信息当中,很多都含有相当重要的个人信息,例如信用卡、身份证等代表个人的证件号。万一被人获取,那可不是闹着玩的!所以,这个时候就需要有“数据加密”了。目前用在 WWW 上主要的加密模式有 Secure Socket Layer ( SSL )及 Certificate Authorities ( CA )。

Secure Socket Layer ( SSL )

不知道你是否还记得我们在“远程连接服务器”里面提到的关于 SSH 这个服务器的连网过程。也就是利用服务器端提供的 Public Key (公钥)并配合客户端随机产生的 Private Key (私钥)来组成一组加密与解密的方法。这个方法同样的也被运用于 WWW 主机的设置,而支持这个 WWW 主机进行 Public 与 Private 加密的包,就是很多时候都被拿出来使用的 OpenSSL 。所以,要让你的 WWW 具有 SSL 加密的功能,就必需要安装 OpenSSL 包。基本上,当客户端要向服务器端请求数据的时候,则利用服务器端本身提供的 Public Key 及客户端随机产生的 Private Key 组成一组可供利用的密码组合。数据由服务器端传送到客户端之前,会先经由服务器端的 Public Key 将数据包加密,而到了客户端之后,才经由 Private Key 将数据解密!所以,当数据在 Internet 上传输时,它是经过加密的数据包,即使被人劫取下来,如果他不知道公钥与私钥,那么要解密可能也得费上几天几夜,甚至是好几年的时间。因此,数据就会比较安全。当然,对于主要以共享为目的的网站,自然不需要使用这种技术,反正数据本来就是公开的。

Certificate Authorities ( CA )

CA 方法同样也是使用 Public Key 与 Private Key 的方式(我们可以说目前加密与解密大部分都是使用这种类似的概念来进行的)。由于 SSL 使用的 Public Key 是 WWW 服务器自行建立与产生的,所以具不具有公信力我们还不是很清楚,万一你接入的 WWW 网站是由骗人的集团建立的,那么有没有加密对你而言,不都是非常危险的吗?那么是否可以通过第三公证人来查验这个服务器的 Public Key 呢? CA 方法就是要达到这个目的。基本上, CA 是一个有信誉的公正的权威机构,它可以用来查验 WWW 服务器提供的 Public Key 是否合法,以保障客户的权益。因此, CA 是要付费的。

我们这里讲了 SSL 及 CA 两个概念,下面的章节并没有再进行深入的讲解,有兴趣的朋友可以到相关的网站去查询:

•  SSL : http://www.modssl.org/

CA 组织之一: https://digitalid.verisign.com/server/apacheNotice.htm


 
  上一页 下一页