This commit is contained in:
gferg 2002-02-28 23:09:54 +00:00
parent 17e937a8e1
commit 19544d377c
3 changed files with 213 additions and 161 deletions

View File

@ -20,9 +20,15 @@
<revhistory> <revhistory>
<revision>
<revnumber>0.04</revnumber>
<date>2002-02-28</date>
<authorinitials>nhz</authorinitials>
</revision>
<revision> <revision>
<revnumber>0.03</revnumber> <revnumber>0.03</revnumber>
<date>2001-12-06</date> <date>2001-09-28</date>
<authorinitials>nhz</authorinitials> <authorinitials>nhz</authorinitials>
</revision> </revision>
@ -273,8 +279,8 @@
<para> <para>
This section describes how to setup each piece of This section describes how to setup each piece of
the authentication gateway. The examples used are for a private the authentication gateway. The examples used are for a public
public network in the 10.0.1.0 subnet. eth0 is the interface on network in the 10.0.1.0 subnet. eth0 is the interface on
the box that is connected to the internal network. eth1 is the the box that is connected to the internal network. eth1 is the
interface connected to the public network. The IP address used interface connected to the public network. The IP address used
for this interface is 10.0.1.1. These settings can be for this interface is 10.0.1.1. These settings can be
@ -676,6 +682,10 @@
paper</ulink> describing how the University of Alberta created an authentication gateway. paper</ulink> describing how the University of Alberta created an authentication gateway.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
<ulink url="http://nocat.net">Nocat.net</ulink> has an authentication gateway for wireless networks. This software
has a web based client.
</itemizedlist> </itemizedlist>
</sect1> </sect1>

View File

@ -41,6 +41,11 @@
</author> </author>
<revhistory> <revhistory>
<revision>
<revnumber>0.07</revnumber>
<date>2002-02-27</date>
<authorinitials>jpt</authorinitials>
</revision>
<revision> <revision>
<revnumber>0.06</revnumber> <revnumber>0.06</revnumber>
<date>2001-09-08</date> <date>2001-09-08</date>
@ -117,10 +122,15 @@
</para><para> </para><para>
If you have a network, that you want to attach to the outside: If you have a network, that you want to attach to the outside:
</para><para> </para><para>
<literallayout> <mediaobject>
<imageobject>
<imagedata fileref="network.png">
</imageobject>
<textobject>
<literallayout>
_____________ _____________
/ \ external IP _________ internal IP / \ external IP _________ internal IP
| Internet | 123.12.23.43 | linux | 192.168.0.1 | Internet | 123.12.23.43 | linux | 192.168.0.1
| google.com | <----[outside card]-| machine |-[internal card] | google.com | <----[outside card]-| machine |-[internal card]
\_____________/ --------- | \_____________/ --------- |
| |
@ -130,7 +140,12 @@
| machine | | Intranet | | machine | | Intranet |
------------- \______________/ ------------- \______________/
</literallayout> </literallayout>
</textobject>
<textobject>
<phrase>Picture of network</phrase>
</textobject>
</mediaobject>
</para> </para>
</sect1> </sect1>

View File

@ -20,11 +20,11 @@ Frontpage
<title>Apache Overview HOWTO <title>Apache Overview HOWTO
<author>Daniel Lopez Ridruejo, <tt/ridruejo@apache.org/ <author>Daniel Lopez Ridruejo, <tt/ridruejo@apache.org/
<date>v0.6, 8 March 2001 <date>v0.7, 2002-02-28
<!-- Abstract --> <!-- Abstract -->
<abstract> <abstract>
This documents gives you an overview of the Apache webserver and This document gives you an overview of the Apache webserver and
related projects. It provides pointers for further information and related projects. It provides pointers for further information and
implementation details. implementation details.
</abstract> </abstract>
@ -33,22 +33,24 @@ implementation details.
<toc> <toc>
<sect>Introduction <sect>Introduction
<p> <p>
This document gives you an overview of the Apache web server and related projects. This document gives you an overview of the Apache web server and
Apache is the <url name="most popular server on the Internet" related projects. Apache is the <url name="most popular server on the
url="http://www.netcraft.com/survey/">. New Apache Internet" url="http://www.netcraft.com/survey/">. New Apache users,
users, specially those coming from a Windows background, are often unaware especially those coming from a Windows background, are often unaware
of the possibilities of Apache, useful addons and, more in general, how everything works of the possibilities of Apache, its useful addons and, more in
together. This document aims to show a general picture of such possibilities general, how everything works together. This document aims to show a
with a brief description of each one and pointers for further information. general picture of such possibilities with a brief description of each
The information has been gathered from many sources, including projects' web one and pointers for further information. The information has been
pages, conference talks, mailing lists, Apache websites and my own hands-on gathered from many sources, including projects' web pages, conference
experience. Full credit is given to these authors. Without them and their work talks, mailing lists, Apache websites and my own hands-on
this document would not have been possible or necessary. experience. Full credit is given to these authors. Without them and
<p>Disclaimer: I work for <url name="Covalent" url="http://www.covalent.net">. We their work, this document would not have been possible or necessary.
provide products and support services for the Apache webserver, and I mention some <p>Disclaimer: I work for <url name="Covalent"
of them here, as I do for our competitors and similar open source projects. url="http://www.covalent.net">. We provide products and support
<p>If you find typos, errors or you have suggestions for improvement or comments, services for the Apache webserver, and I mention some of them here, as
please let me know so I can correct the document. I do for our competitors and similar open source projects.
<p>If you find typos, errors, or if you have suggestions for improvement
or comments, please let me know so I can correct the document.
<sect>Apache <sect>Apache
<p>Apache is the leading internet web server, with over 60% market share, according <p>Apache is the leading internet web server, with over 60% market share, according
to the <url name="Netcraft survey" url="http://www.netcraft.com/survey">. to the <url name="Netcraft survey" url="http://www.netcraft.com/survey">.
@ -57,14 +59,14 @@ Several key factors have contributed to Apache's success:
<item>The <url name="Apache license" url="http://www.apache.org/LICENSE.txt">. It is <item>The <url name="Apache license" url="http://www.apache.org/LICENSE.txt">. It is
an open source, BSD-like license that allows for both commercial and non-commercial an open source, BSD-like license that allows for both commercial and non-commercial
uses of Apache. uses of Apache.
<item>Talented community of <url name="developers" url="http://www.apache.org/contributors/index.html"> <item>Talented community of <url name="developers" url="http://www.apache.org/foundation/members.html">
with a variety of backgrounds and an open development process based on technical merits. with a variety of backgrounds and an open development process based on technical merits.
<item>Modular architecture. Apache users can easily add functionality or taylor Apache to their <item>Modular architecture. Apache users can easily add functionality or tailor Apache to their
specific enviroment. specific enviroment.
<item>Portable: Apache runs on nearly all flavors of Unix (and Linux), Windows, BeOs, mainframes... <item>Portable: Apache runs on nearly all flavors of Unix (and Linux), Windows, BeOs, mainframes...
<item>Robustness and security <item>Robustness and security
</itemize> </itemize>
Many commercial vendors have adopted Apache based solutions for their products, including <url name="Oracle" Many commercial vendors have adopted Apache-based solutions for their products, including <url name="Oracle"
url="http://www.oracle.com">, <url name="Red Hat" url="http://www.redhat.com"> and <url name="IBM" url="http://www.ibm.com">. url="http://www.oracle.com">, <url name="Red Hat" url="http://www.redhat.com"> and <url name="IBM" url="http://www.ibm.com">.
In addition, <url name="Covalent" url="http://www.covalent.net"> provides add-on modules and 24x7 support for Apache. In addition, <url name="Covalent" url="http://www.covalent.net"> provides add-on modules and 24x7 support for Apache.
<p>The following websites use Apache or derivatives. Chances are that if Apache <p>The following websites use Apache or derivatives. Chances are that if Apache
@ -84,7 +86,7 @@ is good enough for them, it is also good enough for you :)
<em>The Apache Project is a collaborative software development effort aimed at creating a robust, commercial-grade, featureful, and freely-available source code implementation of an HTTP (Web) server. </em> <em>The Apache Project is a collaborative software development effort aimed at creating a robust, commercial-grade, featureful, and freely-available source code implementation of an HTTP (Web) server. </em>
<p> <p>
The Apache project has grown beyond building just a web server into other critical server side technologies The Apache project has grown beyond building just a web server into other critical server side technologies
like Java or XML. The Apache Software Foundation, described in the next section serves as an umbrella for these projects. like Java or XML. The Apache Software Foundation, described in the next section, serves as an umbrella for these projects.
<p>Related talk <p>Related talk
<itemize> <itemize>
@ -115,7 +117,7 @@ There are several ways of providing content with Apache.
<item>W07: Web Application Technologies - surveying the landscape <item>W07: Web Application Technologies - surveying the landscape
</itemize> </itemize>
<sect1>Static <sect1>Static Content
<p> <p>
Apache can serve static content, like HTML files, images, etc. Apache can serve static content, like HTML files, images, etc.
If this is all you need, Apache is probably right for you. If this is all you need, Apache is probably right for you.
@ -132,43 +134,44 @@ directory services, customer records, other websites) and deliver the content
to the user. to the user.
<sect1>CGI scripts <sect1>CGI scripts
<p> <p>
CGI stands for Common Cateway Interface. CGI scripts are external programs CGI stands for Common Gateway Interface. CGI scripts are external programs
that are called when a user requests a certain page. The CGI receives information that are called when a user requests a certain page. The CGI receives information
from the web server (forms variable values, type of browser, IP from the web server (form variable values, type of browser, IP
address of the client, etc) and uses that information to output a web page for the client.<p> address of the client, etc) and uses that information to output a web page to the client.<p>
<em>Pros</em>: Since it is an external program, it can be coded any <em>Pros</em>: Since it is an external program, it can be coded in any
language and the same script will also be portable among different web language. The same script will also be portable among different web
servers. The CGI protocol is simple, and the return result consists of writing servers. The CGI protocol is simple, and the return result consists of writing
the response to the standard output. It is a mature technology, and there are the response to the standard output. It is a mature technology, and there are
plenty of online and book references and examples. plenty of online and book references and examples.
<p> <p>
<em>Cons</em>: Spawning and initializing a process takes time. Since a CGI is <em>Cons</em>: Spawning and initializing a process takes time. Since a
external to the server and an instance has to be launched/destroyed for every CGI script is external to the server and an instance has to be
request there is a performance hit. If the process has to load external launched/destroyed for every request there is a performance hit. If
libraries or perform a connection to an external database the delay can be the process has to load external libraries or perform a connection to
important. Same thing if the number of hits per second is high. CGIs are an external database the delay can be important. Same thing if the
stateless and session management has to be achieved by external means. number of hits per second is high. CGIs are stateless and session
management has to be achieved by external means.
<p> <p>
Since CGI usually involves heavy text manipulation, scripting languages are Since CGI usually involves heavy text manipulation, scripting languages are
the natural choice. Part of <url name="Perl" url="http://www.perl.com/"> the natural choice. Part of <url name="Perl's" url="http://www.perl.com/">
popularity stems from being the CGI programming language of choice. This is due popularity stems from its being the CGI programming language of choice. This is due
to its extensive support for string handling and text processing. There are plenty to its extensive support for string handling and text processing. There are plenty
of freely available CGI scripts and libraries. A good starting point is: of freely available CGI scripts and libraries. A good starting point is:
<url name="the Open Directory CGI section" url="http://dmoz.org/Computers/Programming/Internet/CGI/"> <url name="the Open Directory CGI section" url="http://dmoz.org/Computers/Programming/Internet/CGI/">
<sect1>Site generators <sect1>Site generators
<p>If your site is high volume, you may run into performance problems when <p>If your site is high volume, you may run into performance problems
generating content dynamically. Offline content generators are an alternative. when generating content dynamically. Offline content generators are an
These solutions separate content from presentation. The HTML alternative. These solutions separate content from presentation. The
generator reads both sources and outputs the static files that build the HTML generator reads both content and presentation data and outputs
website. The generator can be run periodically or triggered by content the static files that build the website. The generator can be run
changes.<p> periodically or triggered by content changes.<p>
Future versions of <ref name="Cocoon" id="cocoon"> Future versions of <ref name="Cocoon" id="cocoon">
plan on having a batch mode to accomplish this. Another option is the plan on having a batch mode to accomplish this. Another option is the
<url name="Web site meta language" url="http://www.engelschall.com/sw/wml/">. <url name="Web site meta language" url="http://www.engelschall.com/sw/wml/">.
<sect1>Out of process servers <sect1>Out of process servers
<p> <p>
The web server can pass dynamic requests to another program. This program The web server can pass dynamic requests to another program. This program
sits idle until a request comes. The request is processed and returned to the sits idle until a request arrives. The request is processed and returned to the
webserver which in turn returns it to the client. This eliminates the overhead webserver which in turn returns it to the client. This eliminates the overhead
associated with CGI scripts. Examples of this approach are <ref name="Fast CGI" associated with CGI scripts. Examples of this approach are <ref name="Fast CGI"
id="fastcgi">, <ref name="Java servlets" id="javaservlets">, etc. id="fastcgi">, <ref name="Java servlets" id="javaservlets">, etc.
@ -184,13 +187,15 @@ url="http://www.fastcgi.com">
<item>F18: FastCGI -- The forgotten treasure <item>F18: FastCGI -- The forgotten treasure
</itemize> </itemize>
<sect1>Java servlets<label id="javaservlets"> <sect1>Java servlets<label id="javaservlets"> <p>To provide Java
<p>An external Java virtual machine processes requests. The JVM can reside in servlets, a Java virtual machine (in a process separate from the web
the same computer or in a different one. This is how a lot of application server) processes requests. The JVM can reside in the same computer or
servers work. Usually standard libraries are included for server side in a different one. This is how many application servers work. Usually
processing. You want to check <ref name="JServ" id="jserv"> and standard libraries are included for server side processing. <ref
<ref name="Tomcat" id="tomcat">. Related Java application server projects name="JServ" id="jserv"> and <ref name="Tomcat" id="tomcat"> are
can be found <ref name="here" id="applicationservers"> Apache projects that provide this functionality. Related Java
application server projects can be found
<ref name="here" id="applicationservers">
<p>Related talk <p>Related talk
<itemize> <itemize>
@ -201,8 +206,8 @@ can be found <ref name="here" id="applicationservers">
<sect1>Embeded interpreters <sect1>Embeded interpreters
<p>An alternative to out-of-process webservers is to embed the interpreter in <p>An alternative to out-of-process webservers is to embed the interpreter in
the server itself. There are roughly two categories in this kind of modules: the server itself. There are roughly two categories in this kind of modules:
Modules that answer or modify requests directly and modules aimed to process Modules that answer or modify requests directly and modules that process
commands embeded in HTML pages before serving it to the client. The most commands embedded in HTML pages before serving it to the client. The most
representative approaches are <ref name="mod_perl" id="mod_perl"> and <ref representative approaches are <ref name="mod_perl" id="mod_perl"> and <ref
name="PHP" id="php"> name="PHP" id="php">
@ -217,8 +222,7 @@ based on the file requested, a specific client IP address, etc. This is done
to prevent abuse. to prevent abuse.
<itemize> <itemize>
<item><bf>mod_mmap</bf>: Included in current Apache releases, it maps to <item><bf>mod_mmap</bf>: Included in current Apache releases, it maps to
memory a statically configured list of frequently requested but not changed memory a statically configured list of files that are frequently requested but infrequently changed.
files.
<item><bf><url name="Mod_bandwidth" url="http://www.cohprog.com/mod_bandwidth.html"></bf>: <em>Enables the setting of server-wide or per connection bandwidth limits, based on the specific directory, <item><bf><url name="Mod_bandwidth" url="http://www.cohprog.com/mod_bandwidth.html"></bf>: <em>Enables the setting of server-wide or per connection bandwidth limits, based on the specific directory,
size of files and remote IP/domain</em>. size of files and remote IP/domain</em>.
<item><bf><url name="Bandwidth share module" url="http://www.topology.org/src/bwshare/README.html"></bf>: provides bandwidth throttling and balancing by client IP address. It is actively maintained. <item><bf><url name="Bandwidth share module" url="http://www.topology.org/src/bwshare/README.html"></bf>: provides bandwidth throttling and balancing by client IP address. It is actively maintained.
@ -229,7 +233,7 @@ size of files and remote IP/domain</em>.
<sect>Virtual hosting <sect>Virtual hosting
<p> <p>
Apache provides extensive virtual hosting support, there are additional modules that provide specific functionality: Apache provides extensive virtual hosting support; there are additional modules that provide specific functionality:
<itemize> <itemize>
<item><url name="mod_dynvhost" url="http://funkcity.com/0101/"> <item><url name="mod_dynvhost" url="http://funkcity.com/0101/">
@ -247,8 +251,8 @@ In addition, Apache 2.0 allows children serving different domains to have differ
url="http://www.apache.org/docs/mod/mod_rewrite.html"> ... :) This technique consists of having an Apache front-end server acting url="http://www.apache.org/docs/mod/mod_rewrite.html"> ... :) This technique consists of having an Apache front-end server acting
as a proxy for the backend servers. You can find more information <url name="here" as a proxy for the backend servers. You can find more information <url name="here"
url="http://www.apache.org/docs/misc/rewriteguide.html"> url="http://www.apache.org/docs/misc/rewriteguide.html">
<item><bf>Mod_redundacy</bf>: Takeover web and ip in case of failure. You can find more information <!-- <item><bf>Mod_redundancy</bf>: Takeover web and ip in case of failure. You can find more information
<url name="here" url="http://www.ask-the-guru.com">. <url name="here" url="http://www.ask-the-guru.com">. -->
<item><bf>Mod_backhand</bf>: <em>Allows seamless redirection of HTTP requests from one web server to another. This redirection <item><bf>Mod_backhand</bf>: <em>Allows seamless redirection of HTTP requests from one web server to another. This redirection
can be used to target machines with under-utilized resources, thus providing fine-grained, per-request load balancing of web can be used to target machines with under-utilized resources, thus providing fine-grained, per-request load balancing of web
requests</em>. More information at <htmlurl url="http://www.backhand.org/">. requests</em>. More information at <htmlurl url="http://www.backhand.org/">.
@ -261,23 +265,23 @@ requests</em>. More information at <htmlurl url="http://www.backhand.org/">.
<sect>Secure transactions <sect>Secure transactions
<p>There are several solutions that provide secure transactions for Apache servers. <p>There are several solutions that provide secure transactions for Apache servers.
This enables Apache servers to be used for ecommerce or other scenarios where This enables Apache servers to be used for e-commerce or other scenarios where
sensitive information is exchanged (like credit card numbers). sensitive information (like your credit card number) is exchanged.
<itemize> <itemize>
<item><url name="Mod_ssl" url="http://www.modssl.org"> and <url name="Apache-SSL" url="http://www.apache-ssl.org"> are open source <item><url name="Mod_ssl" url="http://www.modssl.org"> and <url name="Apache-SSL" url="http://www.apache-ssl.org"> are open source
implementations. They are European based, unencumbered by RSA patents. implementations. They are European based, unencumbered by RSA patents.
<item><url name="Red Hat" url="http://www.redhat.com"> offers a secure server derived from Apache. Red Hat adquired C2Net, makers <item><url name="Red Hat" url="http://www.redhat.com"> offers a secure server derived from Apache. Red Hat acquired C2Net, makers
of StrongHold, another Secure server derived from Apache. of StrongHold, another Secure server derived from Apache.
<item><url name="Covalent" url="http://www.covalent.net"> sells secure versions of Apache as well as the CovalentSSL module that <item><url name="Covalent" url="http://www.covalent.net"> sells secure versions of Apache as well as the CovalentSSL module that
plugs on existing Apache installations. plugs into existing Apache installations.
</itemize> </itemize>
<p><bf>Credit card transactions</bf> <p><bf>Credit card transactions</bf>
<p>Apache specific solutions exist for credit card transactions: <p>Apache specific solutions exist for credit card transactions:
<itemize> <itemize>
<item><url name="Cypay" url="http://www.cypay.com/"> credit card module for <!-- <item><url name="Cypay" url="http://www.cypay.com/"> credit card module for
Apache. Template based, tax calculations. Apache. Template based, tax calculations. -->
<item><url name="Covalent credator" url="http://www.covalent.net">, multiple <item><url name="Covalent credator" url="http://www.covalent.net">, multiple
clearinghouses support, failover operation, PHP, Perl, Java support. clearinghouse support, failover operation, PHP, Perl, Java support.
</itemize> </itemize>
@ -315,31 +319,31 @@ access via <url name="ssh" url="http://www.openssh.com">. Editing a
configuration file by hand implies a learning curve. There are open source configuration file by hand implies a learning curve. There are open source
graphical tools that make this task easier: graphical tools that make this task easier:
<itemize> <itemize>
<item><url name="Comanche" url="http://www.comanche.org">: It is crossplatform <item><url name="Comanche" url="http://www.covalent.net/projects/comanche/">:
and runs on Unix/Linux, Windows and Mac. Check the website for screenshots and It is crossplatform and runs on Unix/Linux, Windows and Mac. Check the website
in-depth information. Disclaimer: I am the main author of Comanche, so remember, for screenshots and in-depth information. Disclaimer: I am the main author of
there are no bugs, only undocumented features :) Comanche, so remember, there are no bugs, only undocumented features :)
<item><url name="gui.apache.org" url="http://gui.apache.org">: GUI interfaces <item><url name="gui.apache.org" url="http://gui.apache.org">: GUI interfaces
for Apache project. Programs with various degrees of development. for Apache project. Programs are in various degrees of development.
<item><url name="Webmin" url="http://www.webmin.com/webmin/">: A nice <item><url name="Webmin" url="http://www.webmin.com/webmin/">: A nice
web based interface. web based interface.
</itemize> </itemize>
<sect>Writing Apache modules <sect>Writing Apache modules
<p> <p>
Apache, like many other successful open source projects has a modular architecture. Apache, like many other successful open source projects, has a modular architecture.
This means that to add or modify functionality you do not need to know the whole This means that to add or modify functionality you do not need to know the whole
code base. code base.
Source code access for Apache means that you can custom build the server with only the Source code access for Apache means that you can custom build the server with only the
modules that you need and include your owns. modules that you need and include your own.
<p> <p>
Extending Apache can be done in C or in a variety of other languages using appropriate modules. Extending Apache can be done in C or in a variety of other languages using appropriate modules.
These modules expose Apache's internal functionality to different programming languages like Perl or Tcl. These modules expose Apache's internal functionality to different programming languages like Perl or Tcl.
<p><bf>Writing modules in C</bf>: Apache is written in C and so they are the modules distributed with Apache. <p><bf>Writing modules in C</bf>: Apache is written in C and so are the modules distributed with Apache.
The best way to get started writing Apache modules is to read Doug MacEachern and Lincoln Stein The best way to get started writing Apache modules is to read Doug MacEachern and Lincoln Stein's book
<url name="Writing Apache modules with Perl and C" url="http://www.modperl.com">. It is a well-written, easy to read book by two <url name="Writing Apache modules with Perl and C" url="http://www.modperl.com">. It is a well-written, easy to read book by two
Apache and Perl gurus. The above link will lead you to the book website, which has some of its chapters online. Apache and Perl gurus. The above link will lead you to the book website, which has some of its chapters online.
If you have not the money to buy the book or cannot borrow it from a friend, there are other ways. If you don'e have the money to buy the book and cannot borrow it from a friend, there are other ways.
You can read some of the online tutorials on writing Apache modules: Ken Coar, an Apache Group member, has a nice You can read some of the online tutorials on writing Apache modules: Ken Coar, an Apache Group member, has a nice
<url name="tutorial and slides online" url="http://web.golux.com/coar/slides/">. <url name="tutorial and slides online" url="http://web.golux.com/coar/slides/">.
An overview of the Apache architecture can be found <url name="here" url="http://www.grad.math.uwaterloo.ca/~oadragoi/CS746G/a1/apache_conceptual_arch.html">. An overview of the Apache architecture can be found <url name="here" url="http://www.grad.math.uwaterloo.ca/~oadragoi/CS746G/a1/apache_conceptual_arch.html">.
@ -361,15 +365,15 @@ checkout the <url name="Apache development site" url="http://dev.apache.org">.
<!-- <sect>Configuring Apache --> <!-- <sect>Configuring Apache -->
<sect>Apache books <sect>Apache books
<p> <p>
A comprehensive list of Apache books can be found at<url A comprehensive list of Apache books can be found <url
url="http://www.apache.org/info/apache_books.html" name="here">. url="http://httpd.apache.org/info/apache_books.html" name="here">.
<p>A couple of books <p>A couple of books
that I personally recommend are: that I personally recommend are:
<itemize> <itemize>
<item><url url="http://www.modperl.com" <item><url url="http://www.modperl.com"
name="Writing Apache Modules with Perl and C"> if you are interested in Apache name="Writing Apache Modules with Perl and C"> if you are interested in Apache
internals. internals.
<item><url name="Apache server for dummies" url="http://apache-server.com/"> <item><url name="Apache server for dummies" url="http://apache-server.com/ForDummies/">
if you want to get started with Apache. Do not get fooled by the name. This is if you want to get started with Apache. Do not get fooled by the name. This is
a comprehensive book packed with useful information. a comprehensive book packed with useful information.
</itemize> </itemize>
@ -393,7 +397,7 @@ time all Java projects will move under the Jakarta umbrella.
<p><em>The goal of the Jakarta Project is to provide commercial-quality <p><em>The goal of the Jakarta Project is to provide commercial-quality
server solutions based on the Java Platform that are developed in an server solutions based on the Java Platform that are developed in an
open and cooperative fashion.</em> open and cooperative fashion.</em>
<p>The Java on Apache community is a very dynamic and active one, as shows <p>The Java on Apache community is a very dynamic and active one, as shown by
the quantity and quality of its subprojects, which are described now. the quantity and quality of its subprojects, which are described now.
<sect1>Ant <sect1>Ant
@ -426,28 +430,30 @@ services.</em>
Slide uses it extensively. In simple words, what Slides provides is an unified, Slide uses it extensively. In simple words, what Slides provides is an unified,
simple way to access resources and information. These resources can be stored simple way to access resources and information. These resources can be stored
in a database, the filesystem, etc. and accessed either thru a WebDAV interface in a database, the filesystem, etc. and accessed either thru a WebDAV interface
or Slide own API. or Slide's own API.
<p> <p>
You can learn more at the <url name="Slide home page" You can learn more at the <url name="Slide home page"
url="http://jakarta.apache.org/slide/index.html">. url="http://jakarta.apache.org/slide/index.html">.
<sect1>Struts <sect1>Struts
<p>Struts is an Apache project that tries to bring the Model-View-Controller <p>Struts is an Apache project that tries to bring the
(MVC) design paradigm to web development. It builds on <url name="Servlet" Model-View-Controller (MVC) design paradigm to web development. It
url="http://java.sun.com/products/servlet"> and <url name="JavaServer Pages" builds on <url name="Servlet"
url="http://java.sun.com/products/jsp"> technologies. The model part are the url="http://java.sun.com/products/servlet"> and <url name="JavaServer
Java server objects, which represent the internal estate of the application. Pages" url="http://java.sun.com/products/jsp"> technologies. The model
Enterprise Java Beans are commonly used here. The view part is constructed part is made up of Java server objects, which represent the internal
via JavaServer Pages (JSP) which are a combination of static HTML/XML and state of the application. Enterprise Java Beans are commonly used
Java. JSPs also allow the developer to define its own tags. here. The view part is constructed via JavaServer Pages (JSP), which
The controller part are servlets, which take requests (GET/POST) from the is a combination of static HTML/XML and Java. JSPs also allow the
client, perform actions on the model and update the view by providing the developer to define new tags. The controller part consists of servlets,
appropriate JSP. which take requests (GET/POST) from the client, perform actions on the
You can learn more at the <url name="Struts project pages" url="http://jakarta.apache.org/struts/index.html">. model and update the view by providing the appropriate JSP. You can
learn more at the <url name="Struts project pages"
url="http://jakarta.apache.org/struts/index.html">.
<sect1>Taglibs <sect1>Taglibs
<p>The JavaServer pages technology allows developers to provide functionality <p>The JavaServer pages technology allows developers to provide functionality
by adding custom tags. The Taglibs project intends to be a common repository by adding custom tags. The Taglibs project intends to be a common repository
for these extensions. It includes tags for common utilities (for, date), for these extensions. It includes tags for common utilities (i.e. date),
SQL database access, etc. SQL database access, etc.
<p> <p>
You can learn about TagLibs You can learn about TagLibs
@ -480,6 +486,17 @@ JavaServer Pages specifications. You can find more information <url name="here"
url="http://jakarta.apache.org/watchdog/index.html"> url="http://jakarta.apache.org/watchdog/index.html">
<sect1>JServ<label id="jserv"> <sect1>JServ<label id="jserv">
<p><em><url name="Apache JServ"
url="http://java.apache.org/jserv/index.html"> is in a maintenance
only mode at this point. This means that there will be no new official
releases and that only well tested patches are being committed. No new
features are being added. If you are looking for the latest
implementation of a Java Servlet Engine and/or Java Server Pages (JSP)
then you should consider using the <ref name="Jakarta Tomcat"
id="tomcat"> product available from the Jakarta Project.</em>
<!--
<p><em>Apache JServ is a 100% pure Java servlet engine fully compliant with the <p><em>Apache JServ is a 100% pure Java servlet engine fully compliant with the
JavaSoft java Servlet APIs 2,0 specification.(...)The result is a pure servlet JavaSoft java Servlet APIs 2,0 specification.(...)The result is a pure servlet
engine that works on any "version 1.1" Java Virtual Machine.</em> engine that works on any "version 1.1" Java Virtual Machine.</em>
@ -488,6 +505,7 @@ JServ is one of the original Java Apache projects. <ref name="Tomcat"
id="tomcat"> will be the successor of JServ once it is finished. id="tomcat"> will be the successor of JServ once it is finished.
You can learn more at the <url name="JServ home page" You can learn more at the <url name="JServ home page"
url="http://java.apache.org/jserv/index.html">. url="http://java.apache.org/jserv/index.html">.
-->
<sect1>JSSI <sect1>JSSI
<p>JSSI is an implementation of server side included in the Java language. <p>JSSI is an implementation of server side included in the Java language.
@ -503,7 +521,7 @@ inmediate visual feedback.
<p>You can see some screenshots and learn more <url name="here" <p>You can see some screenshots and learn more <url name="here"
url="http://java.apache.org/jmeter/index.html">. url="http://java.apache.org/jmeter/index.html">.
<sect1>Server Pages Foundation Classes <sect1>Server Pages Foundation Classes
<p>Is a set of libraries to help solve common problems in server side <p>SPFC is a set of libraries to help solve common problems in server side
application development. They focus on two of them: application development. They focus on two of them:
<itemize> <itemize>
<item><bf>Mixing HTML and Java</bf>: Provides a library of classes that takes <item><bf>Mixing HTML and Java</bf>: Provides a library of classes that takes
@ -528,11 +546,11 @@ to be present at the moment. You can find more information <url
name="here" url="http://java.apache.org/mod_java/index.html">. name="here" url="http://java.apache.org/mod_java/index.html">.
--> -->
<sect1>Element Construction Set <sect1>Element Construction Set
<p><em>Element Construction Set (ECS) is a JAVA API or generating elements for <p><em>Element Construction Set (ECS) is a JAVA API for generating elements for
various markup languages it directly supports HTML 4.0 and XML, but can various markup languages. It directly supports HTML 4.0 and XML, but can
easily be extended to create tags for any markup language.</em> easily be extended to create tags for any markup language.</em>
<p>It allows the generation of mark up tags using Java function calls, <p>It allows the generation of mark up tags using Java function calls,
leading to a much cleaner solution that mixing HTML and Java code. leading to a much cleaner solution than mixing HTML and Java code.
You can learn more at the <url name="ECS project page" You can learn more at the <url name="ECS project page"
url="http://java.apache.org/ecs/index.html">. url="http://java.apache.org/ecs/index.html">.
<sect1>Avalon <sect1>Avalon
@ -549,13 +567,13 @@ server side Java projects can be easily integrated and build on each other.
mail engine solution based on currently available open protocols (SMTP, POP3, mail engine solution based on currently available open protocols (SMTP, POP3,
IMAP, HTTP)</em> IMAP, HTTP)</em>
<p>More information can be found <url name="here" <p>More information can be found <url name="here"
url="http://java.apache.org/james/index.html">. url="http://jakarta.apache.org/james/index.html">.
<sect1>PicoServer <sect1>PicoServer
<p>A lightweight HTTP/1.0 server in pure Java. The project seems to be stalled <p>A lightweight HTTP/1.0 server in pure Java. The project seems to be stalled
and no code is available. The website can be found <url name="here" and no code is available. The website and CVS are no longer available.
url="http://java.apache.org/picoserver/index.html">. <!-- can be found <url name="here" url="http://java.apache.org/picoserver/index.html">. -->
<sect1>Jetspeed <sect1>Jetspeed
<p><url name="Jetspeed" url="http://java.apache.org/jetspeed/site/overview.html"> <p><url name="Jetspeed" url="http://jakarta.apache.org/jetspeed/site/index.html">
is a web based portal written in Java. It has a modular API that is a web based portal written in Java. It has a modular API that
allows aggregation of different data sources (XML, SMTP, iCalendar) allows aggregation of different data sources (XML, SMTP, iCalendar)
@ -568,7 +586,7 @@ allows aggregation of different data sources (XML, SMTP, iCalendar)
<p><em>Turbine is a servlet based framework that allows experienced Java developers <p><em>Turbine is a servlet based framework that allows experienced Java developers
to quickly build secure web applications</em>. Turbine brings together a platform to quickly build secure web applications</em>. Turbine brings together a platform
for running Java code <em>and</em> reusable components, everything under the Apache for running Java code <em>and</em> reusable components, everything under the Apache
license. Some of it features license. Some of its features include:
<itemize> <itemize>
<item>Integration with template systems <item>Integration with template systems
<item>MVC style development <item>MVC style development
@ -577,7 +595,7 @@ license. Some of it features
<item>etc. <item>etc.
</itemize> </itemize>
If you are interested, you can visit the <url name="Turbine web site" If you are interested, you can visit the <url name="Turbine web site"
url="http://java.apache.org/turbine/features.html">. url="http://java.apache.org/turbine">.
<sect1>Jyve <sect1>Jyve
<p>The <url name="Jyve project" url="http://java.apache.org/jyve/index.html"> is <p>The <url name="Jyve project" url="http://java.apache.org/jyve/index.html"> is
@ -627,9 +645,11 @@ Apache provides the tools described in the following sections.
<p> <p>
The Xerces project provides XML parsers for a variety of languages, including The Xerces project provides XML parsers for a variety of languages, including
Java, C++ and Perl. The Perl bindings are based on the C++ sources. Java, C++ and Perl. The Perl bindings are based on the C++ sources.
There are Tcl bindings for Xerces in the 2.0 version of <url name="TclXML" url="http://www.zveno.com/">, by Steve Ball. This 2.0 version is only available at There are Tcl bindings for Xerces in the 2.0 version of <url
the moment thru <url name="Ajuba CVS repository" url="http://dev.ajubasolutions.com/software/tcltk/netcvs.html">. name="TclXML" url="http://tclxml.sourceforge.net/">, by Steve
A XML parser is a tool used for programatic access to XML documents. Ball. This 2.0 version is available thru the <url name="SourceForge"
url="http://sourceforge.net/projects/tclxml"> project page.
An XML parser is a tool used for programatic access to XML documents.
This is a description of the standards supported by Xerces: This is a description of the standards supported by Xerces:
<itemize> <itemize>
<item><url name="DOM" url="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html">: DOM stands for Document Object Model. XML documents <item><url name="DOM" url="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html">: DOM stands for Document Object Model. XML documents
@ -651,7 +671,7 @@ document (semantics). It allows to define that a certain element in the
document must be an integer between 10 and 20, etc. document must be an integer between 10 and 20, etc.
</itemize> </itemize>
The Xerces XML project initial code base was donated by IBM. You can find more The Xerces XML project initial code base was donated by IBM. You can find more
information in the <url name="Xerces Java" url="http://xml.apache.org/xerces-j/index.html">, <url name="Xerces C" url="http://xml.apache.org/xerces-c/index.html"> and <url name="Xerces Perl" url="http://xml.apache.org/xerces-p/index.html"> homepages. information in the <url name="Xerces Java" url="http://xml.apache.org/xerces-j/index.html">, <url name="Xerces C++" url="http://xml.apache.org/xerces-c/index.html"> and <url name="Xerces Perl" url="http://xml.apache.org/xerces-p/index.html"> homepages.
<sect1>Xalan <sect1>Xalan
<p> <p>
@ -661,9 +681,9 @@ is good at storing structured data (information). We sometimes need to
display this data to the user or apply some other transformation. display this data to the user or apply some other transformation.
Xalan takes the original XML document, reads transformation configuration Xalan takes the original XML document, reads transformation configuration
(stylesheet) and outputs HTML, plain text or another XML document. (stylesheet) and outputs HTML, plain text or another XML document.
You can learn more about Xalan at the <url name="Xalan Java" url="http://xml.apache.org/xalan/index.html"> and <url name="Xalan C" url="http://xml.apache.org/xalan-c/index.html"> project homepages. You can learn more about Xalan at the <url name="Xalan Java" url="http://xml.apache.org/xalan-j/index.html"> and <url name="Xalan C++" url="http://xml.apache.org/xalan-c/index.html"> project homepages.
<sect1>FOP <sect1>FOP
<p>From the website <em>FOP is a Java application that reads a formatting <p>From the website: <em>FOP is a Java application that reads a formatting
object tree and then turns it into a PDF document</em>. So FOP takes an object tree and then turns it into a PDF document</em>. So FOP takes an
XML document and outputs PDF, in a similar way that Xalan does with HTML XML document and outputs PDF, in a similar way that Xalan does with HTML
or text. You can learn more about FOP <url name="here" or text. You can learn more about FOP <url name="here"
@ -692,13 +712,13 @@ You can learn more about Cocoon at the <url name="project homepage" url="http://
<sect1>Xang <sect1>Xang
<p>The goal of the Xang project is <em>make it easy for developers to build <p>The goal of the Xang project is to <em>make it easy for developers to build
commercial quality XML aware applications for the Web.</em> The application commercial quality XML aware applications for the Web.</em> The application
logic is defined in a hierarchical XML file which can be scripted via logic is defined in a hierarchical XML file which can be scripted via
JavaScript. This file defines how to access the data (which can be other XML JavaScript. This file defines how to access the data (which can be other XML
files, Java plug-ins, etc.). The Xang engine takes care of mapping HTTP files, Java plug-ins, etc.). The Xang engine takes care of mapping HTTP
requests to the appropriate handlers. requests to the appropriate handlers.
You can learn more about Xang at the <url name="project homepage" url="http://xml.apache.org/xang/samples.html">. You can learn more about Xang at the <url name="project homepage" url="http://xml.apache.org/xang">.
<!--include source code for hello world?--> <!--include source code for hello world?-->
<sect1>SOAP <sect1>SOAP
<p><em>Apache SOAP ("Simple Object Access Protocol") is an implementation of <p><em>Apache SOAP ("Simple Object Access Protocol") is an implementation of
@ -711,16 +731,18 @@ XML based protocol that consists of three parts</em>:
<item><em>An envelope that defines a framework for describing what is in a <item><em>An envelope that defines a framework for describing what is in a
message and how to process it</em>, message and how to process it</em>,
<item><em>a set of encoding rules for expressing instances of <item><em>a set of encoding rules for expressing instances of
application-defined datatypes</em>, application-defined datatypes</em>, and
<item><em>and a convention for representing remote procedure calls and <item><em>a convention for representing remote procedure calls and
responses</em>. responses</em>.
</itemize> </itemize>
Think of SOAP as an XML based remote procedure call or CORBA system. It is Think of SOAP as an XML based remote procedure call or CORBA
based on HTTP and XML. In one hand this means it is verbose and slow compared system. It is based on HTTP and XML. On the one hand this means it is
to other systems. On the other hand it eases interoperatibility, debugging and verbose and slow compared to other systems. On the other hand it eases
development of clients and servers for a variety of languages (C, Java, interoperatibility, debugging and development of clients and servers
, Perl, Python, Tcl, etc.) since most modern languages have HTTP and XML for a variety of languages (C, Java, , Perl, Python, Tcl, etc.) since
modules. You can learn more at the <url name="Apache SOAP homepage" url="http://xml.apache.org/soap/"> most modern languages have HTTP and XML modules. You can learn more at
the <url name="Apache SOAP homepage"
url="http://xml.apache.org/soap/">
<p>Related talk <p>Related talk
<itemize> <itemize>
<item>W02: Rub-a-dub-dub-dubya: SOAP and the Web <item>W02: Rub-a-dub-dub-dubya: SOAP and the Web
@ -740,7 +762,7 @@ framework thru custom tags and it allows conversion from SVG to other formats li
</itemize> </itemize>
<sect1> Crimson <sect1> Crimson
<p> It is an alternative, Java-based, XML parser with support for XML 1.0 thru a variety <p> Crimson is an alternative, Java-based, XML parser with support for XML 1.0 thru a variety
of interfaces. It is the parser currently shipping in Sun products, and an intermediate of interfaces. It is the parser currently shipping in Sun products, and an intermediate
step until the version 2 of Xerces is released. step until the version 2 of Xerces is released.
<p><url name="Crimson homepage" url="http://xml.apache.org/crimson/index.html"> <p><url name="Crimson homepage" url="http://xml.apache.org/crimson/index.html">
@ -754,11 +776,12 @@ step until the version 2 of Xerces is released.
<p>There are other projects based on Apache and XML that do not live under the <p>There are other projects based on Apache and XML that do not live under the
Apache XML umbrella Apache XML umbrella
<itemize> <itemize>
<item><url name="mod_xslt" url="http://modxslt.userworld.com/">. <item><url name="mod_xslt" url="http://modxslt.sourceforge.net/"> is a C
It is a C based module for delivering XML/XSL based content. It has a GPL license. based module for delivering XML/XSL based content. It has a GPL
<item><url name="AxKit" url="http://axkit.org"><label id="axkit"> is an XML based license.
Application Server for mod_perl and Apache. It allows separation of content and <item><url name="AxKit" url="http://axkit.org"> <label id="axkit"> is
presentation. an XML based Application Server for mod_perl and Apache. It allows
separation of content and presentation.
</itemize> </itemize>
<p>Related talk <p>Related talk
@ -770,7 +793,7 @@ presentation.
<p>Perl and Apache make a powerful and popular combination. There are several projects <p>Perl and Apache make a powerful and popular combination. There are several projects
that use these two technologies. that use these two technologies.
<sect1>Embperl <sect1>Embperl
<p>Allows embedding of Perl in HTML pages. These pages are processed in the server <p>Embperl allows embedding of Perl in HTML pages. These pages are processed in the server
before they are delivered to the client. It is similar to <ref name="PHP" id="php">. before they are delivered to the client. It is similar to <ref name="PHP" id="php">.
You can learn more <url name="here" url="http://perl.apache.org/embperl/index.html">. You can learn more <url name="here" url="http://perl.apache.org/embperl/index.html">.
<sect1>Mason <sect1>Mason
@ -778,21 +801,25 @@ You can learn more <url name="here" url="http://perl.apache.org/embperl/index.ht
with a reusable component model approach. It allows caching, templating, etc. with a reusable component model approach. It allows caching, templating, etc.
<sect1>Mod_Perl<label id="mod_perl"> <sect1>Mod_Perl<label id="mod_perl">
<p> <p>
Mod_perl is one of the most veteran and successful Apache projects. It embeds a Perl interpreter <url name="mod_perl" url="http://perl.apache.org/"> is one of the most
in Apache and allows access to the web server internals from Perl. This allows for entire modules veteran and successful Apache projects. It embeds a Perl interpreter
to be written in Perl or a mixture of Perl and C code. in Apache and allows access to the web server internals from
In the 1.3 Apache versions, one interpreter has to be embedded in each child, since the server is multiprocess based. Perl. This allows for entire modules to be written in Perl or a
In heavy traffic dynamic sites, the increased size could make a difference. mixture of Perl and C code. In the 1.3 Apache versions, one
Apache 2.0 is multithreadeded, as recent versions of Perl are. The next generation of mod_perl takes advantage of this interpreter has to be embedded in each child, since the server is
and allows for sharing of code, data and session state among interpreters. This results in a faster, leaner solution. multiprocess based. In heavy traffic dynamic sites, the increased
size could make a difference. Apache 2.0 is multithreaded, as recent
versions of Perl are. The next generation of mod_perl takes advantage
of this and allows for sharing of code, data and session state among
interpreters. This results in a faster, leaner solution.
<p> <p>
Make sure you check also <ref id="axkit" name="Axkit"> Make sure you also check <ref id="axkit" name="axkit">
<sect>PHP<label id="php"> <sect>PHP<label id="php">
<p>From the <url name="PHP website" url="http://www.php.net"> website: <p>From the <url name="PHP" url="http://www.php.net"> website:
<em>PHP is a server-side, cross-platform, HTML embedded scripting <em>PHP is a server-side, cross-platform, HTML embedded scripting
language.</em> PHP is a scripting language like Perl, Python or Tcl. It is language.</em> PHP is a scripting language like Perl, Python or Tcl. It is
the <url name="most popular module for Apache" url="http://www.securityspace.com/s_survey/data/man.200102/apachemods.html"> and this is due to a variety the <url name="most popular module for Apache" url="http://www.securityspace.com/s_survey/data/man.200102/apachemods.html"> and this is due to a variety
@ -826,7 +853,7 @@ Since PHP works:
<itemize> <itemize>
<item>with Apache and with Microsoft IIS <item>with Apache and with Microsoft IIS
<item>with mySQL and with MS-SQL server <item>with mySQL and with MS-SQL server
<item>on Unix an on Windows <item>on Unix and on Windows
</itemize> </itemize>
you have a nice migration path from a Microsoft-centric solution to more you have a nice migration path from a Microsoft-centric solution to more
secure, stable, high performance Unix based solutions (like <url name="FreeBSD" secure, stable, high performance Unix based solutions (like <url name="FreeBSD"
@ -846,7 +873,7 @@ Several modules embed Python in the Apache web server:
runs both in Apache 1.3.x and the upcoming 2.0 runs both in Apache 1.3.x and the upcoming 2.0
</itemize> </itemize>
Both modules would be useful if you plan on writing Apache modules in Python Both modules would be useful if you plan on writing Apache modules in Python
or run existing Python CGIs faster. Mod Snake allows to embed Python in HTML or run existing Python CGIs faster. Mod Snake allows you to embed Python in HTML
, much like <ref name="PHP" id="php"> does. , much like <ref name="PHP" id="php"> does.
<p>Related talk: <p>Related talk:
@ -858,19 +885,19 @@ or run existing Python CGIs faster. Mod Snake allows to embed Python in HTML
<p>The <url name="Tcl Apache project" url="http://tcl.apache.org"> integrates <p>The <url name="Tcl Apache project" url="http://tcl.apache.org"> integrates
Tcl with the Apache webserver. Tcl is a lightweight, extensible Tcl with the Apache webserver. Tcl is a lightweight, extensible
scripting language. You can learn more about Tcl <url scripting language. You can learn more about Tcl <url
url="http://dev.ajubasolutions.com/" name="here">. url="http://tcl.activestate.com/" name="here">.
There are several modules currently under the Apache Tcl umbrella: There are several modules currently under the Apache Tcl umbrella:
<itemize> <itemize>
<item><url name="Mod_dtcl" url="http://tcl.apache.org/mod_dtcl/"> allows for embedding Tcl on HTML pages like <item><url name="Mod_dtcl" url="http://tcl.apache.org/mod_dtcl/"> allows for embedding Tcl on HTML pages like
<ref name="PHP" id="php"> does. <ref name="PHP" id="php"> does.
<item><url name="Neowebscript" url="http://tcl.apache.org/neowebscript/"> takes a similar approach <item><url name="Neowebscript" url="http://tcl.apache.org/neowebscript/"> takes a similar approach
<item><url name="Mod_tcl" url="http://www.fractal.net/mod_tcl.tm/"> takes an approach similar <item><url name="Mod_tcl" url="http://tcl.apache.org/mod_tcl/mod_tcl.html"> takes an approach similar
to mod_perl and runs both in 1.3.x and 2.x versions of Apache. to mod_perl and runs both in 1.3.x and 2.x versions of Apache.
</itemize> </itemize>
Other Tcl Apache project can be found at <url name="WebSH" url="http://websh.com/">. Other Tcl Apache projects can be found at <url name="WebSH" url="http://websh.com/">.
<sect>Modules for other languages <sect>Modules for other languages
<p>This document have described modules for popular server side languages <p>This document has described modules for popular server side languages
such as Perl, Python, PHP. You can find additional language modules (JavaScript, Haskell, etc.) such as Perl, Python, PHP. You can find additional language modules (JavaScript, Haskell, etc.)
at the <url name="Apache modules directory" url="http://modules.apache.org">. at the <url name="Apache modules directory" url="http://modules.apache.org">.
@ -885,7 +912,7 @@ If a thread misbehaves it can corrupt other threads and the server as a whole
can go down. On the other hand, the thread model allows for faster, leaner can go down. On the other hand, the thread model allows for faster, leaner
webservers. Apache 2.0 brings the best of both worlds, allowing the user to define webservers. Apache 2.0 brings the best of both worlds, allowing the user to define
number of processes and number of threads per process. Apache 2.0 introduces number of processes and number of threads per process. Apache 2.0 introduces
APR, the Apache Portable Runtime, which increases even more Apache's portability. APR, the Apache Portable Runtime, which increases Apache's portability even more.
Finally, layered I/O brings a new level of modularity to Apache development. Finally, layered I/O brings a new level of modularity to Apache development.
@ -895,8 +922,8 @@ Finally, layered I/O brings a new level of modularity to Apache development.
Nearly all the other server side technologies (Java, Perl, CGIs) should be portable with little Nearly all the other server side technologies (Java, Perl, CGIs) should be portable with little
or no change. or no change.
Netscape is tightly integrated with LDAP servers. You may be also interested in LDAP modules in <htmlurl url="http://modules.apache.org">. Netscape is tightly integrated with LDAP servers. You may be also interested in LDAP modules in <htmlurl url="http://modules.apache.org">.
Netscape includes server side JavaScript support, you can check the Apache equivalent, <url name="mod_javascript" <!-- Netscape includes server side JavaScript support; you can check the Apache equivalent, <url name="mod_javascript"
url="http://www.geocities.com/TimesSquare/Fortress/9743/binjs.html">. url="http://www.geocities.com/TimesSquare/Fortress/9743/binjs.html">. -->
<sect>Migrating from Microsoft IIS <sect>Migrating from Microsoft IIS
<p>Common reasons why people migrate from IIS to Apache (and not the other way around) include <p>Common reasons why people migrate from IIS to Apache (and not the other way around) include
@ -906,15 +933,15 @@ on both Unix and Windows, offering a sensible migration path.
<p>Common Windows based web development environments like Coldfusion or Active Server Pages <p>Common Windows based web development environments like Coldfusion or Active Server Pages
have Unix ports or compatible environments (some are commmercial, some are freely available): have Unix ports or compatible environments (some are commmercial, some are freely available):
<itemize> <itemize>
<item><url name="Coldfusion for Linux" url="http://www.allaire.com/Products/coldfusion/"> <item><url name="Coldfusion for Linux" url="http://www.macromedia.com/software/coldfusion/">
<item><url name="Perl ASP module" url="http://www.apache-asp.org/"><label id="perlasp"> <item><url name="Perl ASP module" url="http://www.apache-asp.org/"><label id="perlasp">
<item><url name="Halcyon ASP" url="http://www.halcyonsoft.com/"> <item><url name="Halcyon ASP" url="http://www.halcyonsoft.com/">
<item><url name="OpenASP" url="http://www.activescripting.org/"> <!-- <item><url name="OpenASP" url="http://www.activescripting.org/"> -->
</itemize> </itemize>
Apache for Windows supports also the ISAPI interface. Apache for Windows supports also the ISAPI interface.
<p>If you want to go for a complete open source solution and you come from a Windows background ( <p>If you want to go for a complete open source solution and you come from a Windows background (
IIS + ASP + MS-SQL server) the roughly equivalent (and highly popular) combination is Apache + PHP IIS + ASP + MS-SQL server) the roughly equivalent (and highly popular) combination is Apache + PHP
+ <url name="MySQl" url="http://www.mysql.com"> or <url name="PostgresSQL" url="http://www.postgresql.org">. + <url name="MySQL" url="http://www.mysql.com"> or <url name="PostgresSQL" url="http://www.postgresql.org">.
You can learn more about PHP <ref name="here" id="php"> You can learn more about PHP <ref name="here" id="php">
<p>Support for Windows is greatly improved in the new 2.0 Apache version, still in beta stage at the time of this writing. <p>Support for Windows is greatly improved in the new 2.0 Apache version, still in beta stage at the time of this writing.
@ -942,8 +969,8 @@ well with Apache.
<item><url name="Resin" url="http://www.caucho.com/">: Servlets, JSP, XSL <item><url name="Resin" url="http://www.caucho.com/">: Servlets, JSP, XSL
<item><url name="Enhydra" url="http://www.enhydra.com/">: Java/XML application <item><url name="Enhydra" url="http://www.enhydra.com/">: Java/XML application
server. server.
<item><url name="Locomotive" url="http://www.locomotive.org/">: Servlets, <!-- <item><url name="Locomotive" url="http://www.locomotive.org/">: Servlets,
load balancing, failover. load balancing, failover. -->
<item><url name="JBoss" url="http://www.jboss.org/">: Enterprise Java Beans container, J2EE <item><url name="JBoss" url="http://www.jboss.org/">: Enterprise Java Beans container, J2EE
</itemize> </itemize>
@ -953,12 +980,12 @@ and corrections, but please, please, do not send me messages asking me to
troubleshoot your Apache installation. I just do not have the bandwidth and your troubleshoot your Apache installation. I just do not have the bandwidth and your
mail will be most likely ignored. If you need support: mail will be most likely ignored. If you need support:
<itemize> <itemize>
<item>Check the error logs, read the docs, specially the <url name="FAQ" url="http://www.apache.org/docs/misc/FAQ.html">. <item>Check the error logs, read the docs, especially the <url name="FAQ" url="http://www.apache.org/docs/misc/FAQ.html">.
<item>Try comp.infosystems.www.servers.unix at <htmlurl url="http://www.deja.com">. <item>Try comp.infosystems.www.servers.unix at <htmlurl url="http://groups.google.com">.
Search for a similar problem. Search for a similar problem.
<item>If you are still stuck. Provide as much information as you can, <item>If you are still stuck, provide as much information as you can,
relevant error_log entries and steps you have taken so far and post to that including relevant error_log entries and steps you have taken so far, and post to that
newsgroup. This will increase the chances someone will answer your question newsgroup. This will increase the chances someone will answer your question.
</itemize> </itemize>
<p>If you want commercial support, consider contacting <url name="Covalent" <p>If you want commercial support, consider contacting <url name="Covalent"
url="http://www.covalent.net">, which provides expert support for Apache (at a fee, url="http://www.covalent.net">, which provides expert support for Apache (at a fee,
@ -968,7 +995,7 @@ plans that include Apache too.
<sect1>Translations <sect1>Translations
<p>If you want to contribute a translation of this document you should use <p>If you want to contribute a translation of this document you should use
the SGML source. Check <htmlurl url="http://www.linuxdoc.org"> for info. the SGML source. Check <htmlurl url="http://www.linuxdoc.org"> for info.
Please drop me a note so I can make sure you get the most recent version Please drop me a note so I can make sure you get the most recent version.
<!--<sect>Other web servers--> <!--<sect>Other web servers-->
</article> </article>