Linux 版 (精华区)

发信人: netiscpu (说不如做), 信区: Unix
标  题: 【WWW Server安装简介 UNIX篇】
发信站: 紫 丁 香 (Sat May 23 19:51:17 1998), 转信



发信人: Alex (阿飞), 信区: WWW
标  题: 【WWW Server安装简介 UNIX篇】
日  期: Mon Jan 22 19:19:31 1996

文件版本:VERSION 1.01                                  DATE: 1995/03/27

【WWW SERVER安装简介--UNIX篇】
  本文将介绍UNIX SERVER 的安装。UNIX环境的SERVER,较常见的是CERN与NCSA的程
式。不过,由於後者曾发现在系统安全上有点问题(会被人侵入系统),而目前还没有
正式的补救版,所以笔者只打算介绍CERN的SERVER的安装。
    这两种软体安装上都有个共同点,就是「简单」。说不定你甚至会觉得太简单了,
没有「挑战性」,不过,安啦!架设 SERVER 只是旁枝末节的东东,没甚麽大不了的小
方法。 真正有挑战性的, 真正要注意的,其实应该是 SERVER 本身的所提供的资讯,
SERVER 中资讯的整合整理,SERVER 的内容。笔者在这里所作的,就只是把一些看起来
很了不起,其实没甚麽的小方法整理出来,让大家不须花那种不必要的时间於这种小节
上,而可以把心思用在SERVER的充实。:)


◇妖怪(Daemon)的诞生
   UNIX 软体的安装往往要多一道自己编译程式的过程, CERN 的架设也是要经过自
行作编译程式的过程。有些软体的编译颇麻烦,要注意许多东东,不过令人愉快的是:
CERN 的编译非常简单。
  CERN的软体的取得,可以抓:
      ftp://ftp.nccu.edu.tw/pub/www/server/unix/cern_3.0.tar.gz
    这个档是 CERN 的程式码、函式库和文件档的集合档。如果有须要,也可以抓同一
个目录下的各别档案(请参考该目录下00-INDEX档)。

  抓回本软体之後,用gzip解了再tar 开。tar 开後会建立一"WWW"的目录。目录中有
一httpd_docs的目录,存放html格式的相关文件档,大家可以参考一下。
    进行compile 的步骤其实非常的简单,只要下指令:
   % ./BUILD
    由於CERN提供了"BUILD" 这样的自动侦测的程式,所以下完了BUILD 的命令之後,就
可以泡杯茶到一边凉快,等系统自己compile 完了再回来:)

  如果编译过程没有问题(一般应该不会有问题,笔者曾在SunOS 4.1.x, Solaris 2.x
AIX 3.2.5.1 的机器上就如此成功的编译过),那麽将在~/WWW/Daemon/下产生一与机器.
名字的目录,例如AIX 的机器叫"rs6000",Sun 4.1.X 的机器叫Sun4等等。该目录下有许.
编译後的东东,不过最主要的,是叫httpd 的东东(其实这是个symbolic link 的档案).
这个就是所谓CERN的DAEMON了。(还有作map 用的htimage 和作执行用的cgi*。不过本文.
作这两类功能的介绍。)


◇设定档说明
  是不是很简单的就完成编译呢?要架一个SERVER,单单只有编译好的DAEMON是不够的
,最重要的,得要有作控制的设定档(configure file)。如果要从无到有的编写设定档
将是件可怕又讨厌的事,幸亏,可爱的CERN随软体提供了数个可供参考的设定档,这些设
定档就摆在~/WWW/server_root/config 之下。大家可以挑一个较合适自己的档来修改、
合并。以下笔者把较基本的options 稍作说明,大家凑合著看。当然,最好能够把与本软
体同目录的cern_httpd_guide.ps.gz抓回去研究,因为笔者所谓的「基本」的option只不
过是要求让一台SERVER跑得起来的最少option。
    为了方便大家在设定档上的挑选,下面稍微简介各个档案的主要作用:
    httpd.conf: 是个普通的设定档,作一般用途用的。
    prot.conf : 有限制设定的设定档。笔者对这东东没有介绍的兴趣,因为个人认为这
                类services就是开放给大众使用,除非有特殊须求,否则一般应该没有
                要设限的必要。我这东东是写作一般用途,如果有特殊须求者,自己阅
                读一下document 就可以轻易的办到了:)
    proxy.conf: 没有cache 的proxy 设定
    caching.conf: 有cache 的proxy 设定。
                这两个档都提供"proxy" ,这是甚麽东东呢?原来这东东是firewall的
                东东(好像越释解越多不懂的东东了:) 。简单来讲,firewall是一个网
                路,它没有直接与外界沟通,而是先连接到某一个主机,然後再由那台
                主机与外界交流。

                一台有proxy 设定的server(就叫proxy server),如果client端(如一
                般的browser: netscape, mosaic....)把proxy server设成它,那麽,
                client 端所发出的要求就会先送到这一台server,然後再由这台serve.
                把要求送出去。所以,这对有firewall的网路是很重要的,因为这样子
                在firewall的世界才能运作。

                可是,对一般没有设firewall的网路,设定proxy 也是颇有用的,不过
                这个前提是要配合cache 。如果一台proxy cache server(嗯,就是有□
                proxy, 有设cache的server) ,当client 端发出要求时,那我们知道□
                於proxy ,所以client端的要求会先送到这台server。而所谓的cache
                ,我们简单的把它想像成:以前所抓过的资料,都在server的hardisk□
                存留一份。所以当server收到client端的要求,那就不急著往外把这个
                要求送出去,而是先在hardisk 中找一找,找看有没有人曾经作过同样
                的要求,hardisk中有没有所要求的资料?有的话,就直接从server把□
                料送给client 端;没有的话,那才到外面,忍受龟速,含辛茹苦的把□
                料抓回来,自己存一份,给client一份。 (如下图所示)

                ┌———┐ Request     ┌———┐ 无cache资料  
                │client│—————→  │server│ —————→外界
                └———┘←有cache资料 └———┘              │
                    ↑                      ↑                  │
                    └———————————┴—————————┘ 


                所以,对一般使用者而言,如果把proxy cache server设在local 的网
                路的话,那只要server中有资料,就可以用local 的速度抓remote的资
                料。这对国内国外的网路而言,都会是件可以有效减少不必要的负荷的
                设定:)。所以,只要是硬碟空间允许的话,请优先考虑proxy cache 的
                功能。
                
◇基本option
    再一次强调,这里所介绍的,只是基本的option,只是让一台server能动的option,
如果可以的话,最好能读一读前面提到的文件,那有较「高段」的option。


△阳春SERVER的设定
1.ServerRoot    /where/ever/server_root
                主要与用WWW BROWSER 抓取到目录时,将要显示的icons的目录有关。
                如果设定:
                ServerRoot      /home/www
                则default会抓/home/www下的叫"icons"这个目录的*.xbm档当显示图形.
                
2.Port xxxx     设定要让Daemon在那一个port上跑。如果有root的权限,一般人都设成
                Port 80
                如果作测试用,可以用其他的port,如: 8080, 8001等。

3.UserId与GroupId
                设定所跑的daemon是以那一个user和group 在运作。如果daemon不是由
                root在跑,那当然没有作用。例:
                UserId  nobody
                GroupId nogroup

4.Welcome       file1.html
                笔者认为,这是相当应该一提的option。这个option的default值有三□
                Welcome Welcome.html
                Welcome welcome.html
                Welcome index.html
                大家平常在玩WWW 时,应该会发现,我们输入一个http的URL 时,一般
                上很少有输入档名的,例如:http://www.nccu.edu.tw/
                                                                 ^^^没有档名
                其实,这就是这个option的贡献。如果希望别人一连上我们的server就
                default 读取某个档,那麽,我们可能可以:
                1.把这个档的档名改名字,改成上述三个之一。
                2.假设该档叫"hup.html"(有人会这麽叫吗?:)
                  在设定档中加入一行:Welcome hup.html

5.  Pass /*     /local/Web/*
                Pass是一个多功能的option。
                上面用法是其中的一个必要的设定。在设定data的root。
                如上是在说,在使用者的URL 搜寻开的root,是在我们server的
                /local/Web开始搜寻。所以,在/local/Web目录之前的资料是找
                不到的,之後的才能被接触到。
                不过,这个说法并不完全正确,因为如果有抓使用者的资料(即~user)
                ,那根目录是使用者下的特定目录(这个下面会说明),而不是受这个
                Pass的限制。

6. UserDir      www
                如果有使用者要自己建个home page,要处理自己的资讯,那他是否
                要另外架台server呢?
                当然不是,因为架server是会要占用系统不必要浪费的资源的(如硬碟
                空间、daemon所占的记忆体等),而且会因此影响server的
                performance。
                有了这一个option,那麽使用者可以很愉快的在自己帐号下,「轻轻」
                的建个由UserDir 所指定的目录,如上面的目录是:www ,例如:hup
                这个user愿意把资料分享出去,那hup 可以建个~/www 的目录,把资
                料摆进去就可以了(复习一下,那home page名要叫甚麽呢?不知道吗?
                就看Welcome 怎麽设罗!)。
                有一点要注意的是:目录的mode是要UserID的那个user可以读与执行的
7.  ServerType  Inetd   或
    ServerType  Standalone
                让Daemon以怎麽样的方式执行就是这个option设定。
                Standalone是表示,直接执行httpd 这个程式,让这个程式直接
                Listen某一个Port。这一种方法的好处是:快。由於这个种式自己直接
                的处理自己所要的要求,一收到要求,由於已经在记忆体中了,所以,
                可以直接处理。不过,缺点也不见没有,很明显的,就是占用记忆体。
                另一方面,在某些机器、系统,也可能发生Daemon死去的问题。所以,
                要用Standalone的方式执行的话,那先评估一下自己配备的情形。

                Inetd 是另一种可以考虑的方法。不过,这稍微要改多一些东东。
                简单来讲,inetd 是个超级的daemon,它所作的事情,就只是负责处理
                与我们机器连接的要求。如果是它所负责的服务,那inetd 会执行该服
                务真正运作的daemon。
                这种方式执行httpd 的优点是:节省记忆体,而且,只要inetd 不死,
                那麽各个服务都能愉快的进行。不过,缺点是:比较慢,因此inetd 还
                要把负责该服务的daemon(如httpd) 执行起来才行。
                方法是:
                a.在/etc/services 中加入这麽一行:
                  http            80/tcp          www
                  表示port 80 是叫"http"的服务,而且这个服务又叫"www"
                  如果services有上yp,请重作yp,如:cd /var/yp; make
                b.在/etc/inetd.conf中加入这麽一行:
        http    stream  tcp     nowait  nobody  /usr/local/bin/httpd    httpd
        ^^^1.                           ^^^^2.  ^^^^^^^^^^^^^^^^^^^3.
        
                1.在services所注册的名字。
                2.用甚麽使用者在跑httpd
                3.httpd 
的所在,如我把它摆在/usr/local/bin/httpd                

                c.kill -HUP <PID-OF-INETD>


好了,讲到这里,这种接近阳春型的server应该可以跑了:)
不过,前面笔者说过,如果硬碟允许的话,希望大家都能够装proxy cache。下面笔者再□
绍如果要设proxy cache server,那麽应该再增加那些设定。

△proxy cache server的设定
1.Caching on    这应该不用解释吧!?
2.CacheRoot     /my/cache/dir
                我们要把资料Cache 在那里。这个目录必须是httpd 的running ID所能
                写的。有设这东东就会把Caching 的default设on。
3.CacheSize     xx M
                设多大的Cache ,如"CacheSize    200 M"  

4.NoCaching     protocol://some.hosts//*
                protocol可能是http, gopher, ftp, wais, news等。
                这是设定那些地方的资料不作cache ,例如我们设定"*.tw"(国内)的
                就不作cache :
                  NoCaching     http://*.tw/*
                  NoCaching     http://140.*/*
                  而
                  NoCaching     ftp://140.119.*/*       <--不把140.119.*的ftp
                                                           资料作cache

                *.xx.yy是表示以.xx.yy结尾的机器hostname。
                123.456.*是表示以123.456.开头的ip。
                这个option用在抓取与我们连接速率快的机器颇有用的。由於对方与
                我们连接速率快,所以就不必在我们机器上留份资料了,以免浪费空
                间:)。

5.CacheClean    protocol:*      how-long
                设定我们Cache 的资料最久能存多久。例如:
                CacheClean  http:*      1 month <--http的资料最长存一个月
                CacheClean  ftp:*       14 days <--ftp 的资料14天後就清掉
                CacheClean  gopher:*    5 days 12 hours <--gopher资料用5天半

6.CacheUnused   *       4 days 12 hours
  CacheUnused   http://some.server/*    7 days
  CacheUnused   ftp://some.hosts/*      14 days
                三个取自document的例子。这个设定是设多久没用的档案就清掉。


7.CacheLimit_1  200 K
  CacheLimit_2  4000 K
                上面是这两个options 的default值。
                CacheLimit_1是设定最小要多少我们的系统才作cache ,预设值是200 .
                CacheLimit_1是设定最大只cache 到多大的档案,预设值是4 MB。
                所以小於200K或大过4MB 的资料是不作cache 的。
                我们可以改这预设值。例如我想把所有的资料都cache :
                CacheLimit_1 0 K
                CacheLimit_2 40000 K
                (再小我也cache ,40MB以内的我也照收)          

8.Pass          http:*
  Pass          ftp:*
  Pass          gopher:*
                设定那些protocol的资料要作proxy 。如果只设:
                Pass http:*
                那麽就只有http的资料会作proxy 。所以要作proxy cache的protocol□
                请都Pass过去:)


◇结论
    这也不算甚麽结不结论的,只是,写到最後,总是令人快乐的一件事:)。
    www server架设的介绍就介绍到这里。希望大家能够同意架设一台www server真的是
件小case,打个哈欠就架好了:)。

=============================================================================
作者:陈彩合 (♂)            Email: hup@cc.nccu.edu.tw
日期:1995/03/27 version 1.01

┌本文版权所有,但是允许复制。不过,未经许可,严格禁止任何商业使用┐
│(例如:HopeNet),否则必定追究。                               │
│Copyright (c) 1995 Chai-Hup Tan, all right reserved.            │
└                                                                ┘

=============================================================================





--
7m0m┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃    2m 飞的感觉真好! @#$%!         7m          阿飞 ( Alex )      ┃
┠───────────────────────────────┨
┃    6m 信则: 热爱生活/热爱自由/热爱每一个人!      7m              ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
7;40m0m


--

                              Enjoy Linux!
                          -----It's FREE!-----

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:207.747毫秒