Windows 2000/XP - Apache + JK + Tomcat HOWTO DISCLAIMER: this is for Windows 2000 Professional and XP Professional. It does not cover setting up Apache + Tomcat on a server such as Windows 2000 Server/Advanced Server for production use. This is because I have no access to a Windows 2000 server, nor do I use Windows servers for production use. My only access to Windows are desktop installations of Windows 2000 Professional and XP Professional. If you are a Windows 2000 server administrator, my guess is that you have the skills to take these instructions and adapt them to your platform accordingly. If you are unable to do this, please consult the tomcat-user mailing list for help or go flag down your neighborhood Windows sys-admin and ask them for help.
This HOWTO is for Windows 2000 Professional and XP Professional. It assumes that you have some basic knowledge of how to make things work on your Windows computer, such as enabling and disabling services and creating new directories. NOTE: this process is not a simple one-click "install this software and use the defaults" process. If that's all you know how to do with your computer, find a friend to help you, as things will be a little bit more complicated than that, but certainly something someone with basic system administration skills can handle. If you must have a JSP and Java servlet environment, and you aren't comfortable configuring things manually, then stick with Tomcat by itself, don't try to install Apache as well. You'll be able to get started with your JSP and Java servlet development much faster and easier that way. Installing the JDK 1. You'll need to go to http://java.sun.com/j2se/1.4.1/download.html and get the JDK version of J2SE 1.4.1. The JRE version works for Tomcat in some circumstances, but unless you know exactly what you are doing, the full JDK is the better choice. Its a big download (38Mb), so plan accordingly. 2. Run the installer. Take the defaults. This will install the JDK in c:j2sdk1.4.1_01. 3. Setup the JAVA_HOME environment variable. Click Start->Control Panel->System. Then click Advanced, then click "Environment Variables". 4. Under System variables, click "New". For Variable Name, use JAVA_HOME (exactly like that, case and all). For Variable Value, use c:j2sdk1.4.1_01. Click OK until the Control Panel is closed. 5. Verify the setting. Click Start->Run, and in the command box type "cmd" and click OK. At the command prompt, type echo %JAVA_HOME% and verify that the value returned matches the Variable Value from step 4. Installing Apache 1. First, make sure there is no web server running on port 80 on your machine. It's possible that you have IIS installed and running, and you don't even know it. Go to Start->Administrative Tools->Services, and look for a service named "World Wide Web Publishing". If that service is listed, click on it's name, then click the "Stop" button in the toolbar. The stop button is a square. Then, choose Properties in the toolbar, and set "Startup Type" to "Manual" instead of "Automatic". This will prevent IIS from starting on your machine when it is rebooted. Only one service can run on port 80 at a time, and in this HOWTO that service will be Apache, not IIS. 2. Download the Apache binary for Windows. Choose a mirror site, and get the MSI installer. This will make things easier. The current version of Apache is 2.0.43. The URL for the MSI installer is: http://apache.mirrorcentral.com/dist/httpd/binaries/win32/apache_2.0.43-win3 2-x86-no_ssl.msi 3. Save the MSI installer to a location on your hard drive. Wherever you put it, remember that location. 4. Click Start->Run->Browse, and browse to the location where you put the MSI installer. Run the MSI installer. You will see a couple of screens dealing with licenses, etc. Click through those, then you will see a screen that says "Server Information" and has some values in the fields already. Delete the Network Domain and Server Name values, and type "localhost" into both fields. Put your email address in the field entitled "Administrator's Email Address". Choose the option to install Apache for all users on port 80. Click Next. 5. On the next screen, the default is "Typical". Select "Custom" and click Next. 6. The next screen says "Custom Setup". Click the "Change..." button to change the installation directory. 7. The next screen says "Change Current Destination Folder". Click UP to the C drive, that is, C:. Click the "new folder" icon (the folder with a "*" on it) and call the new folder "apache". Click "OK", then click Next. The goal here is to install Apache 2.0.43 in a folder called C:apache, NOT in the default installation folder that the installer wants to use. This is because the default installation is a Windows-friendly location with spaces in the pathname. Spaces in pathnames can cause problems with software developed for Linux, which is where most open source software is developed. 8. Click "Install". The installer will do its thing, and you will see various windows popping up and disappearing. This is normal. When the installer is finished, you should see a "successful" message and there should be a new icon in your system tray. 9. The installer starts Apache by default, so once the installer completes, you can open up a browser window and browse to http://localhost./ You should see the default Apache home page. If you don't see this, go back to Step 3 and try again. The MSI installer is about as painless as you can get. This will leave you with c:apacheApache2 as your Apache home directory. 10. Once you have verified that Apache is running on port 80, right click on the Apache System Tray icon and choose "Open Apache Monitor". Then click the "Stop" button to stop Apache. Apache will be started again after Tomcat and JK are installed. Installing Tomcat 1. Create a folder on your hard drive. Call it tomcat, and put it in the C drive root, so that you end up with C: omcat. 2. Download the Tomcat binary. The latest version of Tomcat is 4.1.18. Get the binary for Windows here: http://apache.mirrorcentral.com/dist/jakarta/tomcat-4/binaries/tomcat-4.1.18 .exe. Save the file to your hard drive, and remember where you put it. 3. Execute the EXE file you downloaded in Step 2. This will start the installer. Read the license, and if you agree, click "I Agree" and go to the next screen. 4. On the next screen, select the box that says "NT Service". If you want to install the Tomcat source code (entirely optional, you don't need it to run Tomcat) then select that option as well. Leave the default selections as they are. Click Next. 5. On the next screen, DON'T take the installation directory default. Click the Browse button, and choose the folder you created in Step 1. This will leave you with something like C: omcatTomcat 4.1. This isn't ideal...you don't want spaces in the name. Change the last part of the path to something like "tomcat-4-1-18" so that you end up with c: omcat omcat-4-1-18 in the directory field. 6. Click Next. The installer will start copying files. Eventually you will be presented with a screen asking for a password for the admin user. Type in a password, making sure that you can remember it later. Leave the port number at 8080. If you change it, you will have to manually edit Tomcat's config files. Click Next. 7. When the installer is finished, you will have a directory structure for Tomcat at c: omcat omcat-4-1-18, and the service should be running. You can verify the service is running by accessing http://localhost:8080/. Note that since Tomcat is installed as a service, you can manage it with the Services tool by clicking Start->Administrative Tools->Services and looking for service called Apache Tomcat 4.1. 8. Verify the JSP examples work at http://localhost:8080/examples/jsp/index.html and that the servlet examples work at http://localhost:8080/examples/servlets/index.html. Installing the JK Connector The JK connector is what Apache and Tomcat use to "speak" with each other. It's a separate piece of software, distinct from both Apache and Tomcat. There is also a JK2 connector, but in this HOWTO we will be working with the JK connector. The goal here is to get JSP and servlets to run on port 80, without having to set Tomcat to run on port 80. It is possible to run Tomcat on port 80 as a stand-alone web server, but in many situations, there is a need to use Apache on port 80. The connector acts as the conduit between Apache and Tomcat in that scenario. 1. Download the JK connector here: http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk/release/v1.2.1 /bin/win32/ In our case, we want the file called mod_jk-2.0.43.dll because we are using Apache 2.0.43. 2. The file is an Apache module, it is NOT a Tomcat JAR file or WAR file. It doesn't belong in Tomcat's directory structure, it belongs in a place where Apache can find it. For Apache 2.0.43, that is APACHE_HOMEmodules, where APACHE_HOME is equal to your Apache install location. In our case, that is c:apacheApache2, so we want to put the JK DLL file into c:apacheApache2modules. You should end up with a file called c:apacheApache2modulesmod_jk-2.0.43.dll on your hard drive. If you notice that the other files in c:apacheApache2modules end in "*.so", that's OK. Both "*.so" and "*.dll" are valid Apache module extensions on Windows systems. NOTE: from now on, APACHE_HOME = c:apacheApache2 or the name of your Apache home directory. 3. Edit Apache's configuration file. It is located in APACHE_HOMEconf and is called httpd.conf. Don't be nervous, there is a copy in the same directory called httpd.default.conf. You can always revert back to the default settings if you need to by copying that file. 4. Edit httpd.conf in your favorite text editor. DO NOT edit it in Micro$oft Word!! Use Notepad or another editor. Scroll down to where you see a bunch of lines that say "LoadModule". At the end of this list, add a line that says: LoadModule jk_module modules/mod_jk-2.0.43.dll Save the file you just edited to the APACHE_HOMEconf directory, and before going any further, verify that you have things setup correctly. Open a command prompt window by clicking Start->Run and typing cmd and clicking OK. At the prompt, type c:apacheApache2 inApache.exe -t and hit return. You should see a message that says "Syntax OK". If you don't see this message, go back to Step 1 and review any changes you have made to determine the error. Note that using "-t" on the command line WILL NOT start the Apache service, it just checks the changes that you made to httpd.conf for any errors. 5. Edit Tomcat's configuration. First, make a copy of c: omcat omcat-4-1-18confserver.xml. Now edit c: omcat omcat-4-1-18confserver.xml. Look for a line that says <Server port="8005" shutdown="SHUTDOWN" debug="0"> Just below that line, add the following: <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" modJk="c:/apache/Apache2/modules/mod_jk-2.0.43.dll" /> Now look for a line that says <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true"> Just below that line, add the following: <Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" append="true" forwardAll="false" modJk="c:/apache/Apache2/modules/mod_jk-2.0.43.dll" /> (note that this line, while similar to the first one, is different) Save the changes you made to server.xml. Restart the Tomcat service. Wait a few seconds, and then check to see if there is a file called mod_jk.conf in c: omcat omcat-4-1-18confauto (c: omcat omcat-4-1-18confautomod_jk.conf). If there is, all is well. If there isn't, go back to the beginning of Step 5 and verify the changes you made to server.xml. By adding the two Listener elements to server.xml, you are causing Tomcat to generate the necessary Apache configuration directives for mod_jk automatically. You don't need to type them by hand. This is a very convenient feature, but it is optional. If you want to configure Apache by hand, you are welcome to do so, but that is not covered here in this HOWTO. 6. Almost done on the Tomcat side. JK, in the Apache module, uses the concept of a "worker" to send and receive info to Tomcat. We need to tell the worker where Tomcat is, and what port we want it to use. This is done with a workers.properties file. We want to put the workers.properties file into c: omcatTomcat-4-1-18confjk, though it can be anywhere. So, open up Notepad or your favorite text editor with a blank file, and add the following lines to it: # BEGIN workers.properties # Definition for Ajp13 worker worker.list=ajp13 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 # END workers.properties Save the file as c: omcatTomcat-4.1.18confjkworkers.properties. Note that the default name for a JK worker is "ajp13". You can call it what you like, but my advice is don't change it until you have a completely working installation and can see how all the pieces fit together. 7. Now go back to Apache's httpd.conf file, and edit it (c:apacheApache2confhttpd.conf). At the very end of the file, add the following lines: JkWorkersFile "c: omcatTomcat-4-1-18confjkworkers.properties" JkLogFile "c: omcatTomcat-4-1-18logsmod_jk.log" Include c:/tomcat/tomcat-4-1-18/conf/auto/mod_jk.conf Save the file, and verify your syntax by running c:apacheapache2 inapache.exe -t at a command prompt. You should see a message that says "Syntax OK". If you don't see this message, review the edits you just made and make sure that c:/tomcat/tomcat-4-1-18/conf/auto/mod_jk.conf and workers.properties actually exist where they should. Installation Checklist OK, that was a lot of work. By now, you should have the following environment: JDK installed in c:j2sdk1.4.1_01 JAVA_HOME environment variable set for all users (System level) to c:j2sdk1.4.1_01 The JK DLL downloaded from the Jakarta site and placed in c:apacheApache2modules Apache installed in c:apacheapache2, with "Syntax OK" messages after both the LoadModule edit and the Jk/Include edit, and able to view the Apache welcome page at http://localhost/ Tomcat installed in c: omcat omcat-4-1-18, successfully restarted with both Listener element edits to server.xml, and able to view the Tomcat welcome page and execute the Tomcat examples at http://localhost:8080/ A file called workers.properties located in c: omcatTomcat-4-1-18confjk Checking Your Installation 1. Start Tomcat as a service using the service control panel. Start->Application Tools->Services. If Tomcat is running, stop it and then start it. Wait a few seconds before continuing. 2. Start Apache using the Apache Monitor in your System Tray. Right click on the System Tray icon, and choose "Open Apache Monitor", then click "Start". Wait a few seconds before continuing. 3. Verify the Apache welcome page at http://localhost/ 4. Verify the Tomcat examples at http://localhost:8080/examples/jsp/index.html 5. Verify Tomcat examples available on port 80 at http://localhost/examples/jsp/index.html If you can execute the Tomcat examples successfully without "8080" on the URL, then mod_jk is working correctly. For more info, consult the Tomcat documentation as well as the tomcat-user mailing list. If you want to use this HOWTO for something other than "localhost", then all you have to do is use "www.your-domain.com" everywhere it says "localhost". My advice in that scenario would be to copy the existing, default Host container in Tomcat's server.xml, and change the "name" parameter to "www.your-domain.com", then restart Tomcat (to re-gen mod_jk.conf with the new hostname) and restart Apache. Making a copy of the localhost Host container in server.xml will leave the localhost container as a failsafe default, which might cut down on problems in the future. NOTE: in Tomcat, virtual hosts are "Hosts". That is, as far as Tomcat is concerned, localhost is a virtual host. So, if you want to setup http://www.server-a.com/ and http://www.server-b.com/, you just need more copies of the Host container included in the default server.xml that comes with Tomcat. Doing it in production is a little more complicated than that, but that's the essence of how to get Tomcat to work for more than localhost. Because this HOWTO describes using the Apache auto-config option of JK, getting Tomcat to work with your virtual hosts means Apache will work. This means that you can test your URL and your application contexts using ":8080" on your URL without affecting Apache. When you have it working, simply restart Apache so that it picks up the new mod_jk.conf file generated by Tomcat and you should be well on your way. Copyright © 2002 John Turner. All rights reserved. Herbert Alexander Faleiros PHYSIS - Diretor jurídico Desenvolvedor Java Administrador de redes Graduando em Física - UFSCar [EMAIL PROTECTED] [EMAIL PROTECTED] 55 (16) 9117 2962 ----- Original Message ----- From: "Alvaro Seixas" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Thursday, February 06, 2003 8:57 AM Subject: [java-list] Apache 2 + Tomcat 4 Ola a todos! Estou tentando fazer a integracao entre o Apache 2 e o Tomcat 4.1.18 no Win2k, porem nao estou tendo sucesso. Consigo rodar os 2, mas qdo vou rodar os exemplos da erro. Li o manual do Tomcat mas nao ajudou muito. O que fiz ate agora foi o seguinte: httpd.conf: <IfModule !mod_jk.c> LoadModule jk_module modules/mod_jk-2.0.43.dll </IfModule> JkWorkersFile "C:/Program Files/Apache Group/Apache2/conf/workers2.properties" JkLogFile "C:/Program Files/Apache Group/Tomcat 4.1/logs/mod_jk2.log" JkMount /servlet/* ajp13 JkMount /*.jsp ajp13 workers2.properties: # Define the communication channel [channel.socket:localhost:8009] info=Ajp13 forwarding over socket CATALINAId=10.0.0.3:8009 # Map the CATALINA examples webapp to the Web server uri space [uri:/examples/*] info=Map the whole webapp jk2.properties: channelSocket.port=8009 channelSocket.address=10.0.0.3 Por favor, alguem poderia me ajudar???? ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] ------------------------------------------------------------------------- ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------