Many sites run two web servers - Apache httpd is ideal for plain HTML documents and scripts / programs that are single pages, run rarely, not all linked in together. Whereas Tomcat is an application container that suits applications that are run by tens of people all at the same time - great for banking, student record handling systems, big document and data portals ....
Do you choose one
or the other? Not usually - you can run them both and then connect them - see
the connector story for details.
During the last course I gave before Christmas, we connected the two servers using mod_proxy, using mod_jk, and even using mod_rewrite to share out the Tomcat load between multiple Tomcat servers. Links -
description and
link to sample configuration files.
Here's a handful of extra tips.
1. Why not point both httpd AND Tomcat's Document Root at
the same directory? That way, you can keep your application in one place and configure your connector to forward ONLY servlets and .jsp-s. The result is an application that's easy to maintain, but at the same time is efficiently using the most efficient server for each element.
2. In early testing and at time you've been reconfiguring, it's worth
turning your Tomcat off to test the httpd element rather than starting your tests with everything switched on. The uncommon httpd response codes that you'll get tell you heaps about what's going on.
502 - Bad Gateway. httpd is trying to forward to an non-running Tomcat
503 - Application not available. httpd has forwarded to Tomcat, but Tomcat can't provide the application - typically it's not running.
500 - Internal server error. Your httpd forwarding isn't configured right?
3. When doing a fresh restart of Tomcat with a major upgrade of applications, or after a series of tests that have generated a confusing array of intermediate files that could get carried over to the live application, you can
delete the work and temp subdirectories in Tomcat. But, please, only do this when Tomcat is stopped!
(written 2006-12-24, updated 2008-12-21)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
A900 - Web Application Deployment - Tomcat - Extra Features [934] Clustering, load balancing, mod_rewrite and mod_proxy - (2006-11-21)
[1121] Sharing the load with Apache httpd and perhaps Tomcat - (2007-03-29)
[1370] Apache Tomcat Performance Tuning - (2007-09-29)
[1376] Choosing between mod_proxy and mod_rewrite - (2007-10-02)
[1377] Load Balancing with Apache mod_jk (httpd/Tomcat) - (2007-10-02)
[1383] Monitoring mod_jk and how it is load balancing - (2007-10-07)
[1896] Virtual Hosts and Virtual Servers - (2008-11-20)
[1899] Virtual Hosting under Tomcat - an example - (2008-11-22)
[1939] mod_proxy_ajp and mod_proxy_balancer examples - (2008-12-13)
[3018] Tuning Apache httpd and Tomcat to work well together - (2010-10-27)
A653 - Web Application Deployment - Tomcat - Configuring Web Applications [465] Changing Tomcat's web.xml and reloading a web application - (2005-10-15)
[479] New servlet from old - (2005-10-28)
[754] tar, jar, war, ear, sar files - (2006-06-10)
[1074] Java beans and classes, .war and .jar files - (2007-02-10)
[1082] Straight from the .jar - (2007-02-16)
[1192] What are WEB-INF and META-INF directories? - (2007-05-18)
[1552] Extra public classes in deploying Apache httpd and Tomcat - (2008-02-24)
[1564] Default file (MiMe types) for Apache httpd and Apache Tomcat - (2008-03-04)
[1909] javax.servlet cannot be resolved - how to solve - (2008-11-26)
[2088] Changing the 404 - file not found - page in Tomcat - (2009-03-18)
[3044] Changing a Servlet - more that just editing and compiling - (2010-11-12)
[3996] Tips on Tomcat - moving applications around - (2013-02-05)
A608 - Web Application Deployment - Apache httpd mod_proxy [631] Apache httpd to Tomcat - jk v proxy - (2006-03-03)
[1566] Strange behaviour of web directory requests without a trailing slash - (2008-03-06)
[1767] mod_proxy and mod_proxy_ajp - httpd - (2008-08-22)
[1944] Forwarding session and cookie requests from httpd to Tomcat - (2008-12-14)
[2062] Virtual hosting and mod_proxy forwarding of different domains (httpd) - (2009-03-01)
[2273] Three recent questions on Tomcat Convertors - (2009-07-07)
[2325] Apache, Tomcat, mod_proxy - (2009-08-06)
[2482] Load balancing with sticky sessions (httpd / Tomcat) - (2009-10-29)
[3293] Distributing the server load - yet ensuring that each user return to the same system (Apache httpd and Tomcat) - (2011-05-18)
[3339] Simplest ever proxy configuration? - (2011-06-28)
[3680] How can I run multiple web servers behind a single IP address? - (2012-04-02)
[3892] Distributed, Balanced and Clustered Load Sharing - the difference - (2012-10-13)
A607 - Web Application Deployment - Apache httpd mod_rewrite [755] Using different URLs to navigate around a single script - (2006-06-11)
[1009] Passing GET parameters through Apache mod_rewrite - (2006-12-27)
[1207] Simple but effective use of mod_rewrite (Apache httpd) - (2007-05-27)
[1381] Using a MySQL database to control mod_rewrite via PHP - (2007-10-06)
[1636] What to do if the Home Page is missing - (2008-05-08)
[1731] Apache httpd, MySQL, PHP - installation procedure - (2008-08-01)
[1771] More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24)
[1778] Pointing all the web pages in a directory at a database - (2008-08-30)
[1954] mod_rewrite for newcomers - (2008-12-20)
[2094] If you have a spelling mistake in your URL / page name - (2009-03-21)
[2555] Bookkeeping - (2009-12-29)
[2728] Redirecting a home page using mod_rewrite - (2010-04-17)
[2768] Carrying a long URL around - looking for memorable shorts - (2010-05-17)
[2773] Dynamically watching your web site via a PHP wrapper - (2010-05-21)
[2900] Redirecting a page - silent, temporary or permanent? - (2010-08-03)
[2981] How to set up short and meaningfull alternative URLs - (2010-10-02)
[3197] Finding and diverting image requests from rogue domains - (2011-03-08)
[3568] Telling which ServerAlias your visitor used - useful during merging domains - (2012-01-04)
[3753] Adding a passcode to a directory - (2012-06-05)
[3862] Forwarding a whole domain, except for a few directories - Apache http server - (2012-09-17)
Some other Articles
Dates, times, clickable diarys in PHPDate conversion - PHPFriends and familyApache httpd and Apache Tomcat together tipsStirling at nightOld dog, old tricksRoom at the Inn, Guy at the stationMeet the neighbours.pdf files - upload via PHP, store in MySQL, retrieve