当前位置:Linux教程 - Linux - TUX 2.0使用手册(一)

TUX 2.0使用手册(一)



        
    ChinaByte Linux专区授权转载

    作者:冰块

    前言



      今天打开信箱,看到redhat的信,说是redhat7.1发布了。看到有一个说是世界最快的webserver,TUX。没有理会,正好去我的论坛,就看到有人问TUX是什么的问题,就马上去redhat看了这个东东,介绍看起来还不错,居然到了kernel里。不过redhat把这个webserver作为主打以后会有什么结果呢,感觉总是怪怪的。不管怎么样,还是先熟悉它吧,说不定另外一个webserver的时代就要来临了。我们翘首等待吧。

    冰块

    2001.4.17


    一、什么是TUX?


    1.介绍

      TUX是一种有GPL(GNU General Public License )许可的基于内核的Web服务器。

      目前它还只能提供静态的网页服务,只有和内核区模块,用户区模块,以及一般的用户区Web服务器后台一起应用的时候才提供动态的内容服务。一般用户区的Web服务器不需要为了适应TUX而改变很多地方。然而,用户区数据段代码必须要有一个通向TUX的系统调用的接口。

      虽然动态的内容服务现在增长的很迅速,但是也必须要提供静态的内容服务。如,所有的图片文件就都是静态的。TUX能给在Linux的内核里提供非常高效率的静态内容服务,就想在内核里运行的NFS网络文件系统服务一样。

      TUX也有处理动态内容的功能。TUX模块用网页缓冲存储动态内容的对象。当一个动态的请求到达的时候,一个TUX的模块就发送会一个联合的动态请求并缓冲这个请求。这就是TUX的零拷贝缓存校验的结构。(建议TUX模块不许运行在用户区,虽然他们也可以运行在内核区。)

      这个新的动态内容的处理需要一个新的API接口。当前的CGI的API接口不能充分的用在TUX的API上。因此,当前的CGI程序为了使用TUX就要修改当前的程序。如果CGI程序不需要增加TUX的速度的话,TUX也可以把它安一般的CGI来处理。要实现这个功能就要用TUX的CGI模块。TUX也可以处理复杂的CGI或是其他的请求,这要通过它把请求重定向到另外一个web服务器后台程序,如Apache。也就是说,静态的内容,TUX模块,老的CGI程序,以及为TUX Web服务器编写的特定的程序都可以在TUX这个主服务器里运行。

      一句话,TUX和其他的Web服务器的区别和TUX的好处包括:


    TUX是作为Linux的内核2.4.x或更高的一部分来运行的,另外一部分可以做为用户区来运行。

    TUX缓存部分的TCP校验并用它们来加快网络数据传输速度。

    用一个特定的网络卡,TUX可以从页面缓存定向分散的DMA直接到网络,这样就避免了数据的拷贝。

    当TUX不知道如何去处理一个请求或是接受到一个请求不能去运行的时候,它一般会把这个请求传送到用户区的Web服务器后台去处理它。一个典型的用户区Web服务器就是Apache。
    2.TUX 2.0的新功能

      TUX 2.0是从TUX 1.0升级成的,仍然保守着与用户区模块的兼容性。

      增加的功能包括:


    真正的零磁盘读拷贝,TUX1.0是放到一个临时的缓存里的。

    生成网络写的零拷贝。

    零拷贝解析。
      其他新功能:


    提高用户去功能模块的支持。

    虚拟主机的支持,它不限制虚拟主机的数量。

    CGI可以绑定到特定的进程

    一些BUG的修复。
    3.系统的基本需要


    TUX需要基于2.4.x内核或是更高版本的系统。

    基于X86的服务器。

    交替的Web服务器如Apache来处理不知道的请求
      当前的限制:


    内核模块只支持服务器端。

    TUX只在x86的Linux平台上测试过。

    TUX能请求其他的Web服务器如Apache来处理请求。在当前的版本,它对回滚不是处理的很好。

    二、如何安装




    为了实现最好的效果,为TUX生成一个新的分区来作为文档目录。

    配置和安装TUX的内置内核支持。

    安装TUX的包rpm –Uvh tux-2.0-1.i386.rpm
    日志文件

      对于每一个请求,TUX会记录请求者的地址,一个日期和时间戳,能精确到1秒,还要记录请求的文件类型,文件传输的大小,和最后请求的状态。

      TUX的日志文件用二进制存储在/var/log/tux。用这样的二进制格式,日志文件会比用ASCII格式存储小近50%。Tux2w3c程序把这样的二进制日志文件转换成标准的HTTPD的日志文件。

    三、配置

    1.运行模式

      建议的配置运行模式是把TUX作为主Web服务器来运行,把Apache作为辅助的服务器。

      客户端端口:8080(或是其他)

      Web服务器端口:80

      因为建议的运行模式TUX是作为主Web服务器来运行,所以用户区后台必须改变到端口8080。对于Apache的配置,改变的配置在文件/etc/apache/conf/httpd.conf里在:

      Port 80

      改为

      Port 8080

      基于对安全的考虑

      BindAddress *

      应该改为

      BindAddress 127.0.0.1

      这样就可以避免外部的用户可以访问到Apache的目录。你必须重新启动Apache以使改变的配置生效,用/etc/rc.d/init.d/httpd restart。

      运行模式需要改变到用户区后台运行作为TUX的辅助服务

      客户端口:80

      Web服务器的端口:8080(或是其他)


    2.压缩的GZIP数据流

      TUX现在能够支持传送压缩的GZIP数据。这样也能减少web服务器和客户端浏览器的数据流量和等待时间。

      默认情况下,这个压缩功能是禁止的。如果要用到这个功能,就要在/etc/sysctl.conf修改

      net.tux.compression=1

      你的GZIP文件,有.gz的文件必须和你的解压版本在一个目录下。另外,下面的一些情况必须满足。


    TUX的解压功能在/etc/sysctl.conf启动。

    客户端能明确的支持gzip的编码。

    源文件存在,并有正确的权限。

    .gz文件的存在,并且有正确的权限。

    .gz文件比源文件新,或是和源文件有一样的数据。

    .gz比源文件小
    3.参数

      参数列表:

      下面的参数是在/proc/sys/net/tux和/proc/net/tux设定的。注意这个已经从源地址/proc/sys/net/http和/proc/net/http改变的。

























































































































































    名称


    默认


    描述


    serverport


    80


    主web服务器监听的端口


    clientport


    8080


    用户区的http后台的监听端口


    documentroot


    /var/www/html


    网页的存储目录,如果用初始脚本 /etc/rc.d/init.d/tux, 文档目录应该设置到 /etc/sysconfig/tux 作为 DOCROOT.


    threads


    服务器的线程数目,一般每个按CPU数目,每个CPU对应值1。


    内核用到的线程数目,不.能超过系统的CPU数目。如果用初始脚本/etc/rc.d/init.d/tux, 线程应该设置 /etc/sysconfig/tux 成 TUXTHREADS.


    mode_allowed


    S_IROTH


    需要的TUX文件进程的权限,用"man 2 stat"看更多的信息。


    mode_forbidden


    dir+sticky+execute


    禁止权限的文件TUX不会去运行。看"man 2 stat" 得到所有的值。.


    mode_cgi


    0x8d40


    权限位联合表明这个以给的饿文件允许用做为一个GCI文件。文件每年感和URL被替换并且$docroot/cgi-bin/$filename被执行为一个真正的CGI程序。和这些权限不相关可以保留为空


    mode_userspace


    S_IXUSR


    用户区的模块的特殊权限位。


    nonagle


    2


    如果设置为0,和标准的Nagle输出包结合。如果设置为1。就没有输出包的结合。如果设置为2,TCP_CORK格式的输出包结合


    page_age_start


    1


    可调LRU页面缓存


    page_age_adv


    1


    可调LRU页面缓存


    page_age_max


    8192


    可调LRU页面缓存


    push_all


    0


    如果设置为0,会结合并发的包。如果设置为1,强制一个包边界右移到TUX请求


    compression


    0


    如果设置为零就禁止。如果设置为1就发送gzip的压缩数据。看相关的章节了解详细的信息。


    cgi_uid


    -1


    UID用来运行CGI程序,在TUX脚本的默认设置ID为“nobody”


    cgi_gid


    -1


    GID用来运行CGI程序。早TIX的初始脚本里设置为"nobody"


    cgiroot


    /var/www/tux/cgiroot/


    TUX运行CGI程序的目录。在初始脚本里默认为$DOCROOT


    max_connect


    1000


    当前的最大连接数


    max_keepalive_bw


    0


    最大的在线输出带宽bytes/sec. 默认值为0表明不限制输出带宽


    max_object_size


    100MB


    TUX的最大服务文件大小


    Dprintk


    0


    如果TUX_DEBUG开启,就会有很冗长的信息记录到syslog.,这个只作为调试的目的来用的。


    ack_pingpong


    1


    延迟TCP ACK 进入的桢


    keepalive_timeout


    0


    没有完成,现在不可用。是设置点客户连接的超时的


    logentry_align_order


    N/A


    当前不可用


    logfile


    /var/log/tux


    TUX 二进制日志文件。


    logging


    1


    设置为1,日志记录开启。如果设置为0,记录就禁止。


    max_backlog


    2048


    最大的TUX监听的套接字SYN backlog 限制。


    virtual_server


    0 (off)


    开启启动虚拟主机的支持。主机用目录$DOCROOT/<Host> virtual docroots. 标识。


    zerocopy_parse


    1


    用输缓冲器来做为一个临时的缓冲来避免拷贝输入数据。



    如果用到TUX初始脚本/etc/rc.d/init.d/tux。下面的参数可以在文件/etc/sysconfig/tux配置。它们不能在/etc/sysctl.conf 配置因为初始脚本会忽略在/etc/sysctl.conf.设置的参数。用初始脚本启动是启动TUX的首选配置。

      Table 3-2. /etc/sysconfig/tux parameters





































    参数


    默认


    描述


    TUXTHREADS


    服务器的线程数目,一般每个按CPU数目,每个CPU对应值1


    内核用到的线程数目(和后台进程联系),不能比系统中的CPU数目大


    DOCROOT


    /var/www/html


    文档的根目录,这个目录用来存储网页


    CGI_UID


    nobody


    运行CGI程序的用户UID (user)


    CGI_GID


    nobody


    运行CGI程序的组GID (group)


    CGIROOT


    /var/www/html


    CGI程序存储的目录,如果你希望CGI程序能访问整个系统,就要把变量CGIROOT设置为CGIROOT=/


    TUXMODULES


    默认没有模块的列表


    TUX用户区的模块列表


    MODULEPATH


    默认没有路径设置


    TUX用户区模块的路径



    需要的参数:

      在启动TUX前,下面的参数不许设定:

      serverport

      clientport

      DOCROOT

    发布人:netbull 来自:Linux专区