If someone says "Apache" to me, that's a warning - a warning to listen very carefully to what they're saying and evaluate what they mean; the term has changed - been used (and abused) over the years and it would be so easy to talk to someone, or train someone, on the wrong product.
The original
Apache Web Server followed on from the very first web servers such as
the NCSA Server and was and remains an excellent web server - used to serve the majority of domains that exist on the internet, and greatly enhanced over time via Open Source contributions. Really a fantastic piece of software.
The setup that the Apache folks created for their web server - allowing for contributions which are rolled back into the product and managing those contributions - is so good that others want to use it too. And so the Apache team grew into the Apache Software Foundation, with the mechanism used not only for their original web server, but also for many other projects. And this lead to a degree of confusion with "Apache" having multiple meanings, and the web server is now officially known as
Apache httpd since it's a program known as "httpd" - the Hypertext Transfer Protocol Daemon.
Amongst the extra projects that form part of the Apache Software Foundation feifdom are numerous Java langauge based projects, and rather than host each of them separarately, they're known under the collective project name of Jakarta. And one such sub-project was
Tomcat - also known as
Jakarta Tomcat and
Apache Jakarta Tomcat.
Tomcat is a web server too, and you may wonder at the Apache people in welcoming into their club a piece of software that appears to compete with their original httpd. But actually it doesn't - it's rather like having two different pieces of public transport and suggesting that a Boeing 737 competes with a Stagecoach bus. I'll contrast the web servers in a minute.
Tomcat has proven to be a good web server too - a very good web server - and so popular that it has now been split out of the Jakarta cluster and is a project in its own right - thus you have the
Apache Tomcat web server.
So ... if I'm asked about
Apache or
The Apache Web Server or
Apache httpd or
httpd, then I'm probably looking at the web server that's used for the majority of domains, and is characterised as follows:
• A file server, great for sites where lots of different files are served out
• Excellent tailorable modules and security options - superb flexibility
• Supports programs (via CGI, PHP, etc) in many programming languages
• Many facilities to act as an internet-facing server to support other servers "behind".
If you set up a free or cheap web site, you'll probably find that your hosting company is using httpd - but there's nothing cheap about the facilities it offers!
And ... if I am asked about
Tomcat or
Jakarta Tomcat or
Apache Jakarta Tomcat or
Apache Tomcat, then I'm going to be looking at the Java based web server that's used much more often behind the scenes for larger applications; it's characterised as follows:
• An application container, where an application is run in stored in memory and run time and again
• Excellent facilities for retaining data from one "hit" to the next and handling big jobs
• Supports Java code in the form of JSPs and Servlets - also tag libraries such as Struts and Spring.
• Many facilities for being used as a "behind" server - it can even use other protocols such as AJP and doesn't have to use web protocols at all!
You see how different they are? Would you like ideal facilities of BOTH in your own application? If you would, you can - in fact the majority of delegates we train on web server technology are using an httpd server to face the customer / internet, which calls on internally to a Tomcat server which contains their larger applications. It's designed to work well and it does work well - just like you would catch a bus to the airport, fly a long distance, then catch another bus to your final destination - not competitors but co-operators.
We run training courses on
Deploying both servers in combination and also on
Deploying httpd under Linux. We've another course that looks wider that just httpd - our
LAMP course that covers Linux, Apache httpd, MySQL and Perl / PHP deployment. There are many options that you might want to use in your configuration; some web server setups comprise quite a number of interacting elements - that's no bad thing; by keeping the complexity hidden on your web server, you can provide a nice, single access point, easy to use web site for all your clients visiting your pages and running your programs.
See also:
Load balancing with mod_jk
Choosing between mod_proxy and mod_rewrite
A comparison between http, ajp and https protocols
(written 2007-07-13, updated 2008-02-23)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
A651 - Web Application Deployment - Tomcat Overview [49] Business is the predominant user of Tomcat, Perl and Tcl - (2004-09-15)
[498] Why is Tomcat called Tomcat? - (2005-11-17)
[576] Why run two different web servers - (2006-01-25)
[659] Web Application Components - (2006-03-28)
[1771] More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24)
[1941] Server - Service - Engine - Host, Tomcat - (2008-12-14)
[2016] Apache httpd and Apache Tomcat miscellany - (2009-01-30)
[2077] Why put Apache httpd in front of Apache Tomcat - (2009-03-12)
[2186] An FAQ on the Apache httpd and Apache Tomcat web servers, and on using them together - (2009-05-17)
[2753] You do not just fly - that is just part of the journey - (2010-05-06)
[3997] Servlet v JSP (Java Server Page). What is the difference? - (2013-02-06)
[4434] Public training courses - upcoming dates - (2015-02-21)
A601 - Web Application Deployment - Apache httpd - an overview [924] The LAMP Cookbook - Linux, Apache, MySQL, PHP / Perl - (2006-11-13)
[1593] Keep the client experience easy - single server contact point - (2008-03-27)
[1897] Keeping on an even keel - (2008-11-21)
[2038] Sticky Sessions with mod_jk (httpd to Tomcat) - (2009-02-12)
[2054] Tuning httpd / the supermarket checkout comparison - (2009-02-26)
[2063] Internal Dummy Connections on Apache httpd - (2009-03-02)
[4064] Apache httpd - a robust, open source web server - (2013-04-16)
A100 - Web Application Deployment - The Components of a Web-Based Solution [34] Linux / LAMP course - (2004-08-31)
[166] Acronyms - (2005-01-02)
[367] Ajax - (2005-07-03)
[433] FTP - how to make the right transfers - (2005-09-01)
[442] How far away is that server? - (2005-09-10)
[510] Dynamic Web presence - next generation web site - (2005-11-29)
[673] Helicopter views and tartans - (2006-04-06)
[1176] A pu that got me into trouble - (2007-05-04)
[1198] From Web to Web 2 - (2007-05-21)
[1496] PHP / Web 2 logging - (2008-01-06)
[2099] Should I maintain the programming code on my own website? - (2009-03-23)
[2896] LAMP - Linux, Apache, MySQL, PHP - install, configure, administer - (2010-07-30)
[3891] The components of an Apache httpd / Tomcat / MySQL stack and what each does - (2012-10-13)
Some other Articles
Party in the Park - reviewChanges in advertising cut lines / Buscot / Tcl courseis there a lookup function in php?Party in the ParkApache, Tomcat, Jakarta, httpd, web server - what are they?Business events in Melksham0800 043 8225 - a new phone number for Well HouseKeep in touch with PHP, Perl, Python and old friends tooHigh summer at Well House ManorAn inspirational business talk from one of our prospective MPs