Differences between current version and revision by previous author of HowToApacheOverviewHOWTO.
Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History
Newer page: | version 3 | Last edited on Thursday, October 21, 2004 5:05:27 pm | by AristotlePagaltzis | |
Older page: | version 2 | Last edited on Friday, June 7, 2002 1:05:30 am | by perry | Revert |
@@ -1,2322 +1 @@
-
-
-
-Apache Overview HOWTO
-
-
-
-----
-
-!!!Apache Overview HOWTO
-
-!!Daniel Lopez Ridruejo, ridruejo@apache.org v0.7, 2002-02-28
-
-
-----
-''This document gives you an overview of the Apache webserver and
-related projects. It provides pointers for further information and
-implementation details.''
-----
-
-
-
-
-!!1. Introduction
-
-
-
-
-!!2. Apache
-
-
-
-
-!!3. Apache Software Foundation
-
-
-
-
-!!4. Developing web applications with Apache
-
-
-*4.1 Static Content
-
-*4.2 Dynamic content
-
-*4.3 CGI scripts
-
-*4.4 Site generators
-
-*4.5 Out of process servers
-
-*4.6 Fast CGI
-
-*4.7 Java servlets
-
-*4.8 Embeded interpreters
-
-
-
-
-
-!!5. Performance and bandwidth management
-
-
-
-
-!!6. Virtual hosting
-
-
-
-
-!!7. Load balancing
-
-
-
-
-!!8. Secure transactions
-
-
-
-
-!!9. SNMP
-
-
-
-
-!!10. Authentication modules
-
-
-
-
-!!11. GUIs for Apache
-
-
-
-
-!!12. Writing Apache modules
-
-
-
-
-!!13. Apache books
-
-
-
-
-!!14. WebDAV
-
-
-
-
-!!15. Java projects
-
-
-*15.1 Ant
-
-*15.2 ORO and Regexp
-
-*15.3 Slide
-
-*15.4 Struts
-
-*15.5 Taglibs
-
-*15.6 Tomcat
-
-*15.7 Velocity
-
-*15.8 Watchdog
-
-*15.9 JServ
-
-*15.10 JSSI
-
-*15.11 Apache JMeter
-
-*15.12 Server Pages Foundation Classes
-
-*15.13 Element Construction Set
-
-*15.14 Avalon
-
-*15.15 JAMES (Java Apache Mail Enterprise Server)
-
-*15.16 !PicoServer
-
-*15.17 Jetspeed
-
-*15.18 Turbine
-
-*15.19 Jyve
-
-*15.20 Alexandria
-
-*15.21 Log4j
-
-
-
-
-
-!!16. XML projects
-
-
-*16.1 Introduction to XML
-
-*16.2 Xerces
-
-*16.3 Xalan
-
-*16.4 FOP
-
-*16.5 Cocoon
-
-*16.6 Xang
-
-*16.7 SOAP
-
-*16.8 Batik
-
-*16.9 Crimson
-
-*16.10 Other XML projects
-
-
-
-
-
-!!17. Perl
-
-
-*17.1 Embperl
-
-*17.2 Mason
-
-*17.3 Mod_Perl
-
-
-
-
-
-!!18. PHP
-
-
-
-
-!!19. Python
-
-
-
-
-!!20. Tcl
-
-
-
-
-!!21. Modules for other languages
-
-
-
-
-!!22. Apache 2.
-
-
-
-
-!!23. Migrating from Netscape (iPlanet) web servers
-
-
-
-
-!!24. Migrating from Microsoft IIS
-
-
-
-
-!!25. Links
-
-
-*25.1 Websites
-
-*25.2 Java application servers
-
-
-
-
-
-!!26. Contacting the author
-
-
-*26.1 Translations
-
-
-
-
-
-!!27. Open Content Open Publication License
-
-
-*27.1 REQUIREMENTS ON BOTH UNMODIFIED AND MODIFIED VERSIONS
-
-*27.2 COPYRIGHT
-
-*27.3 SCOPE OF LICENSE
-
-*27.4 REQUIREMENTS ON MODIFIED WORKS
-
-*27.5 GOOD-PRACTICE RECOMMENDATIONS
-
-*27.6 LICENSE OPTIONS
-
-----
-
-!!1. Introduction
-
-
-This document gives you an overview of the Apache web server and
-related projects. Apache is the
-most popular server on the Internet. New Apache users,
-especially those coming from a Windows background, are often unaware
-of the possibilities of Apache, its useful addons and, more in
-general, how everything works together. This document aims to show a
-general picture of such possibilities with a brief description of each
-one and pointers for further information. The information has been
-gathered from many sources, including projects' web pages, conference
-talks, mailing lists, Apache websites and my own hands-on
-experience. Full credit is given to these authors. Without them and
-their work, this document would not have been possible or necessary.
-
-
-Disclaimer: I work for
-Covalent. We provide products and support
-services for the Apache webserver, and I mention some of them
here, as
-I do for our competitors and similar open source projects.
-
-
-If you find typos, errors, or if you have suggestions for improvement
-or comments, please let me know so I can correct the document.
-
-
-
-
-
-Copyright 2002 Daniel Lopez Ridruejo
-
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the Open Content Open Publication License, Version
-1.1. A copy of the license is included in the appendix entitled "Open
-Content Open Publication License", or at www.opencontent.org/openpub/.
-
-
-
-----
-
-!!2. Apache
-
-
-Apache is the leading internet web server, with over 60% market share, according
-to the
-Netcraft survey.
-Several key factors have contributed to Apache's success:
-
-
-*The
-Apache license. It is
-an open source, BSD-like license that allows for both commercial and non-commercial
-uses of Apache.
-*
-
-*Talented community of
-developers
-with a variety of backgrounds and an open development process based on technical merits.
-*
-
-*Modular architecture. Apache users can easily add functionality or tailor Apache to their
-specific enviroment.
-*
-
-*Portable: Apache runs on nearly all flavors of Unix (and Linux), Windows, !BeOs, mainframes...
-*
-
-*Robustness and security
-*
-
-Many commercial vendors have adopted Apache-based solutions for their products, including
-Oracle,
-Red Hat and
-IBM.
-In addition,
-Covalent provides add-on modules and 24x7 support for Apache.
-
-
-The following websites use Apache or derivatives. Chances are that if Apache
-is good enough for them, it is also good enough for you :)
-
-
-*
-Amazon.com
-*
-
-*
-Yahoo!
-*
-
-*
-W3 Consortium
-*
-
-*
-Financial Times
-*
-
-*
-Network solutions
-*
-
-*
-MP3.com
-*
-
-*
-Stanford
-*
-
-
-
->From the
-Apache website:
-
-
-''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. ''
-
-
-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.
-
-
-
-
-
-Related talk
-
-
-*W09: Introduction to the Apache Web Server
-*
-
-*F16: Licensing issues in commercial OSS products
-*
-
-
-
-
-----
-
-!!3. Apache Software Foundation
-
-
-''The Apache Software Foundation exists to provide organizational, legal, and financial support for the Apache open-source
-software projects. Formerly known as the Apache Group, the Foundation has been incorporated as a membership-based, not-for-profit
-corporation in order to ensure that the Apache projects continue to exist beyond the participation of individual volunteers, to
-enable contributions of intellectual property and funds on a sound basis, and to provide a vehicle for limiting legal exposure
-while participating in open-source software projects. ''
-
-
-Or, as Roy T. Fielding, the chairman of the ASF describes it:
-''The mission of the Apache Software Foundation is to facilitate and support
-collaborative software development projects that use the Apache methods of
-collaboration over the Internet to create, maintain, and extend the infrastructure
-of the Web and enforce the standards that define it.''
-
-
-You can learn more about the foundation
-here.
-
-
-
-----
-
-!!4. Developing web applications with Apache
-
-
-There are several ways of providing content with Apache.
-
-
-
-
-
-Related talk
-
-
-*W07: Web Application Technologies - surveying the landscape
-*
-
-
-
-
-
-!!4.1 Static Content
-
-
-
-Apache can serve static content, like HTML files, images, etc.
-If this is all you need, Apache is probably right for you.
-A low end Pentium running Linux and Apache can easily saturate a 10Mbps
-line serving static content. If that is your primary use of Apache, make
-sure you also check the
-performance section.
-
-!!4.2 Dynamic content
-
-
-
-For many websites, the information changes constantly and pages need to
-be updated periodically or generated on the fly. This is what server side
-programming is all about: programming languages, tools and frameworks that
-help developers query and modify information from different sources (databases,
-directory services, customer records, other websites) and deliver the content
-to the user.
-
-!!4.3 CGI scripts
-
-
-
-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
-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 to the client.
-
-
-''Pros'': Since it is an external program, it can be coded in any
-language. The same script will also be portable among different web
-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
-plenty of online and book references and examples.
-
-
-''Cons'': Spawning and initializing a process takes time. Since a
-CGI script is external to the server and an instance has to be
-launched/destroyed for every request there is a performance hit. If
-the process has to load external libraries or perform a connection to
-an external database the delay can be important. Same thing if the
-number of hits per second is high. CGIs are stateless and session
-management has to be achieved by external means.
-
-
-Since CGI usually involves heavy text manipulation, scripting languages are
-the natural choice. Part of
-Perl's
-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
-of freely available CGI scripts and libraries. A good starting point is:
-the Open Directory CGI section
-!!4.4 Site generators
-
-
-
-If your site is high volume, you may run into performance problems
-when generating content dynamically. Offline content generators are an
-alternative. These solutions separate content from presentation. The
-HTML generator reads both content and presentation data and outputs
-the static files that build the website. The generator can be run
-periodically or triggered by content changes.
-
-
-Future versions of
-Cocoon
-plan on having a batch mode to accomplish this. Another option is the
-Web site meta language.
-
-!!4.5 Out of process servers
-
-
-
-The web server can pass dynamic requests to another program. This program
-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
-associated with CGI scripts. Examples of this approach are
-Fast CGI,
-Java servlets, etc.
-
-!! 4.6 Fast CGI
-
-
-
-This standard was developed to address some shortcomings of the CGI
-protocol. The main improvement is that a single spawned process can process
-more than one request. There is an Apache module that implements the Fast CGI
-protocol and libraries for Tcl, Perl etc. More information at
-http://www.fastcgi.com
-
-
-
-
-Related talk
-
-
-*F18: FastCGI -- The forgotten treasure
-*
-
-
-
-
-
-!! 4.7 Java servlets
-
-
-
-To provide Java
-servlets, a Java virtual machine (in a process separate from the web
-server) processes requests. The JVM can reside in the same computer or
-in a different one. This is how many application servers work. Usually
-standard libraries are included for server side processing.
-JServ and
-Tomcat are
-Apache projects that provide this functionality. Related Java
-application server projects can be found
-here
-
-
-
-
-Related talk
-
-
-*W16: Recommendations for Java-Based Web Application Architectures
-*
-
-
-
-
-
-
-
-
-!!4.8 Embeded interpreters
-
-
-
-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:
-Modules that answer or modify requests directly and modules that process
-commands embedded in HTML pages before serving it to the client. The most
-representative approaches are
-mod_perl and
-PHP
-
-
-----
-
-!! 5. Performance and bandwidth management
-
-
-Raw performance is only one of the factors to consider in a web server
-(flexibility and stability come usually first).
-
-
-Having said that, there are solutions to improve performance on heavy loaded
-webservers serving static content. If you are in the hosting business
-Apache also provides ways in which you can measure and control bandwidth usage.
-Throttling in this context usually means slowing down the delivery of content
-based on the file requested, a specific client IP address, etc. This is done
-to prevent abuse.
-
-
-*__mod_mmap__: Included in current Apache releases, it maps to
-memory a statically configured list of files that are frequently requested but infrequently changed.
-*
-
-*__
-Mod_bandwidth__: ''Enables the setting of server-wide or per connection bandwidth limits, based on the specific directory,
-size of files and remote IP/domain''.
-*
-
-*__
-Bandwidth share module__: provides bandwidth throttling and balancing by client IP address. It is actively maintained.
-*
-
-*__
-Mod_throttle__:Throttle bandwidth per virtual host or user.
-*
-
-*__
-Mod_throttle_access__: useful if you are
-slashdotted. Allows throttling based on resources
-(file, directory, etc.)
-*
-
-
-
-
-----
-
-!!6. Virtual hosting
-
-
-Apache provides extensive virtual hosting support; there are additional modules that provide specific functionality:
-
-
-
-
-
-*
-mod_dynvhost
-*
-
-*
-mod_pweb
-*
-
-*
-mod_v2h
-*
-
-
-
-In addition, Apache 2.0 allows children serving different domains to have different user ids, improving security.
-
-
-
-----
-
-!!7. Load balancing
-
-
-Apache has several modules that allow distribution of requests among servers, for redundancy, increased availability, etc.
-
-
-
-
-
-*__Reverse proxying + mod_rewrite__: There is nothing in Apache that you can not do with
-mod_rewrite ... :) This technique consists of having an Apache front-end server acting
-as a proxy for the backend servers. You can find more information
-here
-*
-
-*__Mod_backhand__: ''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
-requests''. More information at
-http://www.backhand.org/.
-*
-
-
-
-
-
-
-Related talk
-
-
-*TH06: mod_backhand: Internals explained
-*
-
-
-
-
-----
-
-!!8. Secure transactions
-
-
-There are several solutions that provide secure transactions for Apache servers.
-This enables Apache servers to be used for e-commerce or other scenarios where
-sensitive information (like your credit card number) is exchanged.
-
-
-*
-Mod_ssl and
-Apache-SSL are open source
-implementations. They are European based, unencumbered by RSA patents.
-*
-
-*
-Red Hat offers a secure server derived from Apache. Red Hat acquired C2Net, makers
-of !StrongHold, another Secure server derived from Apache.
-*
-
-*
-Covalent sells secure versions of Apache as well as the CovalentSSL module that
-plugs into existing Apache installations.
-*
-
-
-
-__Credit card transactions__
-
-
-Apache specific solutions exist for credit card transactions:
-
-
-*
-Covalent credator, multiple
-clearinghouse support, failover operation, PHP, Perl, Java support.
-*
-
-
-
-
-
-
-
-
-
-
-----
-
-!!9. SNMP
-
-
-SNMP stands for Simple Network Management Protocol. It allows monitoring
-and management of network servers, equipment, etc. SNMP modules for Apache
-help manage large deployments of web servers, measure the quality of service
-offered and integration of Apache in existing management frameworks.
-
-
-*Open source
-Mod SNMP for Apache 1.3.
-*
-
-*
-Covalent SNMP provides
-a commercial SNMP module, support for the latest SNMPv3 standard, integration
-with HP-Openview, Tivoli, etc.
-*
-
-
-
-
-
-
-
-----
-
-!!10. Authentication modules
-
-
-In many situations (subscription services, sensitive information,
-private areas), user authentication is required. Apache includes basic authentication
-support. Additional authentication modules exist that connect Apache to
-existing security frameworks or databases, including: NT Domain
-controller, Oracle, mySQL, PostgresSQL, etc.
-
-
-The LDAP modules are specially interesting, as they allow integration with
-company and enterprise wide existing directory services.
-
-
-You can find these modules at
-http://modules.apache.org.
-
-
-
-
-
-
-
-
-
-----
-
-!!11. GUIs for Apache
-
-
-Apache is configured thru text configuration files. This has advantages and
-disadvantages. Management can be done from any computer that has internet
-access via
-ssh. Editing a
-configuration file by hand implies a learning curve. There are open source
-graphical tools that make this task easier:
-
-
-*
-Comanche:
-It is crossplatform and runs on Unix/Linux, Windows and Mac. Check the website
-for screenshots and in-depth information. Disclaimer: I am the main author of
-Comanche, so remember, there are no bugs, only undocumented features :)
-*
-
-*
-gui.apache.org: GUI interfaces
-for Apache project. Programs are in various degrees of development.
-*
-
-*
-Webmin: A nice
-web based interface.
-*
-
-
-
-
-----
-
-!!12. Writing Apache modules
-
-
-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
-code base.
-Source code access for Apache means that you can custom build the server with only the
-modules that you need and include your own.
-
-
-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.
-
-
-__Writing modules in C__: 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's book
-Writing Apache modules with Perl and C. 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.
-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
-tutorial and slides online.
-An overview of the Apache architecture can be found
-here.
-The Apache website has some
-API notes that can help you get started. You are also encouraged to browse the
-source code of the modules included with Apache. Apache includes a simple one
-(mod_example.c) for that purpose.
-
-
-__Writing Apache modules in other languages__: There is a variety of Apache
-modules that enable third party languages to access the internal Apache API.
-The most popular is
-mod_perl.
-
-
-If you have any questions about the development of an Apache module you
-should join the Apache modules mailing list at
-http://modules.apache.org.
-Remember to do your homework first, research past messages and check
-all the documentation previously described. Chances are somebody had the
-same problem that you are experiencing and he got an useful response.
-
-
-If you are interested in the development of core Apache itself, you should
-checkout the
-Apache development site.
-
-
-
-
-
-
-----
-
-!!13. Apache books
-
-
-A comprehensive list of Apache books can be found
-here.
-
-
-A couple of books
-that I personally recommend are:
-
-
-*
-Writing Apache Modules with Perl and C if you are interested in Apache
-internals.
-*
-
-*
-Apache server for dummies
-if you want to get started with Apache. Do not get fooled by the name. This is
-a comprehensive book packed with useful information.
-*
-
-
-
-
-----
-
-!!14. WebDAV
-
-
->From the
-WebDAV website: ''WebDAV stands for
-"Web-based Distributed Authoring and Versioning". It is a set of extensions to the HTTP protocol
-which allows users to collaboratively edit and manage files on remote web servers.''
-
-
-It is the open standards equivalent of the MS !FrontPage protocol, but it takes
-the idea several steps further. It enables other protocols to be built on top of it (See
-the
-Subversion website for an example.
-
-
-
-
-
-
-
-
-
-----
-
-!!15. Java projects
-
-
-For historical reasons, Java projects can be found both under the
-java.apache.org and jakarta.apache.org umbrellas. The final goal is that over
-time all Java projects will move under the Jakarta umbrella.
-
-
-''The goal of the Jakarta Project is to provide commercial-quality
-server solutions based on the Java Platform that are developed in an
-open and cooperative fashion.''
-
-
-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.
-
-
-
-
-!!15.1 Ant
-
-
-
-You can think of Ant as the Java equivalent of make. It is a big success
-with Java related projects. Developers can write Java instead of shell
-commands. This means increased portability and extensibility. Instead of
-Makefiles Ant has XML files.
-You can learn more about ANT
-here.
-
-
-
-
-
-Related talk
-
-
-*F19: Using Ant to build Java code
-*
-
-
-
-
-
-!!15.2 ORO and Regexp
-
-
-
-ORO is a complete package that provides regular experession support for
-Java. It includes Perl5 regular expression support, glob expressions, etc.
-All under the Apache license.
-You can learn more about ORO
-here. You can find another lightweight regular expression package,
-Regexp.
-
-!!15.3 Slide
-
-
-
-''Slide is a high-level content management framework.
-Conceptually, it provides a hierarchical organization of binary
-content which can be stored into arbitrary, heterogenous, distributed
-data stores. In addition, Slide integrates security, locking and versioning
-services.''
-
-
-If you are familiar with
-WedDAV,
-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
-in a database, the filesystem, etc. and accessed either thru a WebDAV interface
-or Slide's own API.
-
-
-You can learn more at the
-Slide home page.
-
-
-
-
-!!15.4 Struts
-
-
-
-Struts is an Apache project that tries to bring the
-Model-View-Controller (MVC) design paradigm to web development. It
-builds on
-Servlet and
-!JavaServer Pages technologies. The model
-part is made up of Java server objects, which represent the internal
-state of the application. Enterprise Java Beans are commonly used
-here. The view part is constructed via !JavaServer Pages (JSP), which
-is a combination of static HTML/XML and Java. JSPs also allow the
-developer to define new tags. The controller part consists of servlets,
-which take requests (GET/POST) from the client, perform actions on the
-model and update the view by providing the appropriate JSP. You can
-learn more at the
-Struts project pages.
-
-!!15.5 Taglibs
-
-
-
-The !JavaServer pages technology allows developers to provide functionality
-by adding custom tags. The Taglibs project intends to be a common repository
-for these extensions. It includes tags for common utilities (i.e. date),
-SQL database access, etc.
-
-
-You can learn about !TagLibs
-here.
-More documentation is included in the package.
-
-!! 15.6 Tomcat
-
-
-
-Tomcat is the flagship product of the Jakarta project.
-It is the official reference implementation for the Java
-Servlet 2.2 and !JavaServer Pages 1.1 technologies.
-
-
-You can learn more in the
-Tomcat homepage. The Tomcat project
-was started with a code donation from Sun Microsystems.
-
-
-
-
-
-
-
-
-
-
-!!15.7 Velocity
-
-
-
-''Velocity is a Java based template engine. It can be used as a
-stand-alone utility for generating source code, HTML, reports, or
-it can be combined with other systems to provide template services.''
-Velocity has a Model View Controller paradigm that enforces separation of
-Java code and the HTML template.
-
-
-You can learn more about Velocity
-here. Velocity is part of
-other projects like
-Turbine
-
-
-
-!!15.8 Watchdog
-
-
-
-The Watchdog project provides the validation tests for the Servlet and
-!JavaServer Pages specifications. You can find more information
-here
-
-
-
-!! 15.9 JServ
-
-
-
-''
-Apache JServ 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
-Jakarta Tomcat product available from the Jakarta Project.''
-
-
-
-
-
-
-
-!!15.10 JSSI
-
-
-
-JSSI is an implementation of server side included in the Java language.
-Server side includes are tags includes in files that get processed before
-the page is served to the client (for example to include the current date)
-You can find more information
-here.
-
-!!15.11 Apache JMeter
-
-
-
-''The Apache JMeter is a 100% pure Java desktop application designed to
-load test functional behavior and measure performance. It was originally
-designed for testing Web Applications but has since expanded to other test
-functions.''
-
-
-It can be used to test static and dynamic resources and get
-inmediate visual feedback.
-
-
-You can see some screenshots and learn more
-here.
-
-!!15.12 Server Pages Foundation Classes
-
-
-
-SPFC is a set of libraries to help solve common problems in server side
-application development. They focus on two of them:
-
-
-*__Mixing HTML and Java__: Provides a library of classes that takes
-care of the HTML generation and that can be integrated with the rest of the
-Java code.
-*
-
-*__HTTP is a stateless protocol__: SPFC provides session support,
-so applications can keep track of users as they navigate the website. The
-application developer does not need to worry about the specific details of
-page generation. He can think in more general traditional application terms.
-You can learn more about SPFC
-here
-*
-
-
-
-
-
-!!15.13 Element Construction Set
-
-
-
-''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
-easily be extended to create tags for any markup language.''
-
-
-It allows the generation of mark up tags using Java function calls,
-leading to a much cleaner solution than mixing HTML and Java code.
-You can learn more at the
-ECS project page.
-
-!!15.14 Avalon
-
-
-
-If you are familiar with Perl or BSD systems, Avalon is roughly the
-equivalent of
-CPAN or the Ports
-collection for Java Apache technologies. It does not only provide guidelines
-for a common repository of code, it goes one step further: ''is an effort to
-create, design, develop and maintain a common framework for server
-applications written using the Java language.'' It provides the means so
-server side Java projects can be easily integrated and build on each other.
-
-!!15.15 JAMES (Java Apache Mail Enterprise Server)
-
-
-
-Complementary to the other Apache server side technologies, JAMES provides
-''a 100% pure Java server designed to be a complete and portable enterprise
-mail engine solution based on currently available open protocols (SMTP, POP3,
-IMAP, HTTP)''
-
-
-More information can be found
-here.
-
-!!15.16 !PicoServer
-
-
-
-A lightweight HTTP/1.0 server in pure Java. The project seems to be stalled
-and no code is available. The website and CVS are no longer available.
-
-!!15.17 Jetspeed
-
-
-
-
-Jetspeed
-is a web based portal written in Java. It has a modular API that
-allows aggregation of different data sources (XML, SMTP, iCalendar)
-
-
-
-
-
-Related talk:
-
-
-*TH11: Writing an enterprise information portal with !JetSpeed
-*
-
-
-
-
-
-!! 15.18 Turbine
-
-
-
-''Turbine is a servlet based framework that allows experienced Java developers
-to quickly build secure web applications''. Turbine brings together a platform
-for running Java code ''and'' reusable components, everything under the Apache
-license. Some of its features include:
-
-
-*Integration with template systems
-*
-
-*MVC style development
-*
-
-*Access Control Lists
-*
-
-*Localization support
-*
-
-*etc.
-*
-
-If you are interested, you can visit the
-Turbine web site.
-
-
-
-
-!!15.19 Jyve
-
-
-
-The
-Jyve project is
-built on top of the Turbine framework. It is an application that provides a web
-based FAQ system
-
-!!15.20 Alexandria
-
-
-
-Alexandria is an integrated documentation management system. It brings
-together technologies common to many open source projects like CVS and !JavaDoc.
-The goal is to integrate source code and documentation to encourage code
-documentation and sharing. More information
-here
-
-
-
-
-Related talk
-
-
-*W06: An introduction to Alexandria
-*
-
-
-
-
-
-!!15.21 Log4j
-
-
-
-This package provides a logging framework that Java applications can use.
-It can be enabled at runtime without modifying the binary and has been designed
-with performance in mind. It can be found
-here
-
-
-
-
-
-----
-
-!!16. XML projects
-
-
-Directly from the Apache XML project website, its goals are:
-
-
-*''To provide commercial-quality standards-based XML solutions that
-are developed in an open and cooperative fashion.''
-*
-
-*''To provide feedback to standards bodies (such as IETF and W3C) from
-an implementation perspective.''
-*
-
-*''To be a focus for XML-related activities within Apache projects''
-*
-
-
-
-The project homepage is located at
-http://xml.apache.org.
-It is an umbrella for a variety of subprojects.
-
-!!16.1 Introduction to XML
-
-
-
-This is a quick introduction to XML. To know more about XML, a good starting
-point is
-http://www.xml.com. XML is a markup language (think
-HTML) for describing structured content using tags and attributes. Once
-content is separated from presentation, you can choose how to display
-(cellphone, html, text) or exchange it. The XML standard only describes how
-the tags and attributes can be arranged, not its names of what they mean.
-Apache provides the tools described in the following sections.
-
-
-
-
-!!16.2 Xerces
-
-
-
-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.
-There are Tcl bindings for Xerces in the 2.0 version of
-TclXML, by Steve
-Ball. This 2.0 version is available thru the
-!SourceForge 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:
-
-
-*
-DOM: DOM stands for Document Object Model. XML documents
-are hierarchical by nature (nested tags). XML documents can be accessed thru
-a tree like interface. The process is as follow:
-
-
-**Parse document
-**
-
-**Build tree
-**
-
-**add/delete/modify nodes
-**
-
-**Serialize tree
-**
-
-
-*
-
-*
-SAX:Simple API for XML. This is a stream based API. This means
-that we will receive callbacks as elements are encountered. These callbacks
-can be used to construct a DOM tree for example.
-*
-
-*
-XML Namespaces
-*
-
-*XML Schema: The XML standard provides the syntax for writing documents. XML
-Schema provides the tools for defining the ''contents'' of the XML
-document (semantics). It allows to define that a certain element in the
-document must be an integer between 10 and 20, etc.
-*
-
-The Xerces XML project initial code base was donated by IBM. You can find more
-information in the
-Xerces Java,
-Xerces C++ and
-Xerces Perl homepages.
-
-
-
-
-!!16.3 Xalan
-
-
-
-Xalan is an XSLT processor available for Java and C++.
-XSL is a style sheet language for XML. The T is for Transformation. XML
-is good at storing structured data (information). We sometimes need to
-display this data to the user or apply some other transformation.
-Xalan takes the original XML document, reads transformation configuration
-(stylesheet) and outputs HTML, plain text or another XML document.
-You can learn more about Xalan at the
-Xalan Java and
-Xalan C++ project homepages.
-
-!!16.4 FOP
-
-
-
-From the website: ''FOP is a Java application that reads a formatting
-object tree and then turns it into a PDF document''. So FOP takes an
-XML document and outputs PDF, in a similar way that Xalan does with HTML
-or text. You can learn more about FOP
-here.
-
-
-
-
-
-
-
-!! 16.5 Cocoon
-
-
-
-Cocoon leverages other Apache XML technologies like Xerces, Xalan and FOP
-to provide a comprehensive publishing framework. Cocoon is based around
-XML and XSL and targeted to sites of medium - high complexity.
-It separates content, logic and presentation as described in the website:
-
-
-*__XML creation__: ''the XML file is created by the content owners.
-They do not require specific knowledge on how the XML content is further
-processed rather than the particular chosen DTD/namespace.
-This layer is always performed by humans directly through normal text editors
-or XML-aware tools/editors.''
-*
-
-*__XML process generators__:'' the logic is separated from the content
-file.''
-*
-
-*__XSL rendering__:'' The created document is then rendered by applying an
-XSL stylesheet to it and formatting it to the specified resource type (HTML,
-PDF, XML, WML, XHTML)''
-*
-
-You can learn more about Cocoon at the
-project homepage
-
-
-
-
-
-
-
-
-
-!!16.6 Xang
-
-
-
-The goal of the Xang project is to ''make it easy for developers to build
-commercial quality XML aware applications for the Web.'' The application
-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
-files, Java plug-ins, etc.). The Xang engine takes care of mapping HTTP
-requests to the appropriate handlers.
-You can learn more about Xang at the
-project homepage.
-
-!!16.7 SOAP
-
-
-
-''Apache SOAP ("Simple Object Access Protocol") is an implementation of
-the
-SOAP submission to W3C.
-It is based on, and supersedes, the IBM SOAP4J implementation''.
-
-
-''From the draft W3C specification: SOAP is a lightweight protocol for
-exchange of information in a decentralized, distributed environment. It is an
-XML based protocol that consists of three parts'':
-
-
-*''An envelope that defines a framework for describing what is in a
-message and how to process it'',
-*
-
-*''a set of encoding rules for expressing instances of
-application-defined datatypes'', and
-*
-
-*''a convention for representing remote procedure calls and
-responses''.
-*
-
-Think of SOAP as an XML based remote procedure call or CORBA
-system. It is based on HTTP and XML. On the one hand this means it is
-verbose and slow compared to other systems. On the other hand it eases
-interoperatibility, debugging and development of clients and servers
-for a variety of languages (C, Java, , Perl, Python, Tcl, etc.) since
-most modern languages have HTTP and XML modules. You can learn more at
-the
-Apache SOAP homepage
-
-Related talk
-
-
-*W02: Rub-a-dub-dub-dubya: SOAP and the Web
-*
-
-
-
-
-
-!!16.8 Batik
-
-
-
-''Batik is a Java based toolkit for applications that want to use images in the
-Scalable Vector Graphics (SVG) format for various
-purposes, such as viewing, generation or manipulation.''
-
-
- It is XML centric and compliant with the W3C specification. It is a bit atypical from other Apache
-projects, in that it provides a graphical component. Batik provides hooks to extend the
-framework thru custom tags and it allows conversion from SVG to other formats like JPEG or PNG.
-
-
-
-Batik homepage
-
-Related talk
-
-
-*W14: Introduction to the Batik project.
-*
-
-
-
-
-
-!!16.9 Crimson
-
-
-
- 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
-step until the version 2 of Xerces is released.
-
-
-
-Crimson homepage
-
-
-
-
-Related talk
-
-
-*TH08: Java API for XML processing (JAXP) version 1.1
-*
-
-
-
-
-
-!!16.10 Other XML projects
-
-
-
-There are other projects based on Apache and XML that do not live under the
-Apache XML umbrella
-
-
-*
-mod_xslt is a C
-based module for delivering XML/XSL based content. It has a GPL
-license.
-*
-
-*
-!AxKit
- is
-an XML based Application Server for mod_perl and Apache. It allows
-separation of content and presentation.
-*
-
-
-
-
-
-
-Related talk
-
-
-*TH04: !AxKit - An XML Application server for Apache
-*
-
-
-
-
-----
-
-!!17. Perl
-
-
-Perl and Apache make a powerful and popular combination. There are several projects
-that use these two technologies.
-
-!!17.1 Embperl
-
-
-
-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
-PHP.
-You can learn more
-here.
-
-!!17.2 Mason
-
-
-
-The
-Mason project embeds Perl in HTML
-with a reusable component model approach. It allows caching, templating, etc.
-
-!! 17.3 Mod_Perl
-
-
-
-
-mod_perl is one of the most
-veteran and successful Apache projects. It embeds a Perl interpreter
-in Apache and allows access to the web server internals from
-Perl. This allows for entire modules to be written in Perl or a
-mixture of Perl and C code. In the 1.3 Apache versions, one
-interpreter has to be embedded in each child, since the server is
-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.
-
-
-Make sure you also check
-axkit
-
-
-
-
-
-
-
-
-
-
-
-----
-
-!! 18. PHP
-
-
-From the
-PHP website:
-''PHP is a server-side, cross-platform, HTML embedded scripting
-language.'' PHP is a scripting language like Perl, Python or Tcl. It is
-the
-most popular module for Apache and this is due to a variety
-of reasons:
-
-
-*Learning curve is quite low
-*
-
-*Great documentation
-*
-
-*Extensive database support
-*
-
-*Modularity
-*
-
-PHP has a modular design. There are modules that provide support for:
-
-
-*Database connetivity for Oracle, ODBC, mySQL, mSQL, PostgreSQL,
-MS-SQL server... and many more, check the
-PHP website.
-*
-
-*XML support
-*
-
-*File transfer: FTP
-*
-
-*HTTP
-*
-
-*Directory support: LDAP
-*
-
-*Mail support: IMAP, POP3, NNTP
-*
-
-*PDF document generation
-*
-
-*CORBA
-*
-
-and many more. You only need to compile/use the modules you need.
-
-
-PHP can be used with Apache, as an external CGI or with other webservers.
-It is crossplatform and it runs on most flavors of Unix and Windows.
-
-
-If you come from a Windows background, you probably have used Internet
-Information Server with Active Server Pages and MS-SQL Server. A common
-replacement in the Unix world for this trio is Apache with PHP and mySQL.
-Since PHP works:
-
-
-*with Apache and with Microsoft IIS
-*
-
-*with mySQL and with MS-SQL server
-*
-
-*on Unix and on Windows
-*
-
-you have a nice migration path from a Microsoft-centric solution to more
-secure, stable, high performance Unix based solutions (like
-FreeBSD,
-Solaris,
-Linux or
-OpenBSD)
-
-
-
-
-
-
-----
-
-!!19. Python
-
-
-Python is an scripting language similar to Perl or Tcl.
-Several modules embed Python in the Apache web server:
-
-
-*
-Mod Python
-*
-
-*
-Mod Snake:
-runs both in Apache 1.3.x and the upcoming 2.
-*
-
-Both modules would be useful if you plan on writing Apache modules in Python
-or run existing Python CGIs faster. Mod Snake allows you to embed Python in HTML
-, much like
-PHP does.
-
-
-
-
-
-Related talk:
-
-
-* F08: mod_snake: Boosting productivity with Python
-*
-
-
-
-
-----
-
-!!20. Tcl
-
-
-The
-Tcl Apache project integrates
-Tcl with the Apache webserver. Tcl is a lightweight, extensible
-scripting language. You can learn more about Tcl
-here.
-There are several modules currently under the Apache Tcl umbrella:
-
-
-*
-Mod_dtcl allows for embedding Tcl on HTML pages like
-PHP does.
-*
-
-*
-Neowebscript takes a similar approach
-*
-
-*
-Mod_tcl takes an approach similar
-to mod_perl and runs both in 1.3.x and 2.x versions of Apache.
-*
-
-Other Tcl Apache projects can be found at
-WebSH.
-
-
-
-----
-
-!!21. Modules for other languages
-
-
-This document has described modules for popular server side languages
-such as Perl, Python, PHP. You can find additional language modules (!JavaScript, Haskell, etc.)
-at the
-Apache modules directory.
-
-
-
-----
-
-!!22. Apache 2.
-
-
-The current version of Apache (the 1.3 series) is process based. That means that
-the server forks itself a number of times to answer simultaneous requests.
-The children are isolated from each other.
-This is reliable: if a module misbehaves, the parent process kills that child and
-it only affects the request being served, not the server as a whole.
-Threads are similar to lightweight processes. Threads can share common data.
-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
-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
-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.
-
-
-
-
-
-
-
-
-
-----
-
-!!23. Migrating from Netscape (iPlanet) web servers
-
-
-The bulk of the work may reside in converting custom modules from NSAPI to the Apache API.
-Nearly all the other server side technologies (Java, Perl, CGIs) should be portable with little
-or no change.
-Netscape is tightly integrated with LDAP servers. You may be also interested in LDAP modules in
-http://modules.apache.org.
-
-
-
-----
-
-!!24. Migrating from Microsoft IIS
-
-
-Common reasons why people migrate from IIS to Apache (and not the other way around) include
-stability, performance and security. This is partly because most people running Apache do it on
-an Unix variant (like Solaris, FreeBSD or Linux). Fortunately, Apache is multiplatform and runs
-on both Unix and Windows, offering a sensible migration path.
-
-
-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):
-
-
-*
-Coldfusion for Linux
-*
-
-*
-Perl ASP module
-*
-
-*
-Halcyon ASP
-*
-
-Apache for Windows supports also the ISAPI interface.
-
-
-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
-+
-MySQL or
-PostgresSQL.
-You can learn more about PHP
-here
-
-Support for Windows is greatly improved in the new 2.0 Apache version, still in beta stage at the time of this writing.
-
-
-
-
-
-
-
-
-
-----
-
-!!25. Links
-
-
-Additional Apache related resources
-
-!!25.1 Websites
-
-
-
-
-
-
-*
-Apache
-*
-
-*
-Apache modules directory
-*
-
-*
-Apache today
-*
-
-*
-Slashdot Apache section
-*
-
-
-
-
-
-!! 25.2 Java application servers
-
-
-
-These are open source application servers that build on or are known to play
-well with Apache.
-
-
-*
-Resin: Servlets, JSP, XSL
-*
-
-*
-Enhydra: Java/XML application
-server.
-*
-
-*
-JBoss: Enterprise Java Beans container, J2EE
-
-*
-
-----
-
-!!26. Contacting the author
-
-
-You can contact me at
-ridruejo@apache.org. I welcome suggestions
-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
-mail will be most likely ignored. If you need support:
-
-
-*Check the error logs, read the docs, especially the
-FAQ.
-*
-
-*Try comp.infosystems.www.servers.unix at
-http://groups.google.com.
-Search for a similar problem.
-*
-
-*If you are still stuck, provide as much information as you can,
-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.
-*
-
-
-
-If you want commercial support, consider contacting
-Covalent, which provides expert support for Apache (at a fee,
-of course). If you are using Apache on Linux, your Linux vendor may have support
-plans that include Apache too.
-
-
-
-
-!!26.1 Translations
-
-
-
-If you want to contribute a translation of this document you should use
-the SGML source. Check
-http://www.linuxdoc.org for info.
-Please drop me a note so I can make sure you get the most recent version.
-
-
-
-----
-
-!!27. Open Content Open Publication License
-
-
-Open Publication License
-Draft v1., 8 June 1999 (text version)
-
-
-
-
-
-
-
-!!27.1 REQUIREMENTS ON BOTH UNMODIFIED AND MODIFIED VERSIONS
-
-
-
-The Open Publication works may be reproduced and distributed in
-whole or in part, in any medium physical or electronic, provided that
-the terms of this license are adhered to, and that this license or an
-incorporation of it by reference (with any options elected by the
-author(s) and/or publisher) is displayed in the reproduction.
-
-
-
-
-
-Proper form for an incorporation by reference is as follows:
-
-
-
-
-
-Copyright (c) <year> by <author's name or
-designee>. This material may be distributed only subject to the
-terms and conditions set forth in the Open Publication License, vX.Y
-or later (the latest version is presently available at
-http://www.opencontent.org/openpub/). The reference must be
-immediately followed with any options elected by the author(s) and/or
-publisher of the document (see section VI).
-
-
-
-
-
-Commercial redistribution of Open Publication-licensed material is
-permitted.
-
-
-
-
-
-Any publication in standard (paper) book form shall require the
-citation of the original publisher and author. The publisher and
-author's names shall appear on all outer surfaces of the book. On all
-outer surfaces of the book the original publisher's name shall be as
-large as the title of the work and cited as possessive with respect to
-the title.
-
-
-
-
-
-
-
-!!27.2 COPYRIGHT
-
-
-
-The copyright to each Open Publication is owned by its author(s) or designee.
-
-
-
-
-
-
-
-!!27.3 SCOPE OF LICENSE
-
-
-
-The following license terms apply to all Open Publication works,
-unless otherwise explicitly stated in the document.
-
-
-
-
-
-Mere aggregation of Open Publication works or a portion of an Open
-Publication work with other works or programs on the same media shall
-not cause this license to apply to those other works. The aggregate
-work shall contain a notice specifying the inclusion of the Open
-Publication material and appropriate copyright notice.
-
-
-
-
-
-SEVERABILITY. If any part of this license is found to be
-unenforceable in any jurisdiction, the remaining portions of the
-license remain in force.
-
-
-
-
-
-NO WARRANTY. Open Publication works are licensed and provided "as
-is" without warranty of any kind, express or implied, including, but
-not limited to, the implied warranties of merchantability and fitness
-for a particular purpose or a warranty of non-infringement.
-
-
-
-
-
-
-
-!!27.4 REQUIREMENTS ON MODIFIED WORKS
-
-
-
-All modified versions of documents covered by this license,
-including translations, anthologies, compilations and partial
-documents, must meet the following requirements:
-
-
-
-
-
-* 1. The modified version must be labeled as such.
-
-*
-
-* 2. The person making the modifications must be identified and
-the modifications dated.
-
-*
-
-* 3. Acknowledgement of the original author and publisher if
-applicable must be retained according to normal academic citation
-practices.
-
-*
-
-* 4. The location of the original unmodified document must be
-identified.
-
-*
-
-* 5. The original author's (or authors') name(s) may not be used
-to assert or imply endorsement of the resulting document without the
-original author's (or authors') permission.
-
-*
-
-
-
-
-
-
-
-
-!!27.5 GOOD-PRACTICE RECOMMENDATIONS
-
-
-
-In addition to the requirements of this license, it is requested
-from and strongly recommended of redistributors that:
-
-
-
-
-
-* 1. If you are distributing Open Publication works on hardcopy
-or CD-ROM, you provide email notification to the authors of your
-intent to redistribute at least thirty days before your manuscript or
-media freeze, to give the authors time to provide updated
-documents. This notification should describe modifications, if any,
-made to the document.
-
-*
-
-* 2. All substantive modifications (including deletions) be
-either clearly marked up in the document or else described in an
-attachment to the document.
-
-*
-
-* 3. Finally, while it is not mandatory under this license, it is
-considered good form to offer a free copy of any hardcopy and CD-ROM
-expression of an Open Publication-licensed work to its author(s).
-
-*
-
-
-
-
-
-!!27.6 LICENSE OPTIONS
-
-
-
-The author(s) and/or publisher of an Open Publication-licensed
-document may elect certain options by appending language to the
-reference to or copy of the license. These options are considered part
-of the license instance and must be included with the license (or its
-incorporation by reference) in derived works.
-
-
-
-
-
-A. To prohibit distribution of substantively modified versions
-without the explicit permission of the author(s). "Substantive
-modification" is defined as a change to the semantic content of the
-document, and excludes mere changes in format or typographical
-corrections.
-
-
-
-
-
-To accomplish this, add the phrase `Distribution of substantively
-modified versions of this document is prohibited without the explicit
-permission of the copyright holder.' to the license reference or copy.
-
-
-
-
-
-B. To prohibit any publication of this work or derivative works in
-whole or in part in standard (paper) book form for commercial purposes
-is prohibited unless prior permission is obtained from the copyright
-holder.
-
-
-
-
-
-To accomplish this, add the phrase 'Distribution of the work or
-derivative of the work in any standard (paper) book form is prohibited
-unless prior permission is obtained from the copyright holder.' to the
-license reference or copy
.
-
-
-
-
-
-
-
-
-
-----
+Describe [HowToApacheOverviewHOWTO]
here.