179 lines
8.4 KiB
HTML
179 lines
8.4 KiB
HTML
<!--startcut ==========================================================-->
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<title>The Roxen Challenger Web Server LG #31</title>
|
|
</HEAD>
|
|
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#A000A0"
|
|
ALINK="#FF0000">
|
|
<!--endcut ============================================================-->
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
<font color="navy">A <I>Linux Journal</I> Preview</font>:
|
|
This article will appear in the November issue of <I>Linux Journal</I>.
|
|
<P> <HR> <P>
|
|
|
|
<center>
|
|
<H1><font color="maroon">Product Review: The Roxen Challenger Web Server</font></H1>
|
|
<H4>By <a href="mailto:michel@colint.com">Michael Pelletier</a></H4>
|
|
</center>
|
|
<P> <HR> <P>
|
|
|
|
<ul>
|
|
<li>Manufacturer: Idonex
|
|
<li>E-mail: info@idonex.com
|
|
<li>URL: http://www.roxen.com/
|
|
<li>Price: $795 US for Idonex License
|
|
Free download of 1.2 beta (GPL)
|
|
<li>Reviewer:
|
|
</ul>
|
|
<P> <HR> <P>
|
|
The Roxen Challenger HTTP Web Server is a marvel ahead of it's time.
|
|
That's a bold, hard-to-prove statement for a web server when compared to the
|
|
amazing success of the Apache HTTP Server. Before you stop reading this,
|
|
you should consider that there is nothing wrong with having two subtly
|
|
different, but very good tools.
|
|
<p>
|
|
Apache is designed from the ground up to be a simple, open, secure,
|
|
high-performance HTTP server, and it pays up in spades. Apache is the
|
|
natural choice for almost all web administrators weaned on NCSA CERN or a
|
|
commercial HTTP server like Netscape. However, Apache is not exactly
|
|
intuitive to configure, the configuration in question being three flat text
|
|
files. Apache also suffers from a monolithic structure (albeit plug-in
|
|
modularity is a new option if you compile it in) which requires recompiling
|
|
the source code when making changes or adding modules (such as proxy, database
|
|
access, etc.).
|
|
<p>
|
|
Roxen takes a different approach to HTTP server design. Roxen is easily
|
|
installed and configured. The user need only do the normal
|
|
<tt>./configure</tt> and <tt>make</tt> sequences after
|
|
unpacking the tar file and reading the README file.
|
|
This has worked flawlessly for me a dozen times on Intel Red Hat 4.2 and 5.0
|
|
machines. After compiling the Pike interpreter (we'll get to that), the
|
|
installation script tells you to point your browser to
|
|
http://localhost:<i>x</i>/, <i>x</i> being some random unassigned port. Where
|
|
the configuration interface server listens for your browser.
|
|
<p>
|
|
Pointing a browser to that URL brings up the on-line, web-centric configuration
|
|
interface. The first screen sets the configuration user and password
|
|
information for subsequent configuration sessions. Immediately, virtual
|
|
servers can be added, and adding a virtual server is a snap. My usual sequence
|
|
is to find a free IP and bind the hostname.domain to it. Create the aliased
|
|
Ethernet interface with <b>netcfg</b> specifying the chosen IP, switch to the Roxen
|
|
configuration interface and add a new server binding it (using simple, point and
|
|
click menus) to the interface just created, which Roxen automatically detects
|
|
and reverse looks up for me. Voil<\#225>, I have an instant virtual server;
|
|
the whole process taking less time than making a cup of coffee.
|
|
<p>
|
|
When creating the server, Roxen asks questions about what kind of server
|
|
is desired. The choices of Bare Bones, Standard, IPP (Internet Presence
|
|
Provider), Proxy or a copy of the configurations for any current servers in the
|
|
system. This gives lots of flexibility when working with more than just a
|
|
few virtual servers.
|
|
<p>
|
|
Each of the four choices is a certain set of loaded modules for each server.
|
|
Modules can be mixed and matched to make custom servers. Modules, also
|
|
written in Pike, can be loaded and
|
|
unloaded on the fly, and all Modules have a standard configuration interface
|
|
that plugs into the server configuration interface. Modules include the
|
|
file system, authentication, database access, CGI and FCGI execution,
|
|
on-the-fly graphics manipulation and more.
|
|
<p>
|
|
So how is this marvelous server put together? Roxen is written in the Pike
|
|
language. Pike is an interpreted, threaded C-like language based on an
|
|
older programming language for MUD systems. Pike is full blown and has a
|
|
graceful, clean style so much like C that any C programmer can pick
|
|
it up in minutes. This makes writing custom Roxen modules a snap. Pike's
|
|
home page has excellent, intelligently written documentation that is
|
|
completely cross-referenced, and includes a handy function index where many
|
|
old familiar buddies from the ANSI C libraries can be found.
|
|
<p>
|
|
The downside is that Pike, being a byte code interpreted language, is slower
|
|
than compiled and optimized C by a noticeable margin. Roxen 1.1 is also a bit
|
|
buggy, and Roxen 1.2 is still in beta. Having dabbled in 1.2 (which
|
|
installed <i>just</i> as cleanly as 1.1), I found it very cool with many new
|
|
modules, some of which are not available for Apache, such as on-the-fly
|
|
wizard generators and automatic table-formatting of SQL retrieved data.
|
|
A new update module contacts the Roxen central server in
|
|
Sweden and upgrades the server and all the modules to the newest
|
|
debugged versions, as well as offering to download any <i>new</i>
|
|
modules Idonex has created. 1.2 also uses the new threading built into the
|
|
latest version of Pike, increasing its performance for high or
|
|
eccentric load systems and allowing it to take advantage of multi-processor
|
|
systems.
|
|
<p>
|
|
The most powerful module in the Roxen set is the Roxen Mark-up Language
|
|
(RXML). RXML looks like HTML and is written directly into the HTML code.
|
|
When a client retrieves a document from the server, the server first parses
|
|
the document for RXML tags, changing the HTML output based on the tags used.
|
|
This is basically server side scripting ala server side Includes, in the
|
|
Apache parlance, but cleaner. For example:
|
|
<p>
|
|
<pre>
|
|
<html>
|
|
<head>
|
|
<body>
|
|
<if user=jane>
|
|
<gtext scale=0.5 nfont="arial" fg="blue"
|
|
bg="white">Hi there Jane.</gtext><br>
|
|
<else>
|
|
<h1>Hey get outta here!</h1>
|
|
</if>
|
|
</body></head></html>
|
|
</pre>
|
|
The <tt><if><else></if></tt> construct outputs different
|
|
HTML depending on whether the client fetching the page has authenticated
|
|
itself as the user <tt>jane</tt>. The <tt><gtext></tt> tag takes the text
|
|
and renders a gif image of it, on the fly, replacing the
|
|
<tt><gtext></tt> tag with an <tt><img></tt> tag whose
|
|
<b>src</b> is the generated image. Many options to gtext are
|
|
available including
|
|
transparency, sizes, bevels, automatic Javascript mouse responses and more.
|
|
Check out Roxen's home page for an example, or the
|
|
American Association for the Surgery of Trauma web page, where I used gtext
|
|
and RXML extensively.
|
|
<p>
|
|
Roxen's extreme ease of use and modularity make it a powerful tool for web
|
|
managers of all needs. The GNU GPL license for Roxen and Pike make the
|
|
price just right. Like all good GPL software, Pike and Roxen are backed by
|
|
an active, sharp Internet crowd of Pike programmers and Roxen-heads eager to
|
|
help you with your questions. Idonex also offers various levels of support
|
|
for very reasonable prices. The Roxen Server comes pre-packaged with a
|
|
manual and other non-GPL goodies (like 128bit SSL) from Idonex.
|
|
<P>
|
|
<h3>Resources</h3>
|
|
<p>
|
|
Pike Home Page: <A HREF="http://pike.idonex.se/">http://pike.idonex.se/</A>
|
|
<BR>
|
|
Idonex Home Page: <A HREF="http://www.idonex.se/">http://www.idonex.se/</A>
|
|
<BR>
|
|
Roxen Module Source: <A HREF="http://www.riverweb.com/source/">
|
|
http://www.riverweb.com/source/</A> <BR>
|
|
American Association for the Surgery of Trauma: <A
|
|
HREF="http://www.aast.org/">http://www.aast.org/</A> <BR>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Michael Pelletier <BR>
|
|
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./pavlicek.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./hughes.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
<!--startcut ==========================================================-->
|
|
</BODY>
|
|
</HTML>
|
|
<!--endcut ============================================================-->
|