Dette dokument beskriver, hvordan man får Apache til at virke som proxy for Tomcat. Det er ikke en udtømmende beskrivelse, men har kun til hensigt at give et bud på en minimal løsning.
Dokumentet er sidst rette 2004/06/30.
Der knytter sig følgende forudsætninger til anvisningerne i dokumentet:
Debian Sid (unstable).
Sun's SDK.
Apache2 fra Debian Sid.
Jakarta-Tomcat5 fra Apache Group. Http://tomcat.edu.brock.dk/apache/jakarta/tomcat-5/v5.0.25/bin
Jk2-mod fra Apache Group.
Forfatter til dette dokument er Michael Rasmussen, og kommentarer, ris og ros kan stiles til følgende adresse: mailto:mir@miras.org
Bogen er udgivet under "Åben dokumentlicens (ÅDL) - version 1.0" som kan læses på http://www.linuxbog.dk/licens.html. Du har bl.a. herved frit lov til at kopiere dette værk uændret på ethvert medium.
Den nyeste version af dokumentet kan til enhver tid findes her: http://www.datanom.net/artikler/tomcat-apache.html
Java skal hentes fra Sun's javahjemmeside, og du skal i den forbindelse tage seneste version. Jeg kan ikke anbefale at hente RPM-pakken, og konvertere den til Debians pakkesystem med alien, så tag tar-pakken i stedet for. Installation foregår på følgende måde:
Hent java fra Sun: http://java.sun.com.
Lav folderen /usr/java og udpak tar-pakken heri.
I /root/.bash_profile tilføjes variablen JAVA_HOME: export JAVA_HOME=/usr/java/<javaversion>/
I /root/.bash_profile tilføjes java's bin-katalog til PATH: export PATH=$PATH:/usr/java/<javaversion>/bin
Når ovenstående er gjort, har du en fungerende version af java. Kontroller eventuelt med echo -e "JAVA_HOME: $JAVA_HOME\nPATH: $PATH":
loke:~/Dokumenter/artikler$ echo -e "JAVA_HOME: $JAVA_HOME\nPATH: $PATH" JAVA_HOME: /usr/java/j2sdk1.4.2_04 PATH: /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/java/j2sdk1.4.2_04/bin:/home/mir/bin:/usr/sbin:/bin:/sbin:/usr/java/j2sdk1.4.2_04/bin:/usr/java/j2sdk1.4.2_04/jre
Installationen er ganske nem, og gøres næsten automatisk af apt. Først skal du hente og installere Apache2 og mod-jk2. Dette gøres på følgende måde:
Apt-get install apache2-mpm-prefork libapache2-mod-jk2
Nu skal der blot tilføjes en enkelt linje i /etc/apache2/httpd.conf, der har til formål at konfigurere mod-jk2. Tilføj denne linje:
loke:~# cat /etc/apache2/httpd.conf JkSet config.file /etc/apache2/workers2.properties
Herefter skal du oprette filen workers2.properties, der skal have følgende indhold:
loke:~# cat /etc/apache2/workers2.properties # Configure the jk module # socket channel [shm] info=Scoreboard. Required for reconfiguration and status with multiprocess serve rs file=/usr/lib/tomcat5/logs/jk2.shm size=1048576 debug=1 disabled=0 # UNIX domain socket [channel.socket:app:8009] port=8009 host=127.0.0.1 # define the worker [ajp13:app:8009] channel=channel.socket:app:8009 debug=0 # Announce a "status" worker # Remove this worker on a production server! [status:status] info=Status worker. Displays runtime information. # Remove this mapping on a production server! [uri:/jkstatus/*] group=status:status # Uri mapping to Jakarta-Tomcat examples. Use similar way for other webapps. # Remove this mapping on a production server! [uri:/jsp-examples/*] #Uri mapping for jsp-files under Apache2. # The mapping courses Apache2 to invoke Jakarta-Tomcat when a users wants to have a jsp-file displayed in the browser. [uri:/*.jsp]
Det er alt, hvad der kræves af konfiguration i Apache2.
Hent tar-pakken og udpak den i kataloget /usr/lib/tomcat5, så kataloget har følgende indhold:
loke:/usr/lib/tomcat5# ll total 72 -rw-r--r-- 1 root root 11357 May 18 02:19 LICENSE -rw-r--r-- 1 root root 505 May 18 02:19 NOTICE -rw-r--r-- 1 root root 8632 May 18 02:08 RELEASE-NOTES -rw-r--r-- 1 root root 5792 May 18 02:19 RUNNING.txt drwxr-xr-x 2 root root 4096 Jun 27 03:03 bin drwxr-xr-x 5 root root 4096 May 18 02:08 common drwxr-xr-x 4 root root 4096 Jun 27 05:45 conf drwxr-xr-x 2 root root 4096 Jun 27 11:41 logs drwxr-xr-x 5 root root 4096 May 18 02:08 server drwxr-xr-x 4 root root 4096 May 18 02:08 shared drwxr-xr-x 2 root root 4096 May 18 02:08 temp drwxr-xr-x 8 root root 4096 May 18 02:08 webapps drwxr-xr-x 4 root root 4096 Jun 27 13:12 work
I mappen /usr/lib/tomcat5/conf skal du først flytte standardopsætningen af Tomcat5 på følgende måde: mv server.xml server.xml.orig. Herefter skal du oprette en ny server.xml med følgende indhold:
loke:/usr/lib/tomcat5# cat conf/server.xml <Server port="8005" shutdown="SHUTDOWN" debug="0"> <Service name="Tomcat-Apache"> <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 --> <Connector port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" /> <Engine name="Apache" defaultHost="localhost" debug="0"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="apache_log." suffix=".txt" timestamp="true"/> <!-- Access log processes all requests for this virtual host. --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> <Host name="localhost" debug="0" appBase="/var/www/html" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Alias>localhost</Alias> <Alias>www</Alias> <Alias>192.168.2.96</Alias> <Context path="" docBase="" debug="1"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="home_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> </Host> </Engine> </Service> </Server>
Denne konfiguration betyder, at tomcat ikke kører som stand-alone, men kun kan tilgås gennem apache.
Før nu kan starte tomcat og apache, skal du kopiere java-compileren til tomcat. Hvis du glemmer dette, vil du ikke kunne afvikle jsp-filer, da tomcat ikke har en java-compiler selv. Det gøres nemmest ved, at du laver et symbolsk link fra java: ln -s /usr/java/<java-version>/lib/tools.jar /usr/lib/tomcat5/server/lib/
Du er alt klart, og du kan starte apache og tomcat:
/usr/lib/tomcat5/bin/startup.sh
/etc/init.d/apache2 start
Opret en fil ved navn test.jsp i /var/www/html og start din favoritbrowser. I adresselinjen skal du skrive http://localhost/test.jsp
loke:/var/www/html# cat test.jsp <html> <head> <title>test af jsp</title> </head> <body> <% out.println("Hello JSP world"); %> </body> </html>
Er alt korrekt sat op, burde du se følgende i din browser:
God fornøjelse.