Tomcat and Apache

From ArchWiki

Jump to: navigation, search

This document describes the steps needed to install Apache Tomcat. It also optionally describes how to integrate Tomcat with the Apache Web Server, and how to configure MySQL to work with Tomcat Servlets and JSPs.

Install and configure Apache as in the Apache, PHP, and MySQL tutorial. You may install PHP and MySQL at this time if you want them.

Contents

[edit] Installation

pacman -Sy tomcat

[edit] Configuring Tomcat

Edit /etc/conf.d/tomcat. Change CATALINA_USER to some user that suites your system (like "nobody")

modprobe capability

Now add capabilities to modules in /etc/rc.conf

[edit] Test Tomcat

Run in Terminal (as root)

/etc/rc.d/tomcat start

Notice that you can check the logs in /opt/tomcat/logs/catalina.log

Tomcat should be running. Test by visiting http://localhost:8080/ in a web browser. You can browse the JSP and servlet examples if you like.

This is all that is needed to run Tomcat as a stand-alone server. You can add new webapp directories to the /opt/tomcat/webapps directory. Optionally, if you want to place webapps in a different directory, you can make /opt/tomcat/webapps/ a symbolic link to another directory. For example, if you wanted to place your web applications in /home/httpd/tomcat run these commands (as root):

cd /opt/tomcat
mv webapps /home/httpd/tomcat
ln -s /home/httpd/tomcat/webapps webapps

You can also place symbolic links within the webapps directory.

If you wish tomcat to start on bootup:
Edit /opt/tomcat/bin/catalina.sh and add this line at the top:

JAVA_HOME=/opt/java

This is needed because JAVA_HOME is not set when the daemons are started
Edit /etc/rc.conf:

Daemons=(some daemons now add tomcat)

Or add this line to rc.local:

/etc/rc.d/tomcat start

[edit] Configure Apache

Download mod_jk from http://tomcat.apache.org/download-connectors.cgi?Preferred=http%3A%2F%2Fapache.multidist.com and copy it to the directory /usr/lib/apache/. Then rename the file to mod_jk.so and set it executeable with

chmod a+x mod_jk.so

Edit /etc/httpd/conf/httpd.conf
Add this line to the end of the ~LoadModule section:

LoadModule jk_module               modules/mod_jk.so

Add these lines below the ~LoadModule section:

JkWorkersFile   /etc/httpd/conf/workers.properties
JkShmFile       /var/run/shm.file
JkShmSize       1048576

Create the file /etc/httpd/conf/workers.properties. It should contain the following:

# Define some properties
workers.apache_log=/var/log/httpd/
workers.tomcat_home=/opt/tomcat
workers.java_home=/opt/java
ps=/
worker.list=worker2
# Define worker's properties
worker.worker2.type=ajp13
worker.worker2.host=localhost
worker.worker2.port=8009
worker.worker2.mount=/jsp-examples /jsp-examples/*

Start Apache. Run in terminal (as root):

/etc/rc.d/httpd start

Only run httpd after tomcat is started (EDIT: I'm not sure if this is true, I can restart & start tomcat and apache seperatly from eachother, I will just get a 'Service unavailable' in Apache if I request a .jsp while tomcat is restarting..)

visit http://localhost/jsp-examples The Tomcat JSP examples should be visible.

If you want to have URLs other than examples map to tomcat, modify the .mount attribute like

worker.worker2.mount=/jsp-examples /jsp-examples/* /someapp /someapp/* 

to your workers.properties file. The someapp will map http://localhost/someapp/ to /opt/tomcat/webapps/someapp/ as interpretted by tomcat. There are more complex workers.properties configurations; search the website for more info. http://tomcat.apache.org/connectors-doc/reference/workers.html

[edit] Configure MySQL

Do this section only if you want to connect to MySQL from within Tomcat or the Java environment in general.

Review the MySQL documentation and download the driver. 3.0 is a good choice: http://www.mysql.com/products/connector-j/

Untar the driver and copy =mysql-connector-java-3.0.11-stable-bin.jar into /opt/java/jre/lib/ext

tar xfvz mysql-connector-java-3.0.11-stable.tar.gz
cp mysql-connector-java-3.0.11-stable/mysql-connector-java-3.0.11-stable-bin.jar /opt/java/jre/lib/ext

start MySQL if it isn't already running. (as root):

/etc/rc.d/mysqld start

Test that the driver can be loaded:
Save this as ~TestMysql.java

    public class TestMysql {
        public static void main(String[[]] args) {
            try {
                Class.forName(\"com.mysql.jdbc.Driver\").newInstance();
            } catch (Exception e) {
                System.out.println(\"The driver couldn't be loaded\");
                return;
            }
            System.out.println(\"The driver was loaded\");
        }
    }

Compile the file:

$ javac TestMysql.java

Run the file

$ java TestMysql

It will output "The driver was loaded" if the driver is available, otherwise "The driver couldn't be loaded"

You should be able to use the driver using DriverManager.getConnection() in Java programs now. It should also automatically be available to Tomcat servlets and JSPs. See The Mysql Connector/J documentation for more information.

Personal tools