鸟哥的 Linux ADSL 私房菜


简易 WWW 服务器设定
最近更新日期:2003/10/02
 
我们最常讲的『架站』其实就是架设一个 Web 网站啦!那么什么是 Web 呢?说穿了,就是全球信息广播的意思(World Wide Web),或者也可以称之为互连网吧!这个是我们目前的人类最常使用的 Internet 的协定之一啦!通常说的上网就是使用 WWW 来查询使用者所需要的信息啰!^_^!目前的 WWW 服务器主要分为两大阵营,分别是 Unix-Like 上面的 Apache 与 Windows 上面的 IIS ,就以价格效能比来说,当然是 Linux 上面的 Apache 最棒啦!至于 WWW 服务器的类型可以分为静态与动态,而这些动态的网站里面,很多都是以目前的当红炸子鸡 Linux + Apache + MySQL + PHP 架设而成的,简称为 LAMP 的咯!这种动态 WWW 主机很有趣喔!他可以沟通 Server 与 Client 端的数据呢!赶紧来进入这个 LAMP 的世界吧!
 
原理
  :什么是 WWW 与网址( URL )
  :Client 如何向 Server 要求资料
  :有哪些类型的 WWW 网站?什么是 LAMP
  :SSL 与 CA 的认证机制
套件安装
  :RPM 安装 LAMP 方式
  :Tarball 安装 LAMP 方式 ( Apache 2.xx 2003/09/10 前 )
  :升级与安装方式的选择建议
主机设定
  :LAMP 的套件结构与主机规划
  :基本要求
  :最简易 Apache 设定(含关于中文显示之设定)
  :启动 httpd (如何关闭 https )
  :测试结果
  :用户的个人网页启动
进阶安全设定1. CGI ( Perl 档案 ) 之执行、Index 显示、查无网页显示之设定
      2. 抵挡 IP 与限制使用者动作的设定(allow, deny, limit)
      3. 主机状态说明网页设定
      4. 关于权限的意义说明与设定
      5. 设定认证网页
      6. .htaccess 档案与 AllowOverride 的用途
      7. 防火墙
登录档分析与其重要性
     :1. syslog 与 logrotate
     :2. Web Analyser
虚拟主机架设
客户端的文字接口 Web 功能
增强 PHP 程序代码执行速度的模块
  :MM Cache
  :Apache 的效能测试
砍站软件与 Nimda 病毒的抵挡 scripts
安装 phpBB2 讨论板
问题讨论
     :1. 关于显示中文的额外说明
     :2. 关于无法执行 PHP 的说明
     :3. 关于 MySQL 的问题说明
     :4. 关于启动 httpd 时出现的 perl 问题
课后练习

原理:什么是 WWW 与网址
    WWW 是 World Wide Web 的缩写,其中, Web 有广播网的意思存在,所以,简单的说,WWW就是全球信息网,可以结合文字、图形、影像及声音等多媒体,并透过 超级链接 ( HyperText ) 的方式,将信息透过 Internet 传递到世界各处!那 WWW 的数据是如何传递的呢?
     
    如果你常上网浏览的话 ( 不论是使用 Mosilla 、IE 或是 Netscape ),你应该会知道,台湾有个蛮有名气的入口网站:奇摩雅虎站 ( tw.yahoo.com ),所以你只要在网址列上面输入『  http://tw.yahoo.com 』就可以浏览到奇摩雅虎的网页信息啰!这个http://tw.yahoo.com就是所谓的 URL ( Uniform Resource Locator ) ,其中 tw.yahoo.com 就是所谓的主机名称,亦即是我们前面刚刚提过的 DNS 里头的 FQDN ( Fully Qualified Domain Name ) ,即是主机名称加上领域名称所得的一个独一无二的 Internet 上面之名字啦!由于计算机在网络里面仅认识 IP 而已,所以,奇摩雅虎站的真实 IP 就是透过 DNS 解析 tw.yahoo.com 而找到这部计算机,然后经过 WWW 的协议功能将数据传到你的眼前来!那么有哪些格式的 URL 呢?呵呵!整个来说,网址列可以输入这些咚咚:
     
    <协定>://<主机地址>[:port]/<目录资源>
       
    举个例子来说,我们通常去到中山大学的 FTP 网站都是以 Web 接口进入的,因为可以直接以浏览与搜寻的功能去捉取数据,因此,这个时候我们可以在网址列输入:『 http://ftp.nsysu.edu.tw 』以进入 WWW 界面的 FTP 网站!请注意,是 WWW 界面喔!那么如果我想要直接以 FTP 的模式来进行数据的浏览与传输呢?呵呵!直接在网址列输入以 ftp 为方法的网址:『 ftp://ftp.nsysu.edu.tw 』呵呵!是否发现两者显示的咚咚不太相同?!没错啦!那就是因为我们所连接的主机的协议不一样的缘故,所以主机响应的数据当然就不同啦!请特别留意这种网址列的格式喔!
     

    Client 如何向 Server 要求数据:
     
    那么 WWW 是透过什么样的协议来传达数据的呢?呵呵!没有看到网址列的 http 吗?对啦! WWW 就是使用所谓的 http 这个协议来传送数据的,HTTP 即是 HyperText Transfer Protocol 的简写,亦即是目前 WWW 的数据传递主流协议啦!而在网站上面供人浏览的网页,则大部分需要符合 HyperText Markup Language (HTML) 的语法啰!也就是说,当我们在网址列输入主机的网址之后:
     
    1. Client 端先经过 DNS 解析得到 WWW 主机的 IP ,然后会发出一个数据封包,以 http 这个协议( 或方法 )联系到 WWW 主机,告知 WWW 主机我们要以 http 的方法来取得数据,同时,这个时候使用的是 TCP 协议,亦即需要经过三向交握的过程喔;
    2. WWW 主机收到这个数据封包之后,会根据 Client 端的要求,提供相关的讯息来响应,大部分的情况下皆是使用 http 的协议传送具有 HTML 语法的网页数据到 Client 端的浏览器上;
    3. 最后 Client 端的浏览器将 HTML 的语法经过解析后,以相关的画面来显示到屏幕上,提供用户来观赏喔!
     
    这就是主要的流程啦,不过,Client 传到到 WWW 主机,与 WWW 主机响应的讯息里面,可包含有哪些可能的动作呢?
       
    大致上就有这些功能,当然啦,最主要的就是 GET 这个功能啦!毕竟我们连上 WWW 主机就是为了要取得他的数据嘛! ^_^。要记住的是,因为未来我们可能会去分析网站上的数据,所以,你必需要了解一下什么是 GET 或 HEAD 等等的意思!不然很多东西很难理解喔! ^_^
     

    有哪些类型的 WWW 网站?什么是 LAMP?
     
    刚刚前头我们提到的都是关于 Client 端相对于 Server 端求取数据方面的问题,那么再来要谈的,是『咦!到底有哪些主要的 WWW 主机操作系统与软件之搭配呢?』呵呵!问的好!在回答这样的问题之前,我们先来讨论一下, WWW 主机的主要类型好了。基本的类型我们可以分为两种:
       
    呵呵!这么看起来的话,似乎动态网页比较精彩喔!因为他可以跟使用者互动,也就更增加 WWW 主机的可变性与灵活运用之性质!所以啰,有办法的话,当然是选择动态网站的 WWW 主机架设比较好啰!那么动态网页的 WWW 主机需要些什么呢?就如同刚刚我们提到的,最重要的是那个可以随时更新资料的『数据库软件』所提供的信息,来与使用者互动,因此,一定要有数据库软件喔!再来,只有数据库,没有存取接口来沟通 Server 与 Client 端的数据传递当然还是无法直接在 Web 接口上面存取数据库的内容啦!因此,我们还需要一个『网页程序语言』来进行这个接口的编写哩!当然啦,最主要的还有就是需要 WWW 运作的软件啦!所以你需要:
       
    那目前有哪些主流的个人动态 WWW 主机系统呢?大致上可以分为两种:一种是 Windows 系统的 IIS + MS 的 SQL + ASP WWW服务器,这种 WWW 主机架设上蛮容易的,不过由于 Windows 的某些特性,所以很容易被 Cracker 所破坏;另外一种则是 Linux 系统上面的 Apache + MySQL + PHP 的 WWW 服务器 ( 简称 LAMP ) ,这种服务器架设上有一定程度的困难度,尤其在升级与维护的方面,但是运作妥当的话,他的硬件要求、性能、安全性等方面,则相对的较佳喔!我们这里本来就是练习 Linux 的嘛!因此底下鸟哥将针对 Linux 系统上面的动态 WWW 主机进行介绍,当然啦,主角是 WWW 套件的 Apache 啦!至于需要了解的是: PHP 与 MySQL 分别是两个独立于 Apache 的套件,因此要让 Apache 这个 WWW 软件能够启用 PHP 与 MySQL 的功能,就必需要启动 Apache 里面的 PHP 与 MySQL 的模块啦!首先,未能免俗的,我们还是得分别介绍一下 LAMP 里面各个小东西的说明:
       

    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 这个服务器的联机过程!?也就是利用 Server 提供的 Public Key 并配合 Client 端随机产生的 Private Key 来组成一组加密( Public Key )与解密( Private Key )的方法!呵呵!这个方法同样的也被运用于 WWW 主机的设定啦!而支援这个 WWW 主机进行 Public 与 Private 加密的套件,就是很多时候都被拿出来使用的 OpenSSL 这个好家伙了!所以啰,要让你的 WWW 具有 SSL 加密的功能,就必需要安装 OpenSSL 这个套件才成吶!基本上,当 Client 端要向 Server 端求取数据的时候,则利用 Server 端本身提供的 Public Key 及 Client 端随机产生的 Private Key 组成一组可供利用的密码组合!则资料由 Server 传送到 Client 端之前,会先经由 Server 的 Public Key 将数据封包加密,而到了 Client 之后,才经由 Private Key 将数据解密!所以,当数据在 Internet 上面跑时,他是加密过的数据封包喔!即使被人劫取下来,他不晓得 Public 与 Private ,那么要解密可能也得费上几天几夜,甚至是好几年的功夫ㄋㄟ!因此,数据就会比较安全啦!当然啦,以我们这种主要以分享为主的网站,自然不需要使用这种技术!反正数据本来就是 Open 的! ^_^
     
    Cerificate Authorities ( CA )
    CA 这个方法同样也是使用 Public 与 Private Key 的方式, ( 呵呵!我们可以说,目前加密与解密的行为大部分都是使用这种类似的观念来进行的啦! ) 由于 SSL 使用的 Public 是 WWW Server 自行建立与产生的,所以具不具有公信力我们还不是很清楚!万一你连上去的 WWW 网站是个骗人的集团建立的,那么有没有加密对你而言,不都是粉危险的吗?咦!那么是否可以透过第三公证人来查验这个 Server 的 Public Key 呢?呵呵! CA 这个方法就是要达成这个目的啦!基本上, CA 是一个公认的合法组织,他可以用来查验 WWW Server 提供的 Public Key 是否合法!以保障 Client 者的权益。因此, CA 是要钱的喔!
     
    我们这里对于 SSL 及 CA 这两个咚咚仅提及他的概念,底下的文章并没有提到要怎么制作!有兴趣的朋友得自行到相关的网站去查询喔:
     

套件安装
主机设定:
进阶安全设定: