LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1780|回复: 2

TUX安装配置简明教材 资料供兄弟们参考

[复制链接]
发表于 2002-5-25 03:13:21 | 显示全部楼层 |阅读模式
TUX安装配置简明教材

Linuxaid.com.cn 02-04-17 15:18 1098p iamafan
--------------------------------------------------------------------------------


第一章 TUX是什么 ?
第二章 安装TUX
第三章:配置
第四章:安全性
第五章、用户-空间可装入模块


第一章 TUX是什么 ?

  TUX是基于GNU公众许可证下的,建立于核心网络服务器。

  它现在限于服务静态的网页并且与核心空间模块、用户空间模块、特定用户空间的网络服务器守护进程协调以提供动态的内容。不管怎样,特定用户空间的网络服务不需要被改变 ,因为 TUX能够与他们协调。然而、用户空间代码不得不使用一个新的以TUX(2)系统调用为基准的接口。

  虽然动态内容正在成为日益流行的服务,但是还存在大量静态内容服务的需要。例如:几乎所有的图象是静态的。TUX可以很有效地从 linux核心那里得到静态内容的服务。一个类似的操作已经被网络文件系统(网络文件系统)守护进程于核心运行。

  TUX也有高速缓冲动态内容的能力。TUX模块(可以插入核心空间或用户空间;推荐用户空间)可以创造充分利用页高速缓冲存储器的"对象 "。为响应一个动态数据的请求,一TUX模块可以发送一个混合的动态合成数据并且高速缓冲预产生的对象,以此将TUX零副本体系结构的优越性最大化

  这个新的体系结构为了服务动态的内容,需要一个新的应用编程接口。当前的那些面向公共网关接口的应用编程接口,不能充分地映射到TUX的API上。因此、现有的公共网关接口应用必须在 TUX处理他们之前被转换。如果那些公共网关接口应用程序不需要TUX的加速,TUX可以按照那些CGI应用程序的通常执行方式来处理。这个被TUX的公共网关接口模块所执行。TUX还可以通过重定向处理综合的要求到另一个网络服务器守护进程,比如Apache。换句话说、静态的内容、TUX模块、旧式的CGI应用程序,和为其他的webservers而书写的程序,可以明确地同TUX在一样的web系统上运转。

  总之,在TUX及其他webservers之间的差异包括∶

  1、TUX的部分运行在可定制的2.4.x或较高版本的核心内,另一部分作为用户-空间守护进程运行。

  2、充分利用网卡的能力,TUX能直接从页高速缓冲存储器通过DMA方式将数据传输到网络,从而避免数据多余拷贝。

  3、当 TUX不确定如何处理一个请求,或者收到一个请求是它不能处理的,它总是重定向请求到用户-空间网络服务器守护进程,用RFC兼容的的方式进行处理。这个用户-空间网络服务器守护进程很好的一个例子是Apache。

  注:Apache在这个文档中被用于作为用户空间Web服务器守护进程的例子。

  关于TUX或这文档的疑问或备注,参加tux list@_redhat.com>邮寄列表关于邮寄列表说明,请参见 http://www.redhat.com/mailing - lists/。

也可以访问Red Hat TUX网络服务器服务支持页http://www.redhat.com/services/techsupport/application/tux.html

TUX 2.1新的特色

  TUX 2.1版本是TUX 1.0的升级,并且保持与用户-空间模块的源代码级兼容性。增强的特性包括:

  1、真正的零拷贝磁盘读取:鉴于TUX 1.0将数据拷贝进入临时的缓冲,TUX 2.1和页高速缓冲存储器结合起来,从而运用零拷贝的I/O块操作。

  2、通用的零拷贝网数据络写操作:TUX 2.1运用通用的零拷贝TCP框架。

  3、零-拷贝分析:TUX分析哪里是可能的直接输入分组。即使在随机存取存储器的有限状态里,TUX能完全的行使 back-to-back的零拷贝I/O功能。

其他的变化包括:

  4、增强用户-空间工具和模块支持。

  5、多虚拟主机支持,添加了基于主机的虚拟服务器支持。除了RAM和磁盘空间的限制外,理论上对虚拟主机的数量没有限制。

  6、可以将执行的CGI绑定到指定CPU上。

  7、修正了一些可能引起性能问题的BUG。

系统环境需求摘要

  1、针对TUX定制的Linux内核2.4或者更高的版本系列。

  2、x86, Alpha, IA64 or PowerPC/64硬件平台, PowerPC/32也可以,但是在Sparc尚未测试过

  3、同一系统中必须有类似Apache这样的通用Web服务器,用来处理TUX不能处理的请求。

当前版本限制

   TUX仅能在统一服务器上调用其他更强大的web服务器来处理特殊请求,在将来的版本里,可以将这些请求通过轮转算法重定向到一组服务器中。

第二章 安装TUX

这一章描述如何进行TUX的安装。安装介绍:

  1、为了进一步优化服务性能,建议将静态文档的根目录存放在独立的RAID分区中。
  2、如果TUX没有被编译进内核,那么经过配置和重新编译将它编译到内核里。
  3、使用rpm -Uvh tux-2.1.0-2.i386.rpm命令安装TUX相关的包。
  4、将index.html创建在 /var/www/html目录下,作为系统缺省根目录。
  5、使用/etc/rc.d/init.d/tux start 命令启动TUX ,如果你使用的不是redhat系统,请使用该目录下的./tux.init命令启动,启动后通过浏览器测试你的http://localhost/是否正常。

  最后的TUX发行版可以从http://people.redhat.com/~mingo/TUX-patches/下载,安装TUX升级包可以使用以下步骤进行:

  1、下载最新的TUX补丁和工具包
http://people.redhat.com/~mingo/TUX-patches/
  2、使用patch -p0 < tux2-full-2.4.2-X6 在2.4.2内核上打上TUX补丁。
  3、执行 make oldconfig 使能TUX的内核功能,然后编译、导入TUX核心。
  4、编译、安装用户空间工具包,这里tux-2.0.25.tar.gz为你要安装的TUX软件包版本。
     tar xzvf tux-2.0.25.tar.gz
     cd tux-2.0.25
     make
     make install
  5、在 /var/www/html创建index.html文件,作为TUX的缺省文档根目录
  6、使用/etc/rc.d/init.d/tux start 命令启动TUX ,如果你使用的不是redhat系统,请使用该目录下的./tux.init命令启动,启动后通过浏览器测试你的http://localhost/是否正常。

日志文件

  对于每一个web请求,TUX的日志系统会精确的记录,包括;请求者地址、时戳(精确到秒)、请求的指定文件、传输的文件尺寸以及请求的最终状态。
  面向TUX的日志文件以二进制方式格式被保存在/var/log/tux下。在这个二进制格式文件中,日志文件大约只有标准ASCII文本日志文件尺寸的50%。要使用命令
  /usr/sbin/tux2w3c /var/log/tux
  查看日志文件。tux2w3c程序将二进制的日志文件转换成标准w3c格式--符合全球网服务器软件日志文件的标准。如果你想保存输出的美国信息交换标准码,你可以重定向输出到文件∶
  /usr/sbin/tux2w3c /var/log/tux > tux.log
  在那里日志输出文件以tux.log命名。

输出的范例:

195.4.12.3 - - Fri Nov 9 01:05:56 2001 "GET /test.html HTTP/1.1" - 53 200
195.4.12.3 - - Fri Nov 9 01:06:10 2001 "GET / HTTP/1.1" - 2890 200
255.255.255.255 - - Fri Nov 9 01:06:10 2001 "GET /icons/apache_pb.gif HTTP/1.1" - 0 404
195.4.12.3 - - Fri Nov 9 01:06:10 2001 "GET /poweredby.png HTTP/1.1" - 1154 200
195.4.12.3 - - Fri Nov 9 01:06:04 2001 "GET /test.html HTTP/1.1" - 53 200
195.4.12.3 - - Fri Nov 9 01:06:22 2001 "GET /manual/index.html HTTP/1.1" - 5557 200
195.4.12.3 - - Fri Nov 9 01:06:04 2001 "GET /test.html HTTP/1.1" - 53 200
195.4.12.3 - - Fri Nov 9 01:06:22 2001 "GET /manual/images/apache_header.gif HTTP/1.1" - 4084 200
195.4.12.3 - - Fri Nov 9 01:06:04 2001 "GET /test.html HTTP/1.1" - 53 200
195.4.12.3 - - Fri Nov 9 01:06:22 2001 "GET /manual/images/pixel.gif HTTP/1.1" - 61 200
195.4.12.3 - - Fri Nov 9 01:06:04 2001 "GET /test.html HTTP/1.1" - 53 200
195.4.12.3 - - Fri Nov 9 01:06:26 2001 "GET /manual/invoking.html HTTP/1.1" - 1 200
195.4.12.3 - - Fri Nov 9 01:06:04 2001 "GET /test.html HTTP/1.1" - 53 200
195.4.12.3 - - Fri Nov 9 01:06:35 2001 "GET /manual/stopping.html HTTP/1.1" - 1 200
195.4.12.3 - - Fri Nov 9 01:06:04 2001 "GET /test.html HTTP/1.1" - 53 200
195.4.12.3 - - Fri Nov 9 01:06:37 2001 "GET /manual/howto/ssi.html HTTP/1.1" - 18523 200
195.4.12.3 - - Fri Nov 9 01:06:41 2001 "GET /manual/new_features_1_3.html HTTP/1.1" - 34531 200

第三章:配置

  这章描述如何配置TUX网络服务器。

操作方法

  推荐运行方式是将TUX作为主Web服务器,Apache作为辅助的Web服务器。

   Client Port: 8080 (or other)
   Web Server Port: 80

  因为推荐方式中TUX是主Web服务器,所以用户-空间守护进程的配置必须转换为使用端口8080。关于 Apache的配置,通过改变配置文件
  /etc/httpd/conf/httpd.conf
  中相应的行来进行:

   Port 80
改为
   Port 8080

  因为安全原因,行

   BindAddress *
  将应转换为
   BindAddress 127.0.0.1

  这会防止外来的用户直接地从Apache访问。为了使转换生效,你必须重新启动 Apache,可以使用命令/etc/rc.d/init.d/httpd。

  相对的模式是将用户-空间守护进程Apache作为主Web服务器,TUX作为辅助的Web服务器。

   Client Port: 80
   Web Server Port: 8080 (or other)

压缩gzip数据流

  TUX能发送压缩(gzip)数据。这一点能够潜在减少网络服务器发送给客户浏览器的数据量和减少浏览器的加载时间。

  作为默认值,数据压缩选项是无效的。为了启动它,把下面的行加到

   /etc/sysctl.conf上∶
    net.tux.compression=1

  扩展名为.gz的gzip文件必须和你所希望服务的未压缩版本的页面位于同样的目录。为发送.gz文件,TUX中的下列条件必须成立。否则,那些初始文件被发送。

  1、在/etc/sysctl.conf的TUX压缩特性被打开。
  2、明确地确定客户程序能支持gzip编码。
  3、初始文件存在,作为一正规的文件,并且有完全地的权限许可。
  4、.gz文件存在,作为一正规的文件,并且有完全地的权限许可。
  5、.gz文件和那初始文件一样的日期或比它更新。
  6、.gz文件尺寸小于初始文件。

  注释:一个cron作业可以被用来在各目录为最新的未压缩数据产生一个新的gzip文件。

参数表

  这一章描述了如何使用提供的脚本来配置TUX参数。大部分的参数仅在TUX未运行得状态下才能设定。

参数列表

  以下参数通过/proc/sys/net/tux文件可以修改,这些修改最初来自于/proc/sys/net/http 和 /proc/net/http。

表3-1

  如果使用TUX的初始脚本/etc/rc.d/init.d/tux启动服务,就要通过 /etc/sysconfig/tux中指定的以下参数来设定相关信息。这些参数不能放在/etc/sysctl.conf文件中,因为初始化脚本会覆盖掉/etc/sysctl.conf重相应的参数。使用初始化脚本来启动TUX是一个比较好的做法。
  
表3-2

必须的参数

  在TUX启动之前,以下的参数必须设定:
  
    serverport
    clientport
    DOCROOT

    DOCROOT参数必须和apache或者其他用户空间守护进程的Web文档根目录一致,这些用户空间守护进程用于处理TUX重定向过来的请求。
 楼主| 发表于 2002-5-25 03:14:14 | 显示全部楼层
启动TUX

  TUX可以通过/etc/rc.d/init.d/tux脚本启动。

  这个官方提供的教本可以用于在单处理器和多处理器的服务系统上启动TUX。

  如果你想要使用自己编写的脚本启动TUX或者直接运行/usr/sbin/tux二进制执行文件启动它,那么你可以使用以下的参数:

表 3-3: /usr/sbin/tux 的选项:

选项描述
-t, --threads=N :tux线程数目
-d, --docroot=path :文档根目录
-m, --modpath=path:可加载用户空间扩充模块路径
-d, --daemon: 作为守护进程运行
-D, --date-interval=seconds:更新数据串的频率,单位为秒。
-?, --help 显示帮助信息
--usage 显示用法信息摘要

  IRQ绑定能够带来少量的性能提高.如果你没有任何性能方面的经验,不推荐你尝试下列的做法。

IRQ绑定

  将IRQ绑定到一组CPU中是2.4核心的一个新的特色。虽然它原来是作为 TUX的一部分发展,而现在则成为一般的、独立的系统核心的特色。每个IRQ源在linux中有一入口,即/proc/irq目录。例如:,IRQ 40的设定保存在/proc/irq/40下。IRQ绑定,或 IRQ联编,通过在该目录中smp_affinity的设置来配置。例如:,IRQ 40的smp_affinity保存在/proc/irq/40/smp_affinity下。smp_affinity的值设置为一个按照所有CPU编排的位掩码,该掩码被允许作为一个IRQ资源而使用。smp_affinity的缺省值是那十六进制值0xffffffff。这意味着IRQ的处理被发给全部的CPU。你不允许为了一个IRQ关闭全部的CPU掩码。如果IRQ控制器不支持IRQ绑定,那就不能从缺省值改变出来。如果多CPU被定义,那么IRQ源将使用最不繁忙的中央处理器。这被称作'最低优先级APIC(高级可编程中断控制器)路由选择.' IRQ绑定通过联编一个IRQ到具体的CPU或一组CPU来完成,联编按照回显一个十六进制值到对应的smp_affinity来实现。

  因此,TUX的N个线程被联编到N个CPU上。如果单个TUX线程被使用(推荐情况)并且仅存在唯一的网络接口卡,那么那网络接口卡的IRQ将应与 cpu0联编在一起。

停止TUX

  如果使用/etc/rc.d/init.d/tux start脚本来启动TUX ,那么必须使用/etc/rc.d/init.d/tux stop 来停止TUX服务。这样才会自动的将所有的用户空间加载模块卸载。

  如果你没有使用上述的脚本停止TUX,请执行命令
  /usr/sbin/tux -s 或者
  /usr/sbin/tux --stop

调试TUX

  如果你想要打印出TUX的状态、变量以及其他信息,可以执行gettuxconfig脚本。但你必须以root身份执行该命令。

MIME 类型

  TUX在2.0.13版本(Linux内核patch 2.4.2-P3版本)支持三种MIME类型,他们在 /etc/tux.mime.types中有完整定义。

表 3-4: MIME 类型列表

MIME类型: 文件扩展名 :描述

TUX/redirect :*.pl *.php :所有以该扩展名结尾的文件都将重定向到第二服务器执行。
TUX/CGI :*.cgi *.pl :所有使用TUX/CGI后列出的扩展名的文件都将由TUX自带的CGI解释引擎执行CGI脚本。
TUX/module: *.tux *.x :所有的该类文件都作为TUX的用户空间扩展模块处理。
TUX/redirect 这一MIME 类型将所有符合扩展名的文件重定向到Apache服务器上,并且不对 文件的访问权限做任何检查。
TUX/CGI MIME 类型指明了必须存放在$DOCROOT/cgi-bin目录下的文件类型,或者由cgiroot参数指定的路径。详见参数列表说明。

  关于模块类型参见第五小节。

TUX作为FTP服务器

  从TUX的版本2.0.21开始到版本2.4.2 - u7(TUX核心修补程序),TUX可以被配置为一台匿名FTP服务器来运行。

  为了将 TUX配置为FTP服务器,使用下面的命令∶

    echo 1 > /proc/sys/net/tux/application_protocol
    echo 21 > /proc/sys/net/tux/serverport
    echo 0 > /proc/sys/net/tux/nonagle
    service tux restart

  在执行这些命令以后,TUX FTP服务器将运行在端口21上,从文件根目录进行文件服务。

  为让它显示目录列表,从FTP的文档根目录运行generatetuxlist脚本。这个脚本创造.TUX-LIST文件和.TUX-NLIST文件,用来高速缓存目录列表。每次当FTP文档根目录变化,脚本必须被重新运行以产生更新的目录列表。

注解

  TUX FTP服务器已经通过大量的压力测试和FTP-客户程序兼容性测试。然而,它仍然是一个不成熟的软件。目前 tux/ftp没有已知的程序错误的或安全漏洞。然而它没有被广泛的大量的进行FTP客户程序测试(这一点恰恰是最重要的)。

TUX FTP服务器安全特色

  下面的是TUX FTP服务器的安全特性∶

   1、因为TUX以每-客户进程的方式启动,为每个FTP客户程序进行存储器分配的系统开销小于10 KB,这允许数以千计的并发连接。
   2、Paranoid分析程序和paranoid命令评估。
   3、chroots到docroot。
   4、决不从任何外部的用户空间进程来启动TUX FTP服务。全部的FTP函数功能在一个运行于核心的大约900行的C语言模块内完成,非常小巧。
   5、即使在内核工作方式下,TUX FTP服务器丢弃全部的特权行为,并转为nobody的UID和GID。
   6、仅仅支持的最通常的下载命令(mget*),并且不提供递归支持。

第四章:安全性

  TUX被设计成为具有非常高的安全性。这可能是因为在体系结构上,采用了用户空间的守护进程来处理TUX的部分复杂请求的缘故。

TUX仅在以下的几种条件下进行文件的服务:

  1、URL中不包含”?“。
  2、URL不以”/“开头。
  3、URL指向一个已经存在的文件。
  4、文件必须是nobody可读的。[1]
  5、该文件不是一个目录,或是一个指向目录的链接。[1]
  6、该文件不能被执行。[1]
  7、该文件没有sticky-bit设置。[1]
  8、URL不包含任何禁止的子字符串。[1]

备注:
[1]通过sysctl在/proc/sys/net/tux中设置

第五章、用户-空间可装入模块

  除了运行在核心空间的那一部分TUX之外,还有运行于用户空间的为TUX编写的模块。

  用户可装载模块的API目前正在不断发展中。当API变为可用时,本节的文档也相应地将要被更新。

  用户-空间可装载模块是通常单个.c文件并且被编译.so的共享库文件。TUX允许有无限数目的用户空间HTTP模块,并且他们可以被选择编译成某种语言。他们有完全的地址空间保护,无法引起核心的崩溃,并且被非特权化。

  用户-空间可装载的TUX模块和它们的位置必须在/etc/sysconfig/tux中用tuxmodules参数指定。这里可以参考第三章的相关细节。

  从TUX版本2.0.13开始(Linux核心修补程序2.4.2 - p3),用户空间可装载模块不需要通过专门的权限激活。相反,模块使用公共的MIME类型定义文件来指定。用户空间可装载的TUX模块必须以.tux或.x作为文件扩展名,在/etc/sysconfig/tux用tuxmodules参数指定。该文件必须被root拥有,root作为创建组并且要能够被完全可读。该文件无须是可执行的文件。例如:为使用demo.tux用户空间可装载模块,你可以有下列的文件∶

[root@m /]# ls -l /var/www/html/demo.tux
-rw-rw-r-- 1 root root 0 Sep 3 04:42 /var/www/html/demo.tux

  如果TUX发现一个URL对象具有这个MIME类型,它将搜索内部的模块列表,列表定义在/etc/sysconfig/tux的tuxmodules参数中。如果发现类型匹配的话,TUX发送请求到用户空间可装载模块中。
发表于 2002-5-26 13:23:28 | 显示全部楼层

这是VERY COOL的文章.

多谢老弟发布!
请弟兄们来研究和讨论!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表