鸟哥的 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 这两个咚咚仅提及他的概念,底下的文章并没有提到要怎么制作!有兴趣的朋友得自行到相关的网站去查询喔:
     

套件安装
主机设定:
进阶安全设定:
登录档分析与其重要性
    无论怎么说,登录档永远是相当重要的!尤其是在 /var/log/httpd 里面的 error_log 这个档案!因为:
     
    1. 他记录了所有试图进入你主机读取 apache 的网页数据,但是却失败的所有纪录,
    2. 此外,如果你的 Apache 设定错误,那么问题也是记录在这个档案中;
     
    而至于其它相关的档案,嘿嘿!那个 /var/log/httpd/access_log 档案也需要注意一下,因为他记录了所有来自 Client 端的 IP 以及其它相关的读取数据之讯息!这个档案对于未来分析你的 Apache ( WWW )被读取网页的所有纪录喔!相当的重要的啦!
     

    syslog 与 logrotate:
     
    首先针对 Apache 的设定档当中,要注意的就是那个 syslog 与 logrotate 啰!详细的信息可以参考一下『鸟哥的 Linux 私房菜 -- 基础学习篇』之认识登录档。好了,那么你的 syslog 应该要怎么设定呢?因为我们毕竟是使用 tarball 安装的,所以根本就没有所谓的 syslog 的设定,不过,这个不需要担心,这是因为 Apache 里面本来就有 syslog 的设定存在了!所以,这点我们不需要重新来设定啦!只要记得你的登录文件目录是在哪里就可以啦!目前我的登录档与 pid file 是在:
       
    然后,我的 logrotate 的纪录目录在 /etc/logrotate.d 里面,因此,我就在里面新增一个档案,称做是 apache,你可以这样做:
     
    [root@test root]# cd /etc/logrotate.d
    [root@test logrotate.d]# vi apache
    # 新加入这几行
    /var/log/httpd/access_log /var/log/httpd/error_log {
        rotate 4
       missingok
        sharedscripts
        postrotate
            /bin/kill -HUP `cat /var/log/httpd/httpd.pid 2>/dev/null` 2> /dev/null || true
        endscript
        compress
    }
     
    如果不知道上面的每个数据代表的意义,还是请前往 认识登录档 一文喔!然后赶快试看看是否可以执行 logrotate 呢?
    logrotate -f /etc/logrotagte.conf
    呵呵!这样就对啦!那么为什么要加入这个 logrotate 呢?这是因为,未来,如果你的 WWW 服务器越来越大时,那么应该 access_log 档案会『很可怕的大!』例如目前本小站的流量每周可以造成我的登录档长大到 400MB 以上~如果不将他 rotate 的话,哈哈!不出几个星期,我的硬盘就爆了~所以, logrotate 是很重要的喔!
     

    Web Analyser
     
    如果我想要知道最近有谁曾经来我的网页上面逛过,以及该使用者使用的是什么样的操作系统呢?该怎么看?!很简单吶!直接跑到 /var/log/httpd/access_log 这个档案里头去瞧一瞧就知道啦!里面的纪录有点像这样:
      
    192.168.1.11 - - [27/Dec/2002:00:20:24 +0800] "GET /manual/ HTTP/1.1"  200 7340
     来源 IP       日期与时间          动作与网页      动作代码
     
    立刻可以知道在何时,那个 IP 对于本机的动作是什么,以及是否有成功?很清楚对吧!所以我们可以藉由这个档案知道我们的主机被利用的状态!但是,如果像我的主机一样,一下子就有 400 多 MB 的档案,您要怎么分析?看都看不完ㄋㄟ~呵呵这个时候,就需要使用 Shell scripts 的帮助啦!你可以自行写一个适合您自己的分析工作,来进行解析的行为!不过,由于目前网络上已经有很多的好用的 Web 分析的工具啦!所以呢,我们只要进行他的安装即可喔!很方便吧!底下我们介绍几个好用的 Web 分析工具来给大家瞧一瞧!
     

虚拟主机架设
至于这个设定嘛!真的是很简单耶!只要几行就搞定了,设定完成之后还会让你偷笑ㄋㄟ~呵呵!看看实例吧!
 
[root@test root]# cd /usr/local/apache2/conf
[root@test root]# vi httpd.conf
# 在这个档案的最下方加入底下这些字眼!

NameVirtualHost *     # 设定你的虚拟主机判定的依据!这里是 * 亦即是
             # 所有连上这部机器的名称都会被使用来当作虚拟主机的设定之用!

<VirtualHost *>
    ServerName    mdk90.vbird.net
    DocumentRoot  /home/mdk90
</VirtualHost>

<VirtualHost *>
    ServerName    www.mdk90.vbird.net
    DocumentRoot  /home/www.mdk90
    CustomLog     /var/log/httpd/www.access_log combined # 特别将登录档额外分离出来
</VirtualHost>

<VirtualHost *>
    ServerName    phorum.mdk90.vbird.net
    DocumentRoot  /home/phorum.mdk90
</VirtualHost>

 
要注意的是:
  1. 在虚拟主机的设定上还有很多的可用的功能,不过,最低的限度是需要有 ServerName 及 DocumentRoot 这两个即可!
  2. 虽然原来我就有 mdk90.vbird.net 这个网域,但是因为设定了虚拟主机之后,自己的原来名称可能会不见去,所以,这里必须将自己的名称也写入才行!
  3. 上面有发现一个 CustomLog 的设定喔!该设定会让以 www.mkd90.vbird.net 这个网域登入的登录档不再写入原来的 /var/log/httpd/access_log 档案,而是自行写入 /var/log/httpd/www.access_log 这个档案!
马上测试看看!呵呵!会发现,咦!我真的有三个主网页了哩!很不错吧!这个作法可以让你的 WWW 网页更有灵活度喔!举个例子来说,前一阵子因为酷学园讨论区(http://phorum.study-area.org) 常常挂点,所以鸟哥就自告奋勇的跟站长说,只要将 phorum.study-area.org 这个 domain name 指向我的主机 IP ,那么也可以直接进入我的讨论区,如此一来,只要修改一下 DNS 即可转换到我的讨论区啦!并且不需要再进行任何额外的设定!对于网页维护的灵活度是真的很有帮助的喔!
 
  • 需要注意的事项:

  •  
    虚拟主机并没有什么值得特别注意的地方,只要设定正确,大致上就不会有太大的问题!不过,你可能需要特别注意刚刚我们建立起来的新的登录档喔!为什么呢?我们上面不是提过说,登录档在大型的网站上面成长的幅度是很可观的吗?所以需要进行 logrotate ,但是你刚刚建立的档案并不在原本的 logrotate 档案之内呀!呵呵!这个时候请自行加入 logrotate 个手续喔!否则.....嘿嘿嘿嘿!硬盘空间被用光可不要怪鸟哥喔! ^_^

    客户端的文字接口 Web 功能:
    什么!?客户端竟然也有文字接口的浏览器?!哈哈!当然是有啦!不然这里干嘛要介绍?!那就是鼎鼎大名的 lynx 以及 wget 啰!请注意的是,这两个套件并不一定会在安装的时候就已经安装在你的系统中,所以请先使用 RPM 查询一下他是否存在于你的系统当中,然后才能执行喔!他的用途是: 这两个指令之前已经介绍过了!请自行前往观察一下啰!加油啦!

    增强 PHP 程序代码执行速度的模块:
    砍站软件与 Nimda 病毒的抵挡 scripts:
    几个比较知名的网站管理员大概都有这样的困扰,那就是网站常被砍站软件所强力下载,结果造成主机的 CPU loading 过重,最后竟然会导致死掉~唉!真是的~人怕出名猪怕肥吶!先来解释一下什么是砍站吧!所谓的『砍站』,就是以类似多点联机下载的持续性讯息传递软件进行网站数据的下载,而且,一启用该软件,该软件就将『整个网站』的内容都给他 download 下来,很厉害吧!没错!是很厉害,但是却也害死人了~怎么说呢?因为这种软件常常会为了加快 download 的速度,所以采用多点联机的方式,也就是会持续不断的向 Server 发出要求封包,而由于这些封包并不见得能够成功的让 Server 把数据传导给 Client 端,常常会无法投递就是啦!这样的结果就是.....造成 Server 要一直不断的响应,又无法正确的响应出去,此外,要求太过频繁,结果主机应接不暇,最后....就当机了...真的是林老师ㄌㄟ~我们这个小站的主机古早以前,就是因为这样的原因,导致服务常常断断续续的,并且,由于 CPU loading 太高,结果让正常联机进来看数据的网友没有足够的资源,因此网页开启的速度就变的很慢~唉~这些砍站的人,也太不道德啦!
     
    由于这种砍站软件真的很麻烦,一不注意马上就又会被砍站而当机,三天两头就要重新开机一次,完全让 Linux 的稳定性无法发挥!真是气死了~后来,我就自行写了一个 scripts 来挡这样的 IP !我的作法是这样的:
    1. 由于砍站软件要多点连续下载,因此,同一个 IP 在同一个时间内,会有相当多的联机发生;
    2. 由于他是重复不断的要求联机,因此刚刚建立的联机在达成下载的目的后,会立刻死掉,而又多生出其它的联机出来,因此,这个时候他的联机情况就变的相当的不正常了!
    3. 由于某些较旧的砍站软件并不会『欺骗』主机,所以,会在主机的登录文件里面记录住 Teleport 的标记!
    4. 既然如此的话,那么我就让我的主机每分钟去检查两个东西(1)先检查 log file ,如果有发现到相关的 Teleport 字词,就将该 IP 抵挡掉;(2)使用 netstat 来检查同一个 IP 的同时联机,如果该联机超过一个值(例如同时有 12 个联机)的话,那么就将该 IP 抵挡掉!
    5. 此外,由于上面的方案可能会将 Proxy 的 Client 端也同时抵挡掉,真是可怜啊!这个时候,这支程序就会主动的将(1)的情况的主机抵挡 3 天,至于(2)的情况则抵挡2小时!过了该抵挡的时限后,该 IP 即可又连上我们的主机了!
    大致上就是这样吧!这样的一程序需要与 iptables 相互配合,所以,请先查阅一下简易防火墙设定那一篇文章,然后再来下载这支程序吧!这支程序您可以在底下的网址下载喔!
    http://linux.vbird.org/download/index.php#http-netstat.sh
    详细的安装步骤我已经以中文写在该档案里面了,所以请先查看一下该档案的前面说明部分吧!此外,Study Area 的 netman 大哥也已经开发了一套很棒的防砍站的程序了!在防堵砍站的原理上面是完全相同的,不过写法可能不是很雷同就是了!如果有需要的话,也可以前往 Study-Area 搜寻一下啰!
    http://phorum.study-area.org/viewtopic.php?t=13643

    安装 phpBB2 讨论板:
    上面这样一路走来,哈哈!终于我们的 LAMP 服务器就已经大致上搞定啦!那么接下来你可以利用这个 WWW 主机帮你做什么事呢?嗄!能作的事情可多啰!目前很多支持 PHP 的架站软件已经被很完整的开发了,例如 PHPNuke 以及鸟哥很喜欢的 phpBB 呢!这些架站软件都是建构在 LAMP 上面的,而既然我们的 LAMP 已经搞定了,那么其它的架站软件的安装就真的是相当的快速呢!底下介绍 phpBB 的安装!你可以到底下的连结去看看喔: 上面最后一个是鸟哥前一阵子写的,目前已经有出较新版本的 phpBB2 啰!所以,请记得到官方网站下载最新的 phpBB 来安装喔!毕竟比较新的不但功能比较多,而且臭虫(Bug)也清理的差不多了!另外,由竹猫星球的竹猫三兄弟也有出一本『phpBB 论坛架设宝典』,里面也有提到相当多的有用的架站心得与技巧的说明!有兴趣的可以先到竹猫星球看看其风格与内容,然后再考虑要不要架站吧! ^_^目前我对 phpBB 倒是蛮喜欢的!

    问题讨论:
    课后练习
    简易 WWW 服务器设定

    2003/01/14:第一次完成
    2003/01/18:新增问题讨论:关于中文的说明
    2003/01/21:新增问题讨论:关于 PHP 无法使用的问题说明
    2003/04/28:加入砍站软件的程序说明
    2003/04/29:加入 PHP 原始码程序优化模块 MM Cache 说明。
    2003/05/07:加入 ab 这个效能测试的说明!
    2003/05/30:使用 Tarball 安装时常常发生一些困扰,加入 User/Group 的设定说明!
    2003/09/10:将原本在 2002/12 安装 Tarball 的套件更新为目前 2003/09 最新的版本来安装喔!
    2003/10/02:加入一些问题的克服之道喔!
    2004/03/25:修订 MySQL 安装的流程!第四步骤加入权限的修订!
    2004/09/03:修改了 MMCache 的主网页。

    2003/01/14 以来统计人数


    Designed by VBird during 2001-2004.  Aerosol Lab.