TUX web server: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Joshua David Williams
(→‎Development and Limitations: modules /can/ be added to make dynamic pages)
mNo edit summary
 
(17 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The '''TUX web server''' is a [[World Wide Web]] server that can be run partially inside the [[Linux]] [[Linux kernel|kernel]] as a [[kernel module|module]] to provide the highest performance possible. Its name is derived from the Linux penguin mascot, [[Tux]].  It was originally contributed to the Linux kernel project by [[hacker|kernel hacker]] [[Ingo Molnar]].<ref>{{cite web
{{subpages}}
The '''TUX web server''' was a high performance [[World Wide Web]] server that could be run partially inside the [[Linux]] [[Linux kernel|kernel]], in order to serve web pages faster than traditional web servers such as [[Apache HTTP Server|Apache]]. Its name is derived from the Linux penguin mascot, [[Tux]].  It was originally contributed to the Linux kernel project by [[hacker|kernel hacker]] [[Ingo Molnar]].<ref>{{cite web
| url=http://kerneltrap.org/node/517
| url=http://kerneltrap.org/node/517
| title=Kerneltrap Interview with Ingo Molnar
| title=Kerneltrap Interview with Ingo Molnar
| retrievedate=2007-04-11
| retrievedate=2007-04-11
}}</ref>
}}</ref>
The TUX project (and kernel patchset) has essentially been deprecated by advances and features that were released with the Linux 2.6 kernel. Patches against a recent kernel source tree to include TUX cause the kernel to not compile cleanly, and advances in other web servers that take advantage of advancements in Linux 2.6 have essentially made the project obsolete.
The TUX mailing list confirms this:
<pre>
TUX is dead.  There has not been any new development on TUX for about
4 or 5 years, now.  Also, this mailing list is almost dead--I'm only
subscribed because I forgot about it.  Unless you want to write the
updates yourself, TUX will never work on a recent 2.6 Linux kernel.
But TUX is also completely unnecessary, today--the 2.6 kernel can
provide nearly the same static file serving performance as an the 2.4
kernel did with TUX, and the stability is significantly better.  TUX
died because it no longer serves a purpose.
If you want to serve static files very efficiently, and you want to
support large numbers of simultaneous HTTP sessions, then there are
some modern options.  Nginx is the current favorite, I think.
Ryan B. Lynch
ryan b lynch gmail com
</pre> (from the TUX mailing list: [https://www.redhat.com/archives/tux-list/2009-September/msg00001.html Re: TUX is dead])


==Development and Limitations==
==Development and Limitations==
Out of the box, it is currently limited to [[server|serving]] only static pages, meaning that it can't serve pages that were dynamically created using web scripting languages such as [[PHP]] or [[Perl]]. However, additional modules can be used to work with dynamic scripting languages, similarly to the way Apache uses the PHP module, except TUX does not contain any [[CGI]] functionality out of the box.
In its default configuration, TUX is limited to [[server|serving]] only static HTML web pages, meaning that it can't serve web pages that were dynamically created using scripting languages such as [[PHP]] or [[Perl]]. However, additional modules can be used to work with dynamic scripting languages, similarly to the way Apache uses its mod_php module.  These modules can be run from either userspace, meaning they aren't directly in the kernel or from other modules inserted into the kernel. Running modules from userspace is considered much safer from a security standpoint - see the [[TUX_web_server#Controversy_over_Security|Controversy over Secuity]] section for a discussion on this.


TUX has never been an integrated part of the official Linux kernel, although it has been shipped in some  
TUX has never been distributed in the "official" kernel distribution (it is a patchset), although it has has been included with the kernels of some [[Linux distribution|Linux distributions]], notably Red Hat, SuSE and Fedora.  
[[Linux distribution|Linux distributions]], notably Red Hat, SuSE and Fedora.  


It served as a [[testbed]] for many features which were integrated separately, including the Native [[POSIX]] Thread Library. With the right [[tuning]] parameters, the library allows web servers to serve pages at a speed very close to that of a kernelspace web server such as TUX but without its limitations.
It served as a [[testbed]] for many features which were integrated separately, including the Native [[POSIX]] Thread Library. With the right [[tuning]] parameters, the library allows web servers to serve pages at a speed very close to that of a kernelspace web server such as TUX but without its limitations or security concerns.
 
==Architecture and Design Concepts==
TUX works basically by "removing a middle step" that is usually required when data is served to the network by a running Unix [[daemon]].  Usually data has to be copied from point A to point B to point C. TUX removes the steps needed to get data from a web server's hard drive to the network cable (and client's web browser), and because it runs partially within the kernel but also partially as a daemon, it can serve pages faster than a traditional web server that has to "follow the steps" can.


==Controversy over Security==
==Controversy over Security==
Linux [[hacker|kernel hackers]] argued that having a [[daemon]], which by design is directly accessible from the [[Internet]] (as a web server would have to be), built directly into the kernel is very dangerous. A common bug such as a [[buffer overflow]] within TUX could give an attacker full remote [[superuser]] control over a machine. They argue that it is much safer to keep such daemons entirely within [[userspace]], where a bug does not necessarily give an attacker total control. However, some Linux distributions, such as Fedora, have added TUX back into 2.6 kernels.
Linux [[hacker|kernel hackers]] argued that having a [[daemon]], which by design is directly accessible from the [[Internet]] (as a web server would have to be), built directly into the kernel is very dangerous. A common bug such as a [[buffer overflow]] within TUX could give an attacker full remote [[superuser]] control over a machine. They argue that it is much safer to keep such daemons entirely within [[userspace]] but provide functionality for high performance, where a bug does not necessarily give an attacker total control.
 
Newer web servers do take advantage of improvements in the Linux 2.6 kernel that provide the ability for these web servers to match the performance of an in-kernel webserver despite running outside the kernel, thus largely deprecating TUX.


==Related Topics==
==Related Topics==
* [[Apache HTTP Server|Apache Web Server]], another web server that runs completely outside of a kernel
* [[Apache HTTP Server|Apache Web Server]], another web server that runs completely outside of a kernel
* The [[Linux kernel]] article, for a general overview of the Linux kernel and architecture
* The [[Linux kernel]] article, for a general overview of the Linux kernel and architecture
==Further Reading==
[http://www.citi.umich.edu/techreports/reports/citi-tr-00-8.pdf citi-tr-00-8.pdf] "The TUX web server: An analysis." Provides an architectural overview of TUX,  discusses modifications included in the patch, and how TUX affects kernel operating and performance
[http://www.redvip.homelinux.net/varios/TUX/ps-redha.pdf ps-redha.pdf] "Running TUX Web Server for Linux on Dell Servers." Describes the development process that culminated the release of TUX 2.0.


==References==
==References==
<references/>
{{reflist}}


[[Category:CZ Live]]
[[Category:Suggestion Bot Tag]]
[[Category:Computers Workgroup]]

Latest revision as of 16:00, 24 October 2024

This article is developed but not approved.
Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
 
This editable, developed Main Article is subject to a disclaimer.

The TUX web server was a high performance World Wide Web server that could be run partially inside the Linux kernel, in order to serve web pages faster than traditional web servers such as Apache. Its name is derived from the Linux penguin mascot, Tux. It was originally contributed to the Linux kernel project by kernel hacker Ingo Molnar.[1]

The TUX project (and kernel patchset) has essentially been deprecated by advances and features that were released with the Linux 2.6 kernel. Patches against a recent kernel source tree to include TUX cause the kernel to not compile cleanly, and advances in other web servers that take advantage of advancements in Linux 2.6 have essentially made the project obsolete.

The TUX mailing list confirms this:

TUX is dead.  There has not been any new development on TUX for about
4 or 5 years, now.  Also, this mailing list is almost dead--I'm only
subscribed because I forgot about it.  Unless you want to write the
updates yourself, TUX will never work on a recent 2.6 Linux kernel.

But TUX is also completely unnecessary, today--the 2.6 kernel can
provide nearly the same static file serving performance as an the 2.4
kernel did with TUX, and the stability is significantly better.  TUX
died because it no longer serves a purpose.

If you want to serve static files very efficiently, and you want to
support large numbers of simultaneous HTTP sessions, then there are
some modern options.  Nginx is the current favorite, I think.

Ryan B. Lynch
ryan b lynch gmail com

(from the TUX mailing list: Re: TUX is dead)

Development and Limitations

In its default configuration, TUX is limited to serving only static HTML web pages, meaning that it can't serve web pages that were dynamically created using scripting languages such as PHP or Perl. However, additional modules can be used to work with dynamic scripting languages, similarly to the way Apache uses its mod_php module. These modules can be run from either userspace, meaning they aren't directly in the kernel or from other modules inserted into the kernel. Running modules from userspace is considered much safer from a security standpoint - see the Controversy over Secuity section for a discussion on this.

TUX has never been distributed in the "official" kernel distribution (it is a patchset), although it has has been included with the kernels of some Linux distributions, notably Red Hat, SuSE and Fedora.

It served as a testbed for many features which were integrated separately, including the Native POSIX Thread Library. With the right tuning parameters, the library allows web servers to serve pages at a speed very close to that of a kernelspace web server such as TUX but without its limitations or security concerns.

Architecture and Design Concepts

TUX works basically by "removing a middle step" that is usually required when data is served to the network by a running Unix daemon. Usually data has to be copied from point A to point B to point C. TUX removes the steps needed to get data from a web server's hard drive to the network cable (and client's web browser), and because it runs partially within the kernel but also partially as a daemon, it can serve pages faster than a traditional web server that has to "follow the steps" can.

Controversy over Security

Linux kernel hackers argued that having a daemon, which by design is directly accessible from the Internet (as a web server would have to be), built directly into the kernel is very dangerous. A common bug such as a buffer overflow within TUX could give an attacker full remote superuser control over a machine. They argue that it is much safer to keep such daemons entirely within userspace but provide functionality for high performance, where a bug does not necessarily give an attacker total control.

Newer web servers do take advantage of improvements in the Linux 2.6 kernel that provide the ability for these web servers to match the performance of an in-kernel webserver despite running outside the kernel, thus largely deprecating TUX.

Related Topics

  • Apache Web Server, another web server that runs completely outside of a kernel
  • The Linux kernel article, for a general overview of the Linux kernel and architecture

References