Here's a Perl / CGI script - a "Common Gateway Interface" program that I want to run on my web server, and access via my browser. What server to I need to run it on, and how do I set that server up?
print ("Content-type: text/html\n\n");
$now = localtime();
print "<h1>It really is<h1>$now";
You can run CGI (and through it Perl Scripts like the one above) on either the Tomcat OR the httpd servers. It will run on httpd, and it will walk on Tomcat as it's in a Java servlet container ;-) ... but if you've only a bit to do, you choose.
How do we set 'em up?
1. In the conf/web.xml file, enable the cgi servlet and also allow for all URLs that start /cgi-bin to be routed to it.
2. In the server/lib directory, rename servlets-cgi.renametojar to servlets-cgi.jar
3. In the WEB-INF folder in your web application, add a cgi folder and place your CGI script in there.
4. Stop / Restart your Tomcat.
5. Try it out! http://whereverserver:myport/appname/cgi-bin/script.pl (and you can route it via httpd and mod_proxy and balancer too if they're in use!)
1. In the conf/httpd.conf file, change the ScriptAlias for cgi-bin to point to the directory you'll be using for CGI - usually a sibling to your htdocs directory.
2. In the same file, set the Options for that directory to include ExecCGI
3. Create the directory for the CGI scripts if it doesn't already exist
4. Add a CGI script to the cgi-bin folder, making sure that it's executable!
5. Stop / Restart your httpd
6. Try it out! http://whereverserver/cgi-bin/script.pl
Some Interesting Extras!
1. You can point both configurations to the same cgi directory, so that scripts can be run by either httpd or Tomcat (If you do the same with your web applications, it means that a single web application ans all its support files can be kept in the same place, irrespective of which server serves which parts.)
2. You can have one instance of httpd forwarding to other instances of httpd through mod_proxy_httpd and mod_proxy_balancer, allowing a single domain name and port to be served by multiple machines through a single front end. A great solution when the traffic load is too high for one machine, but too low for an sophisticated solution such as a hardware load balancer.
We cover the setup of Apache http on our Linux Web Server course
and the setup of Apache Tomcat on our Apache httpd and Tomcat course
Illustration. We often get delegates on our more specialised courses from other countries in Europe, or even from other continents. And when we have a visitor who's not seen England before, we'll take extra time after the course has finished for the day to show them around our beautiful area. In this case, a delegate from Cyprus sees some of the stones at Avebury. (written 2009-06-05, updated 2010-06-23)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesJ950 - Java - Tomcat Sourcing, Installation and Initial Testing 
Multiple web applications under Tomcat - what are the options? - (2009-06-05)P303 - Perl - Miscellany 
Returning multiple values from a function call in various languages - a comparison - (2011-02-06) 
Exception handling in Perl - using eval - (2010-10-23) 
Further more advanced Perl examples - (2010-07-19) 
Different perl examples - some corners I rarely explore - (2010-07-18) 
Operator overloading - redefining addition and other Perl tricks - (2009-09-27)
Some other Articles
CSS Style Diagrams - working out where attributes come fromA (biased?) comparison of PHP courses in the UKAdding a newsfeed for your users to a multipage PHP applicationMelksham Traders - where do we go?Configuring httpd, or Tomcat, to run CGI scripts in PerlEnjoying the summer weatherPast Delegate Offer - Summer Holiday / Weekend BreakIf nothing, make it nothing.Global Index to help you find resources