old-www/HOWTO/html_single/MMBase-Inst-HOWTO/index.html

7782 lines
108 KiB
HTML
Raw Permalink Blame History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>&#13; MMBase Installation HOWTO
</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="article"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="ARTICLE"
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="title"
><A
NAME="AEN2"
></A
><SPAN
CLASS="application"
>MMBase</SPAN
> Installation HOWTO</H1
><H3
CLASS="author"
><A
NAME="AEN5"
>Adrian Offerman</A
></H3
><DIV
CLASS="affiliation"
><DIV
CLASS="address"
><P
CLASS="address"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;<TT
CLASS="email"
>&#60;<A
HREF="mailto:tldp@NOSPAM.offerman.net"
>tldp@NOSPAM.offerman.net</A
>&#62;</TT
><br>
&nbsp;&nbsp;&nbsp;&nbsp;</P
></DIV
></DIV
><SPAN
CLASS="releaseinfo"
>minor corrections<BR></SPAN
><P
CLASS="copyright"
>Copyright &copy; 2003 - 2006 Adrian Offerman</P
><P
CLASS="pubdate"
>June 25, 2006<BR></P
><DIV
CLASS="revhistory"
><TABLE
WIDTH="100%"
BORDER="0"
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
COLSPAN="3"
><B
>Revision History</B
></TH
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.3.5</TD
><TD
ALIGN="LEFT"
>2006-06-25</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Tomcat init script</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.3.4</TD
><TD
ALIGN="LEFT"
>2005-09-18</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>minor corrections</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.3.2</TD
><TD
ALIGN="LEFT"
>2005-01-25</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>MMBase 1.7.3, Java 1.5.0-01</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.3.1</TD
><TD
ALIGN="LEFT"
>2004-12-26</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Email module</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.3.0</TD
><TD
ALIGN="LEFT"
>2004-12-25</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>MMBase 1.7.2, Tomcat 5.5.4, Java 1.5.0, MySQL Connector/J 3.0.16-ga, Jikes 1.22</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.2.6</TD
><TD
ALIGN="LEFT"
>2004-07-27</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>minor additions</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.2.5</TD
><TD
ALIGN="LEFT"
>2004-02-28</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Creative Commons copyright license adjusted</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.2.4</TD
><TD
ALIGN="LEFT"
>2004-01-22</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Creative Commons copyright license; minor additions and corrections</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.2.3</TD
><TD
ALIGN="LEFT"
>2003-12-26</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>minor additions and corrections</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.2.2</TD
><TD
ALIGN="LEFT"
>2003-12-20</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>copyright adjusted</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.2.1</TD
><TD
ALIGN="LEFT"
>2003-12-18</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>minor corrections</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.2.0</TD
><TD
ALIGN="LEFT"
>2003-12-15</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>JK 2 Connector setup added</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 0.1.0</TD
><TD
ALIGN="LEFT"
>2003-12-10</TD
><TD
ALIGN="LEFT"
>Revised by: AO</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>initial draft</TD
></TR
></TABLE
></DIV
><DIV
><DIV
CLASS="abstract"
><A
NAME="AEN82"
></A
><P
></P
><P
>&#13; This document describes the installation of the
<SPAN
CLASS="application"
>MMBase</SPAN
>
content management system
on a <SPAN
CLASS="systemitem"
>Red Hat Linux</SPAN
> distribution,
using the <SPAN
CLASS="application"
>Tomcat</SPAN
> application
server,
and integrating it with <SPAN
CLASS="application"
>MySQL</SPAN
>
and <SPAN
CLASS="application"
>Apache</SPAN
>.
</P
><P
></P
></DIV
></DIV
><HR></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>1. <A
HREF="#AEN113"
>Introduction</A
></DT
><DT
>2. <A
HREF="#AEN201"
>Installation</A
></DT
><DT
>3. <A
HREF="#AEN212"
>Installing <SPAN
CLASS="application"
>Java</SPAN
></A
></DT
><DT
>4. <A
HREF="#AEN321"
>Installing <SPAN
CLASS="application"
>Tomcat</SPAN
></A
></DT
><DT
>5. <A
HREF="#AEN433"
>Replacing <SPAN
CLASS="application"
>Tomcat</SPAN
>'s
default <SPAN
CLASS="acronym"
>JSP</SPAN
> compiler
<SPAN
CLASS="application"
>Jasper</SPAN
>
with <SPAN
CLASS="acronym"
>IBM</SPAN
>'s
<SPAN
CLASS="application"
>Jikes</SPAN
> compiler</A
></DT
><DT
>6. <A
HREF="#AEN482"
>Installing <SPAN
CLASS="application"
>ImageMagick</SPAN
></A
></DT
><DT
>7. <A
HREF="#AEN502"
>Installing <SPAN
CLASS="application"
>MMBase</SPAN
></A
></DT
><DT
>8. <A
HREF="#AEN572"
>Connecting <SPAN
CLASS="application"
>MMBase</SPAN
>
to <SPAN
CLASS="application"
>MySQL</SPAN
>
using <SPAN
CLASS="systemitem"
>MySQL Connector/J</SPAN
></A
></DT
><DT
>9. <A
HREF="#AEN634"
>Installing <SPAN
CLASS="application"
>MMBase</SPAN
>
additional applications</A
></DT
><DD
><DL
><DT
>9.1. <A
HREF="#AEN644"
>Installing
the <SPAN
CLASS="application"
>CloudContext Security</SPAN
> module</A
></DT
><DT
>9.2. <A
HREF="#AEN679"
>Installing
the <SPAN
CLASS="application"
>Media</SPAN
> module</A
></DT
><DT
>9.3. <A
HREF="#AEN683"
>Installing
the <SPAN
CLASS="application"
>Email</SPAN
> module</A
></DT
></DL
></DD
><DT
>10. <A
HREF="#AEN719"
>Configuring initial
<SPAN
CLASS="application"
>MMBase</SPAN
> settings</A
></DT
><DT
>11. <A
HREF="#AEN759"
>Running <SPAN
CLASS="application"
>MMBase</SPAN
></A
></DT
><DT
>12. <A
HREF="#JK2"
>Connecting <SPAN
CLASS="application"
>Apache</SPAN
>
and <SPAN
CLASS="application"
>Tomcat</SPAN
>
using <SPAN
CLASS="systemitem"
>mod_jk2</SPAN
></A
></DT
><DT
>13. <A
HREF="#AEN1037"
>Installing an <SPAN
CLASS="application"
>Apache</SPAN
>
reverse proxy
as a front-end
to your <SPAN
CLASS="application"
>MMBase</SPAN
> server</A
></DT
><DT
>14. <A
HREF="#AEN1064"
>Installing more <SPAN
CLASS="application"
>MMBase</SPAN
> servers
on a single <SPAN
CLASS="application"
>Tomcat</SPAN
> server</A
></DT
><DT
>15. <A
HREF="#AEN1141"
>Acknowledgements</A
></DT
><DT
>16. <A
HREF="#AEN1147"
>Contributers</A
></DT
><DT
>17. <A
HREF="#AEN1156"
>Revision history</A
></DT
><DT
>18. <A
HREF="#AEN1201"
>Disclaimer</A
></DT
><DT
>19. <A
HREF="#AEN1206"
>Copyright</A
></DT
></DL
></DIV
><P
>&#13;This document describes the installation of the
<SPAN
CLASS="application"
>MMBase</SPAN
> content management system
on a <SPAN
CLASS="systemitem"
>Red Hat Linux</SPAN
> distribution,
using the <SPAN
CLASS="application"
>Tomcat</SPAN
> application
server,
and integrating it with <SPAN
CLASS="application"
>MySQL</SPAN
>
and <SPAN
CLASS="application"
>Apache</SPAN
>.
</P
><P
>&#13;Version: 0.3.5; June 25, 2006.
</P
><P
>&#13;Author: <A
HREF="http://www.offerman.net/"
TARGET="_top"
>Adrian Offerman</A
>
</P
><P
>&#13;The latest version of this document can be found at:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/"
TARGET="_top"
>http://www.offerman.net/MMBase-Installation-HOWTO/</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Feedback is welcome at:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/feedback.html"
TARGET="_top"
>http://www.offerman.net/MMBase-Installation-HOWTO/feedback.html</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;For questions, check out the
<SPAN
CLASS="application"
>MMBase</SPAN
> website:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://www.mmbase.org/"
TARGET="_top"
>http://www.mmbase.org/</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;You can find the
<SPAN
CLASS="application"
>MMBase</SPAN
> documentation at:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://www.mmbase.org/docs/"
TARGET="_top"
>http://www.mmbase.org/docs/</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Good luck!
</P
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN113"
></A
>1. Introduction</H1
><P
>&#13;&#62;From the <SPAN
CLASS="application"
>MMBase</SPAN
> website
(<A
HREF="http://www.mmbase.org"
TARGET="_top"
>www.mmbase.org</A
>):
<A
NAME="AEN118"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;<SPAN
CLASS="QUOTE"
>"<SPAN
CLASS="application"
>MMBase</SPAN
>
is a Web Content Management System
with strong multimedia features.
<SPAN
CLASS="application"
>MMBase</SPAN
>
has a large installed base in The Netherlands,
and is used by major Dutch broadcasters, publishers, educational institutes,
national and local governments.
<SPAN
CLASS="application"
>MMBase</SPAN
>
is written in <SPAN
CLASS="application"
>Java</SPAN
>,
it is Open Source Software (<SPAN
CLASS="acronym"
>MPL</SPAN
>)
and all standards used are as 'open' as possible.
The system can be used with all major operating systems, application servers
and databases."</SPAN
>
</P
></BLOCKQUOTE
>
</P
><P
>&#13;Unfortunately, the installation of
<SPAN
CLASS="application"
>MMBase</SPAN
>
is not well documented.
Furthermore, when searching the internet looking for installation clues
and trying out tips,
it turns out that the details of the installation have changed frequently.
</P
><P
>&#13;This document describes the installation of the
<SPAN
CLASS="application"
>MMBase</SPAN
> content management system
on a <SPAN
CLASS="systemitem"
>Red Hat Linux</SPAN
> distribution,
using the <SPAN
CLASS="application"
>Tomcat</SPAN
> application
server,
and the integration with <SPAN
CLASS="application"
>MySQL</SPAN
>
and <SPAN
CLASS="application"
>Apache</SPAN
>.
</P
><P
>&#13;It is based on our own experience
and compiled to the benefit of the community.
</P
><P
>&#13;These are the ingredients we used to cook up this recipe ourselves:
<P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>&#13;<SPAN
CLASS="systemitem"
>Red Hat 8.0</SPAN
> distribution
running a <SPAN
CLASS="systemitem"
>2.4.20 kernel</SPAN
>,
with <SPAN
CLASS="systemitem"
>Alan Cox 2</SPAN
>
and
<SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>EA</SPAN
>/<SPAN
CLASS="acronym"
>ACL</SPAN
></SPAN
>
extensions.
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>Java 2 Software Developers Kit (<SPAN
CLASS="acronym"
>SDK</SPAN
>)</SPAN
>
and <SPAN
CLASS="application"
>Java 2 Run-time Engine (<SPAN
CLASS="acronym"
>J2RE</SPAN
>)</SPAN
>
from <SPAN
CLASS="application"
>Sun's Java 2 Platform Standard Edition 5.0 (<SPAN
CLASS="acronym"
>J2SE</SPAN
>) (version 1.5.0-01)</SPAN
>,
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>Apache Jakarta Tomcat 5.5.4</SPAN
>,
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>ImageMagick 6.1.3-7</SPAN
>,
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>MMBase 1.7.3 with various modules</SPAN
>,
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>MySQL Connector/J 3.0.16-ga</SPAN
>,
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>Jikes 1.22</SPAN
>.
</P
></LI
></UL
>
And before:
<P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>&#13;<SPAN
CLASS="systemitem"
>Red Hat 8.0</SPAN
> distribution
running a <SPAN
CLASS="systemitem"
>2.4.20 kernel</SPAN
>,
with <SPAN
CLASS="systemitem"
>Alan Cox 2</SPAN
>
and
<SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>EA</SPAN
>/<SPAN
CLASS="acronym"
>ACL</SPAN
></SPAN
>
extensions.
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>Java 2 Software Developers Kit (<SPAN
CLASS="acronym"
>SDK</SPAN
>)</SPAN
>
and <SPAN
CLASS="application"
>Java 2 Run-time Engine (<SPAN
CLASS="acronym"
>J2RE</SPAN
>)</SPAN
>
from the <SPAN
CLASS="application"
>Blackdown Java 2 <SPAN
CLASS="acronym"
>JDK</SPAN
> version v1.4.1-01</SPAN
>,
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>Apache Jakarta Tomcat 4.1.27</SPAN
>,
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>ImageMagick 5.4.7-5</SPAN
>,
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>MMBase 1.6.5 for <SPAN
CLASS="acronym"
>JDK</SPAN
> 1.4</SPAN
>,
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>MySQL Connector/J 3.0.8</SPAN
>,
</P
></LI
><LI
><P
>&#13;<SPAN
CLASS="application"
>Jikes 1.18</SPAN
>.
</P
></LI
></UL
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN201"
></A
>2. Installation</H1
><P
>&#13;Although we installed <SPAN
CLASS="application"
>MMBase</SPAN
>
on a kernel with the <SPAN
CLASS="systemitem"
>Alan Cox</SPAN
>
and
<SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>EA</SPAN
>/<SPAN
CLASS="acronym"
>ACL</SPAN
></SPAN
>
extensions,
these features are no prerequisites.
</P
><P
>&#13;We assume that you have already installed and configured
<SPAN
CLASS="application"
>Apache</SPAN
>
and <SPAN
CLASS="application"
>MySQL</SPAN
>
on your server.
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN212"
></A
>3. Installing <SPAN
CLASS="application"
>Java</SPAN
></H1
><P
>&#13;Download the latest versions of the
<SPAN
CLASS="application"
>Java 2 Development Kit
(<SPAN
CLASS="acronym"
>JDK</SPAN
>)</SPAN
> or
<SPAN
CLASS="application"
>Run-time Engine
(<SPAN
CLASS="acronym"
>JRE</SPAN
>)</SPAN
>,
and the accompanying documentation from:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://java.sun.com/"
TARGET="_top"
>http://java.sun.com</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Installation instructions and release notes for the
<SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JDK</SPAN
></SPAN
> and
<SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JRE</SPAN
></SPAN
>
are available at the download page.
</P
><P
>&#13;Make the binary distribution of the
<SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JDK</SPAN
></SPAN
>
executable
and extract in a new directory:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chmod +x jdk-xxx.bin
cd /usr/local/
.../jdk-xxx.bin
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Install the <SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JDK</SPAN
></SPAN
>
documentation
by unzipping it in the
<SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JDK</SPAN
></SPAN
> directory:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
cd /usr/local/jdk-xxx/
unzip .../jdk-xxx-doc.zip
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Change the ownership of the
<SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JDK</SPAN
></SPAN
> directory
and make it available as
<TT
CLASS="filename"
>/usr/local/j2sdk/</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown -R root:root /usr/local/jdk-xxx/
ln -s /usr/local/jdk-xxx /usr/local/j2sdk
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;If you need only the
<SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JRE</SPAN
></SPAN
>,
the installation would be like this:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chmod +x jre-xxx.bin
cd /usr/local/
.../jre-xxx.bin
chown -R root:root /usr/local/jre-xxx/
ln -s /usr/local/jre-xxx /usr/local/j2re
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Using <SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JDK</SPAN
></SPAN
>
version 1.5.0 caused
our <SPAN
CLASS="application"
>Tomcat</SPAN
> server
to crash every now and then:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# SIGSEGV (0xb) at pc=0x4042db3f, pid=11991, tid=16386
#
# Java VM: Java HotSpot(TM) Server VM (1.5.0-b64 mixed mode)
# Problematic frame:
# V [libjvm.so+0x3abb3f]
#
</PRE
></FONT
></TD
></TR
></TABLE
>
Upgrading to version 1.5.0-01 seemed to solve these problems.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;<DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;For the (previously used)
<SPAN
CLASS="application"
>BlackDown Java for Linux distribution</SPAN
>:
</P
><P
>&#13;Find yourself a mirror for the
<SPAN
CLASS="application"
>BlackDown Java Development Kit</SPAN
>
at:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://www.blackdown.org/java-linux/mirrors.html"
TARGET="_top"
>http://www.blackdown.org/java-linux/mirrors.html</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;There you can download the latest versions of the
<SPAN
CLASS="application"
>J2 Software Development Kit (<SPAN
CLASS="acronym"
>SDK</SPAN
>)</SPAN
>
and
<SPAN
CLASS="application"
>Run-time Engine (<SPAN
CLASS="acronym"
>RE</SPAN
>)</SPAN
>.
</P
><P
>&#13;Make sure you pick out the right version for the
<SPAN
CLASS="systemitem"
>gcc</SPAN
> library installed on your system.
You can find out the version currently installed by typing:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
rpm -q libgcc
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Installation instructions for the
<SPAN
CLASS="application"
>Java Development Kit</SPAN
>
are available as
<TT
CLASS="filename"
>INSTALL-j2sdk</TT
>
and <TT
CLASS="filename"
>INSTALL-j2re</TT
>.
</P
><P
>&#13;Make the binary distribution of the
<SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>SDK</SPAN
></SPAN
>
executable
and extract in a new directory:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chmod +x j2sdk-xxx.bin
cd /usr/local/
.../j2sdk-xxx.bin
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Change the ownership of the
<SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>J2SDK</SPAN
></SPAN
>
directory
and make it available as
<TT
CLASS="filename"
>/usr/local/j2sdk/</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown -R root:root /usr/local/j2sdk-xxx/
ln -s /usr/local/j2sdk-xxx /usr/local/j2sdk
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Do the same for the
<SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>RE</SPAN
></SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chmod +x j2re-xxx.bin
cd /usr/local/
.../j2re-xxx.bin
chown -R root:root /usr/local/j2re-xxx/
ln -s /usr/local/j2re-xxx /usr/local/j2re
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;Since we didn't install the
<SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JDK</SPAN
></SPAN
>
and <SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JRE</SPAN
></SPAN
>
in our path,
we have to add the <TT
CLASS="filename"
>bin/</TT
> directories
to our <TT
CLASS="envar"
>$PATH</TT
> environment variable.
To make sure the <SPAN
CLASS="application"
>Java</SPAN
>
distributions and classes can be found,
we set the <TT
CLASS="envar"
>$JAVA_HOME</TT
>
and <TT
CLASS="envar"
>$CLASSPATH</TT
> variables as well.
</P
><P
>&#13;For the <SPAN
CLASS="application"
>Bourne shells</SPAN
>,
create a file <SPAN
CLASS="systemitem"
>/etc/profile.d/java.sh</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
if ! echo ${PATH} | grep -q /usr/local/j2sdk/bin ; then
export PATH=/usr/local/j2sdk/bin:${PATH}
fi
if ! echo ${PATH} | grep -q /usr/local/j2re/bin ; then
export PATH=/usr/local/j2re/bin:${PATH}
fi
export JAVA_HOME=/usr/local/j2sdk
export CLASSPATH=.:/usr/local/j2sdk/lib/tools.jar:/usr/local/j2re/lib/rt.jar
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Set its ownership and access rights:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown root:root /etc/profile.d/java.sh
chmod 755 /etc/profile.d/java.sh
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Do the same for <SPAN
CLASS="application"
>C shells</SPAN
>,
by creating the file
<SPAN
CLASS="systemitem"
>/etc/profile.d/java.csh</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
if ( "${path}" !~ */usr/local/j2sdk/bin* ) then
set path = ( /usr/local/j2sdk/bin $path )
endif
if ( "${path}" !~ */usr/local/j2re/bin* ) then
set path = ( /usr/local/j2re/bin $path )
endif
setenv JAVA_HOME /usr/local/j2sdk
setenv CLASSPATH .:/usr/local/j2sdk/lib/tools.jar:/usr/local/j2re/lib/rt.jar
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;and setting its ownership and access rights:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown root:root /etc/profile.d/java.csh
chmod 755 /etc/profile.d/java.csh
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Now the <SPAN
CLASS="application"
><SPAN
CLASS="acronym"
>JDK</SPAN
></SPAN
>
should be available to everyone on your system.
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;You can test the <SPAN
CLASS="application"
>Java</SPAN
> engine
by typing:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
java -version
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;or create a file <TT
CLASS="filename"
>Test.java</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
public class Test {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;and test the compiler:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
javac Test.java
java Test
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN321"
></A
>4. Installing <SPAN
CLASS="application"
>Tomcat</SPAN
></H1
><P
>&#13;Download a binary distribution of
<SPAN
CLASS="application"
>Tomcat</SPAN
>
from the <SPAN
CLASS="application"
>Apache Jakarta</SPAN
> website:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://jakarta.apache.org/tomcat/"
TARGET="_top"
>http://jakarta.apache.org/tomcat/</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;If you don't want to run the
<SPAN
CLASS="application"
>Tomcat</SPAN
> daemon as
<SPAN
CLASS="systemitem"
>root</SPAN
>,
create a new user/group <SPAN
CLASS="systemitem"
>tomcat</SPAN
>
(first make sure that the
<SPAN
CLASS="acronym"
>UID</SPAN
> and <SPAN
CLASS="acronym"
>GID</SPAN
>
you use
are still available
by checking the files <TT
CLASS="filename"
>/etc/passwd</TT
>
and <TT
CLASS="filename"
>/etc/group</TT
>):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
groupadd -g 220 tomcat
useradd -u 220 -g tomcat -c "Tomcat" -r -d /usr/local/tomcat -s "/sbin/nologin" tomcat
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;You really should not use the
<SPAN
CLASS="systemitem"
>root</SPAN
> account
to run the <SPAN
CLASS="application"
>Tomcat</SPAN
> daemon;
(using Tomcat version 4.1.27) we found out that this allows the
<SPAN
CLASS="application"
>MMBase</SPAN
>
<SPAN
CLASS="systemitem"
>admin</SPAN
> user
to write backup dumps of his sites anywhere on the system.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;&#60;TODO: better solution available?&#62;
</P
><P
>&#13;Extract the <SPAN
CLASS="application"
>Tomcat</SPAN
> distribution
in a new directory:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
cd /usr/local/
tar -zxvf .../jakarta-tomcat-xxx.tar.gz
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Version 4.1.27 came with a hot-fix:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
cd /usr/local/jakarta-tomcat-xxx/
tar -zxvf .../xxx-hotfix-xxx.tar.gz
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;Change the ownership of the
<SPAN
CLASS="application"
>Tomcat</SPAN
> directory
and make it available as
<TT
CLASS="filename"
>/usr/local/tomcat/</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown -R tomcat:tomcat /usr/local/jakarta-tomcat-xxx
ln -s /usr/local/jakarta-tomcat-xxx /usr/local/tomcat
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Open up the firewall for web access
to the <SPAN
CLASS="application"
>Tomcat</SPAN
> server
by adding to the file
<TT
CLASS="filename"
>/etc/sysconfig/iptables</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 8080 --syn -j ACCEPT
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;You need to reboot your system to make this rule effective
or restart the <SPAN
CLASS="application"
>iptables</SPAN
> firewall:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
service iptables restart
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Since (for some odd reason) some network managers allow outgoing web
connections only to
<SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>TCP</SPAN
> port 80</SPAN
>,
there might be people around that cannot access your
<SPAN
CLASS="application"
>Tomcat</SPAN
>
(and <SPAN
CLASS="application"
>MMBase</SPAN
>) server
through <SPAN
CLASS="systemitem"
>port 8080</SPAN
>.
Further <A
HREF="#JK2"
>below</A
>
we will explain how to install
a <SPAN
CLASS="acronym"
>JK 2</SPAN
> mapping or a reverse proxy
in <SPAN
CLASS="application"
>Apache</SPAN
>,
so <SPAN
CLASS="application"
>Tomcat</SPAN
>
and <SPAN
CLASS="application"
>MMBase</SPAN
>
can be accessed through the
<SPAN
CLASS="application"
>Apache</SPAN
> web server
at <SPAN
CLASS="systemitem"
>port 80</SPAN
>.
Apart from the port issue,
this has the advantage that you can use
<SPAN
CLASS="application"
>Apache</SPAN
>
to manage you <SPAN
CLASS="acronym"
>SSL</SPAN
> connections
and use your existing
<SPAN
CLASS="application"
>Apache</SPAN
>
logs and statistics facilities
for <SPAN
CLASS="application"
>Tomcat</SPAN
>
and <SPAN
CLASS="application"
>MMBase</SPAN
> as well.
</P
><P
>&#13;If you decide to use
<SPAN
CLASS="application"
>Apache</SPAN
>
as a front-end to your
<SPAN
CLASS="application"
>Tomcat</SPAN
>
and <SPAN
CLASS="application"
>MMBase</SPAN
> server,
there's no need to open up
<SPAN
CLASS="systemitem"
>port 8080</SPAN
>
in your firewall.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;To run <SPAN
CLASS="application"
>Tomcat</SPAN
>,
set the <TT
CLASS="envar"
>$CATALINA_HOME</TT
> environment variable:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
CATALINA_HOME=/usr/local/tomcat
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;and fire it up:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
/usr/local/tomcat/bin/startup.sh
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Now you can access
<SPAN
CLASS="application"
>Tomcat</SPAN
>'s home page through
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;:8080/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;which should give you the <SPAN
CLASS="application"
>Tomcat</SPAN
>
welcome screen.
<P
><IMG
SRC="ApacheTomcat-600x420.png"></P
>
</P
><P
>&#13;To shutdown again:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
/usr/local/tomcat/bin/shutdown.sh
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Since we want to automate the starting up and shutting down of the
<SPAN
CLASS="application"
>Tomcat</SPAN
> server,
we create a file
<TT
CLASS="filename"
>/etc/rc.d/init.d/tomcat</TT
>
to do this for us:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
#!/bin/sh
#
# Startup script for the Jakarta Tomcat Java Servlets and JSP server
#
# chkconfig: - 85 15
# description: Jakarta Tomcat Java Servlets and JSP server
# processname: tomcat
# pidfile: /var/run/tomcat.pid
# config:
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] &#38;&#38; exit 0
# Set Tomcat environment.
export JAVA_HOME=/usr/local/j2sdk
export CLASSPATH=.:/usr/local/j2sdk/lib/tools.jar:/usr/local/j2re/lib/rt.jar
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_OPTS="-server -Xms64m -Xmx512m -Dbuild.compiler.emacs=true"
export PATH=/usr/local/j2sdk/bin:/usr/local/j2re/bin:$PATH
[ -f /usr/local/tomcat/bin/startup.sh ] || exit 0
[ -f /usr/local/tomcat/bin/shutdown.sh ] || exit 0
export PATH=$PATH:/usr/bin:/usr/local/bin
# See how we were called.
case "$1" in
start)
# Start daemon.
echo -n "Starting Tomcat: "
/usr/local/tomcat/bin/startup.sh
RETVAL=$?
echo
[ $RETVAL = 0 ] &#38;&#38; touch /var/lock/subsys/tomcat
;;
stop)
# Stop daemons.
echo -n "Shutting down Tomcat: "
/usr/local/tomcat/bin/shutdown.sh
RETVAL=$?
echo
[ $RETVAL = 0 ] &#38;&#38; rm -f /var/lock/subsys/tomcat
;;
restart)
$0 stop
$0 start
;;
condrestart)
[ -e /var/lock/subsys/tomcat ] &#38;&#38; $0 restart
;;
status)
status tomcat
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Set its ownership and access rights:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown root:root /etc/rc.d/init.d/tomcat
chmod 755 /etc/rc.d/init.d/tomcat
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;And add this init script to
<SPAN
CLASS="application"
>chkconfig</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chkconfig --add tomcat
chkconfig tomcat on
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Instead of creating your own init script,
you can use the script that comes with
the <SPAN
CLASS="application"
>Tomcat</SPAN
> package:
<TT
CLASS="filename"
>/usr/local/tomcat/bin/catalina.sh</TT
>.
Make sure you set
the <SPAN
CLASS="application"
>Tomcat</SPAN
> environment
at the start of this script.
Or create a short init script that calls
the original <SPAN
CLASS="application"
>Tomcat</SPAN
> init script.
</P
><P
>&#13;See
<A
HREF="http://www.jguru.com/faq/view.jsp?EID=425628"
TARGET="_top"
>How can I start Tomcat as a daemon in Linux?</A
>.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;To install two (or even more) versions of
<SPAN
CLASS="application"
>Tomcat</SPAN
> server
on the same system,
increase the <SPAN
CLASS="systemitem"
>port</SPAN
> numbers
of the second server (e.g. by 10),
by editing the configuration file
<TT
CLASS="filename"
>/usr/local/tomcat55/conf/server.xml</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;Server port="8015" shutdown="SHUTDOWN"&#62;
...
&#60;!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --&#62;
&#60;Connector port="8090"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8453" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" /&#62;
...
&#60;!-- Define a SSL HTTP/1.1 Connector on port 8443 --&#62;
&#60;!--
&#60;Connector port="8453"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" /&#62;
--&#62;
...
&#60;!-- Define an AJP 1.3 Connector on port 8009 --&#62;
&#60;Connector port="8019"
enableLookups="false" redirectPort="8453" protocol="AJP/1.3" /&#62;
...
&#60;!-- Define a Proxied HTTP/1.1 Connector on port 8082 --&#62;
&#60;!-- See proxy documentation for more information about using this. --&#62;
&#60;!--
&#60;Connector port="8082"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" acceptCount="100" connectionTimeout="20000"
proxyPort="80" disableUploadTimeout="true" /&#62;
--&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Complete this second
<SPAN
CLASS="application"
>Tomcat</SPAN
> server installation
as above for the first server,
using adjusted directory and file names.
</P
></TD
></TR
></TABLE
></DIV
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN433"
></A
>5. Replacing <SPAN
CLASS="application"
>Tomcat</SPAN
>'s
default <SPAN
CLASS="acronym"
>JSP</SPAN
> compiler
<SPAN
CLASS="application"
>Jasper</SPAN
>
with <SPAN
CLASS="acronym"
>IBM</SPAN
>'s
<SPAN
CLASS="application"
>Jikes</SPAN
> compiler</H1
><P
>&#13;Since <SPAN
CLASS="acronym"
>IBM</SPAN
>'s
<SPAN
CLASS="application"
>Java</SPAN
> compiler
<SPAN
CLASS="application"
>Jikes</SPAN
>
is performing better than
<SPAN
CLASS="application"
>Tomcat</SPAN
>'s own
<SPAN
CLASS="acronym"
>JSP</SPAN
> compiler
<SPAN
CLASS="application"
>Jasper</SPAN
>,
it's recommended to install
<SPAN
CLASS="application"
>Jikes</SPAN
> instead.
</P
><P
>&#13;Download the sources of <SPAN
CLASS="application"
>Jikes</SPAN
>
from <SPAN
CLASS="acronym"
>IBM</SPAN
>'s Research website:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://jikes.sourceforge.net/"
TARGET="_top"
>http://jikes.sourceforge.net/</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Extract and compile <SPAN
CLASS="application"
>Jikes</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
./configure --prefix=/usr/local/jikes
make
make check
make install
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Check support for the <TT
CLASS="option"
>-encoding</TT
> option:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
/usr/local/jikes/bin/jikes -help
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;To have <SPAN
CLASS="application"
>Jikes</SPAN
>
output its error messages in a
<SPAN
CLASS="application"
>Jasper</SPAN
> compatible way,
add this <TT
CLASS="envar"
>$CATALINA_OPTS</TT
> environment variable
to <TT
CLASS="filename"
>/etc/rc.d/init.d/tomcat</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
export CATALINA_OPTS="-Dbuild.compiler.emacs=true"
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;If you get an error message saying
<SPAN
CLASS="application"
>Jikes</SPAN
> can not use
<SPAN
CLASS="acronym"
>UTF8</SPAN
> encoding,
add the following option as well:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
-DjavaEncoding=ISO-8859-1
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;Make <SPAN
CLASS="application"
>Jikes</SPAN
>
your <SPAN
CLASS="acronym"
>JSP</SPAN
> compiler
for <SPAN
CLASS="application"
>Tomcat</SPAN
>
by adding to
<TT
CLASS="filename"
>/usr/local/tomcat/conf/web.xml</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;init-param&#62;
&#60;param-name&#62;compiler&#60;/param-name&#62;
&#60;param-value&#62;jikes&#60;/param-value&#62;
&#60;/init-param&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Since entering the full path to
<SPAN
CLASS="application"
>Jikes</SPAN
>
in <TT
CLASS="filename"
>/usr/local/tomcat/conf/web.xml</TT
>
doesn't seem to work (version 4.1.27),
make the <B
CLASS="command"
>jikes</B
> program available in your path:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
ln -s /usr/local/jikes/bin/jikes /usr/local/bin/jikes
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN482"
></A
>6. Installing <SPAN
CLASS="application"
>ImageMagick</SPAN
></H1
><P
>&#13;<SPAN
CLASS="application"
>MMBase</SPAN
>
uses <SPAN
CLASS="application"
>ImageMagick</SPAN
>'s
<B
CLASS="command"
>convert</B
> tool
to build and convert its images.
</P
><P
>&#13;<SPAN
CLASS="application"
>ImageMagick</SPAN
>
is already part of the
<SPAN
CLASS="systemitem"
>Red Hat</SPAN
> distribution.
Check its availability using:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
rpm -q ImageMagick
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;If <SPAN
CLASS="application"
>ImageMagick</SPAN
>
is not available on your system,
install it
using <SPAN
CLASS="application"
>up2date</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
up2date
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;or download it from the Red Hat Network:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="https://rhn.redhat.com/"
TARGET="_top"
>https://rhn.redhat.com/</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;and install it by hand:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
rpm -ihv ImageMagick-xxx.rpm
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN502"
></A
>7. Installing <SPAN
CLASS="application"
>MMBase</SPAN
></H1
><P
>&#13;Download the binary distribution of
<SPAN
CLASS="application"
>MMBase</SPAN
>,
and the additional applications you need
(i.e. <SPAN
CLASS="application"
>CloudContext Security</SPAN
>,
<SPAN
CLASS="application"
>Media</SPAN
>,
<SPAN
CLASS="application"
>Email</SPAN
>)
(see the next section),
from:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://www.mmbase.org"
TARGET="_top"
>http://www.mmbase.org/</A
> --&#62; Download --&#62; Releases
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;<SPAN
CLASS="application"
>MMBase</SPAN
> version 1.7.2
contained a nasty bug,
resulting in problems with the editwizards.
The 1.7.3 release includes a bugfix for this problem.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;Make sure you pick out the right version for the
<SPAN
CLASS="application"
>Java 2 <SPAN
CLASS="acronym"
>JDK</SPAN
></SPAN
>
installed on your system.
You can find out the version currently installed by typing:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
java -version
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Extract the binary distribution of
<SPAN
CLASS="application"
>MMBase</SPAN
>,
copy it into the
<SPAN
CLASS="application"
>Tomcat</SPAN
> directory,
and change the ownership of the
<SPAN
CLASS="application"
>MMBase</SPAN
> directory:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
unzip mmbase-xxx.zip
cd /usr/local/tomcat/webapps/
mkdir mmbase-webapp/
cp -R .../mmbase-x.x.x/mmbase-webapp/* ./mmbase-webapp/
chown -R tomcat:tomcat ./mmbase-webapp/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Installing <SPAN
CLASS="application"
>MMBase</SPAN
> version 1.7
on <SPAN
CLASS="application"
>Tomcat</SPAN
> version 5
resulted in version incompatibilities:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
FATAL org.mmbase.servlet.MMBaseStartThread -
Could not find the MMBase module!Class
javax/servlet/http/HttpServletResponse violates loader constraints
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;We had to disable
the <SPAN
CLASS="systemitem"
>RMMCI</SPAN
> library
to get this installation up and running:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
mv /usr/local/tomcat/webapps/web-app/WEB-INF/lib/mmbase-rmmci.jar \
/usr/local/tomcat/webapps/web-app/WEB-INF/lib/mmbase-rmmci.jar.org
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;For <SPAN
CLASS="application"
>MMBase</SPAN
> version 1.7
running on <SPAN
CLASS="application"
>Tomcat</SPAN
> version 5,
enable the <SPAN
CLASS="systemitem"
>Xerces</SPAN
> libraries:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
mv /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xalan.renametojar \
/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xalan.jar
mv /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xerces.renametojar \
/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xerces.jar
mv /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xml-apis.renametojar \
/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xml-apis.jar
</PRE
></FONT
></TD
></TR
></TABLE
>
Or you will have fatal errors like:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
FATAL org.mmbase.servlet.MMBaseStartThread -
Could not find the MMBase module!org/apache/xpath/XPathAPI
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;For <SPAN
CLASS="application"
>MMBase</SPAN
> version 1.6
running on <SPAN
CLASS="application"
>Tomcat</SPAN
> version 4,
replace the <SPAN
CLASS="application"
>Tomcat</SPAN
>
<SPAN
CLASS="systemitem"
>Xerces</SPAN
> libraries
by those coming with <SPAN
CLASS="application"
>MMBase</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
mv -i /usr/local/tomcat/common/endorsed/xercesImpl.jar ~/
mv -i /usr/local/tomcat/common/endorsed/xmlParserAPIs.jar ~/
cp /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xalan.jar \
/usr/local/tomcat/common/endorsed/
chown tomcat:tomcat /usr/local/tomcat/common/endorsed/xalan.jar
chmod 644 /usr/local/tomcat/common/endorsed/xalan.jar
cp /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xerces.jar \
/usr/local/tomcat/common/endorsed/
chown tomcat:tomcat /usr/local/tomcat/common/endorsed/xerces.jar
chmod 644 /usr/local/tomcat/common/endorsed/xerces.jar
cp /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xml-apis.jar \
/usr/local/tomcat/common/endorsed/
chown tomcat:tomcat /usr/local/tomcat/common/endorsed/xml-apis.jar
chmod 644 /usr/local/tomcat/common/endorsed/xml-apis.jar
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;If you will not be using an
<SPAN
CLASS="application"
>Apache</SPAN
>
<SPAN
CLASS="acronym"
>JK 2</SPAN
> mapping or reverse proxy
(see further <A
HREF="#JK2"
>below</A
>)
as a front-end to your
<SPAN
CLASS="application"
>MMBase</SPAN
> server,
you can add to the file
<TT
CLASS="filename"
>/usr/local/tomcat/conf/server.xml</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;Context path="/mmbase" docBase="/usr/local/tomcat/webapps/mmbase-webapp" debug="0"&#62;
&#60;!-- if you want symlinks to work: --&#62;
&#60;Resources className="org.apache.naming.resources.FileDirContext" allowLinking="true" /&#62;
&#60;/Context&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;This will allow you to access your
<SPAN
CLASS="application"
>MMBase</SPAN
> server
using
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;:8080/mmbase
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;instead of:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;:8080/mmbase-webapp
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;Check if the <SPAN
CLASS="application"
>ImageMagick</SPAN
>
<B
CLASS="command"
>convert</B
> tool
is in your path:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
which convert
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;If not, add it to
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/applications/Resources/builders/images.xml</TT
>.
For example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;property name="ImageConvert.ConverterCommand"&#62;/usr/bin/X11/convert&#60;/property&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Make sure that the directory
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/builders/applications</TT
>
is writable by the servlet engine user
(for auto-installing builders):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/builders/applications
chmod 775 /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/builders/applications
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN572"
></A
>8. Connecting <SPAN
CLASS="application"
>MMBase</SPAN
>
to <SPAN
CLASS="application"
>MySQL</SPAN
>
using <SPAN
CLASS="systemitem"
>MySQL Connector/J</SPAN
></H1
><P
>&#13;We can connect
<SPAN
CLASS="application"
>MMBase</SPAN
>
to our <SPAN
CLASS="application"
>MySQL</SPAN
> database server
using <SPAN
CLASS="systemitem"
>MySQL Connector/J</SPAN
>.
This <SPAN
CLASS="acronym"
>JDBC</SPAN
> driver
for <SPAN
CLASS="application"
>MySQL</SPAN
>
can be downloaded from:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://www.mysql.com/downloads/api-jdbc.html"
TARGET="_top"
>http://www.mysql.com/downloads/api-jdbc.html</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Copy the <SPAN
CLASS="acronym"
>JDBC</SPAN
> driver
to the <SPAN
CLASS="application"
>MMBase</SPAN
>
<TT
CLASS="filename"
>lib/</TT
> directory:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
cp mysql-connector-java-xxx-bin.jar /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/
chown tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/mysql-connector-java-xxx-bin.jar
chmod 664 /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/mysql-connector-java-xxx-bin.jar
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Make this your <SPAN
CLASS="acronym"
>JDBC</SPAN
> driver
for <SPAN
CLASS="application"
>MMBase</SPAN
>
by editing
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/jdbc.xml</TT
>.
Substitute the database name
(<TT
CLASS="replaceable"
><I
>mmbase</I
></TT
>),
user (<TT
CLASS="replaceable"
><I
>mmuser</I
></TT
>)
and password (<TT
CLASS="replaceable"
><I
>mmpass</I
></TT
>)
with the database settings you'd like
<SPAN
CLASS="application"
>MMBase</SPAN
> to use.
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;property name="url"&#62;jdbc:mysql://$HOST:$PORT/$DBM&#60;/property&#62;
&#60;property name="user"&#62;mmuser&#60;/property&#62;
&#60;property name="password"&#62;mmpass&#60;/property&#62;
&#60;property name="supportclass"&#62;org.mmbase.module.database.DatabaseSupportShim&#60;/property&#62;
&#60;property name="database"&#62;mmbase&#60;/property&#62;
&#60;property name="connections"&#62;20&#60;/property&#62;
&#60;property name="host"&#62;localhost&#60;/property&#62;
&#60;property name="driver"&#62;com.mysql.jdbc.Driver&#60;/property&#62;
&#60;property name="port"&#62;3306&#60;/property&#62;
&#60;property name="querys"&#62;256&#60;/property&#62;
&#60;property name="probetime"&#62;30&#60;/property&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Set the ownership and access rights of this configuration file.
Since it contains your database name, user name and password,
make sure other users can not read this file.
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/jdbc.xml
chmod 640 /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/jdbc.xml
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Now create the <SPAN
CLASS="application"
>MySQL</SPAN
> database
you've just defined for
<SPAN
CLASS="application"
>MMBase</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
mysql -u root -p
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
CREATE DATABASE &#60;mmbase&#62;;
USE &#60;mmbase&#62;;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON &#60;mmbase&#62;.* TO
&#60;mmuser&#62;@'%' IDENTIFIED BY '&#60;password&#62;';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON &#60;mmbase&#62;.* TO
&#60;mmuser&#62;@localhost IDENTIFIED BY '&#60;password&#62;';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON &#60;mmbase&#62;.* TO
&#60;mmuser&#62;@localhost.&#60;domainname&#62; IDENTIFIED BY '&#60;password&#62;';
# RH bug fix
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON &#60;mmbase&#62;.* TO
&#60;mmuser&#62;@&#60;hostname&#62; IDENTIFIED BY '&#60;password&#62;';
flush privileges;
exit;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Substitute the hostname (<TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
>)
and domain name (<TT
CLASS="replaceable"
><I
>&#60;domainname&#62;</I
></TT
>)
with your own hostname and domain name,
and the database name (<TT
CLASS="replaceable"
><I
>&#60;mmbase&#62;</I
></TT
>),
user (<TT
CLASS="replaceable"
><I
>&#60;mmuser&#62;</I
></TT
>)
and password (<TT
CLASS="replaceable"
><I
>&#60;password&#62;</I
></TT
>)
with the values you just entered in the JDBC driver configuration file.
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;To quickly empty
your <SPAN
CLASS="application"
>MySQL</SPAN
> database,
i.e. after you've updated
your <SPAN
CLASS="application"
>MMBase</SPAN
> configuration or
application
(replace the database name <TT
CLASS="replaceable"
><I
>&#60;mmbase&#62;</I
></TT
> with your
own):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
mysqladmin -u root -p drop &#60;mmbase&#62;
mysqladmin -u root -p create &#60;mmbase&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;If you are already using quite some
<SPAN
CLASS="application"
>MySQL</SPAN
> connections
(for example for authentication by and as a back-end to your mail daemons
and <SPAN
CLASS="application"
>Apache</SPAN
> servers),
the <SPAN
CLASS="application"
>MySQL</SPAN
> server
might run out of connections (its maximum number defaults to 100).
Then <SPAN
CLASS="application"
>Tomcat</SPAN
>
could simply refuse to start or give an error message
when initiating the
<SPAN
CLASS="application"
>MySQL</SPAN
> connection pool,
or your <SPAN
CLASS="application"
>IMAP</SPAN
>
or <SPAN
CLASS="application"
>POP</SPAN
> servers will have
problems authenticating their clients.
</P
><P
>&#13;You can increase the maximum number of connections
to <SPAN
CLASS="application"
>MySQL</SPAN
>
by adding to the configuration file
<TT
CLASS="filename"
>/etc/my.cnf</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
[mysqld]
set-variable = max_connections=200
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN634"
></A
>9. Installing <SPAN
CLASS="application"
>MMBase</SPAN
>
additional applications</H1
><P
>&#13;With the release of version 1.7
<SPAN
CLASS="application"
>MMBase</SPAN
>
was reworked into a more modular structure.
The developers decided to take several modules
(i.e. <SPAN
CLASS="application"
>CloudContext Security</SPAN
>,
<SPAN
CLASS="application"
>Media</SPAN
>,
<SPAN
CLASS="application"
>Email</SPAN
>)
from the <SPAN
CLASS="application"
>MMBase</SPAN
> tree,
and make these available as separate entities.
However, at this moment
<SPAN
CLASS="application"
>MMBase</SPAN
>
doesn't have a module interface at all.
So, to use these additional applications,
the library and other files need to be placed into the installation tree
and the configuration needs to be added into the existing configuration files
by hand.
</P
><DIV
CLASS="sect2"
><HR><H2
CLASS="sect2"
><A
NAME="AEN644"
></A
>9.1. Installing
the <SPAN
CLASS="application"
>CloudContext Security</SPAN
> module</H2
><P
>&#13;&#62;From the <SPAN
CLASS="application"
>MMBase</SPAN
> website
(<A
HREF="http://www.mmbase.org"
TARGET="_top"
>www.mmbase.org</A
>):
<A
NAME="AEN650"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;<SPAN
CLASS="QUOTE"
>"<SPAN
CLASS="application"
>Cloud security</SPAN
>
uses the object <SPAN
CLASS="systemitem"
>mmbaseuser</SPAN
>
to store information used for authorisation and authentication of users.
The two main advantages of this security implementation are
that the user administration can be carried out by using a webbrowser
(instead of editing a file on the filesystem) and
that the users of your
<SPAN
CLASS="application"
>MMBase</SPAN
> installation
are available as objects in the cloud.
For instance, it is possible to create groups of users,
which are allowed to carry out certain tasks."</SPAN
>
</P
><P
>&#13;<SPAN
CLASS="QUOTE"
>"A context exists of a set of rights
which describe what you can do within this context
with an object of
<SPAN
CLASS="application"
>MMBase</SPAN
>.
For example you define read access to a the context
which is used by anonymous visitors of your site and
you can define a context with edit rights for registered users of your site.
"</SPAN
>
</P
></BLOCKQUOTE
>
</P
><P
>&#13;Move the library and other files of
the <SPAN
CLASS="application"
>CloudContext Security</SPAN
> module
into the <SPAN
CLASS="application"
>MMBase</SPAN
> installation tree:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
mv -i web-app/WEB-INF/lib/* \
/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/
mv -i web-app/WEB-INF/config/applications/* \
/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/applications/
mv -i web-app/WEB-INF/config/builders/* \
/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/builders/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Save the documentation files for later reference:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
mv -i web-app/README.txt web-app/README-PACKAGE.txt web-app/documentation web-app/src \
/usr/local/tomcat/webapps/mmbase-webapp/mmdocs/security/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Make sure all these new files are owned by
your <SPAN
CLASS="systemitem"
>tomcat</SPAN
> user as well:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown -R tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Disable the existing configuration
in the security configuration file
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/security/security.xml</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;!--
&#60;authentication class="org.mmbase.security.implementation.context.ContextAuthentication" url="context/config.xml" /&#62;
--&#62;
...
&#60;!--
&#60;authorization class="org.mmbase.security.implementation.context.ContextAuthorization" url="context/config.xml" /&#62;
--&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;And add
(from <TT
CLASS="filename"
>web-app/WEB-INF/config/security/security.xml</TT
>):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;!--
Example security.xml to switch on Cloud Context Security.
No other configuration needed
(Cloud Context Security is configured in the cloud)
@version $Id: security.xml,v 1.1 2003/06/17 16:44:01 michiel Exp $
--&#62;
&#60;authentication class="org.mmbase.security.implementation.cloudcontext.Authenticate" url="" /&#62;
&#60;authorization class="org.mmbase.security.implementation.cloudcontext.Verify" url="" /&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Make sure to include the configuration above before
the <TT
CLASS="classname"
>&#60;sharedsecret&#62;</TT
> statement,
or you will get an error like this:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
ERROR org.mmbase.util.XMLErrorHandler - security.xml line:71 column:12:
The content of element type "security" must match "(authentication,authorization,sharedsecret)".
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
></DIV
><DIV
CLASS="sect2"
><HR><H2
CLASS="sect2"
><A
NAME="AEN679"
></A
>9.2. Installing
the <SPAN
CLASS="application"
>Media</SPAN
> module</H2
><P
>&#13;&#60;TODO&#62;
</P
></DIV
><DIV
CLASS="sect2"
><HR><H2
CLASS="sect2"
><A
NAME="AEN683"
></A
>9.3. Installing
the <SPAN
CLASS="application"
>Email</SPAN
> module</H2
><P
>&#13;The <SPAN
CLASS="application"
>Email</SPAN
> module
makes it possible to send email
with <SPAN
CLASS="application"
>MMBase</SPAN
>,
using either <SPAN
CLASS="systemitem"
>SendMail</SPAN
>
or <SPAN
CLASS="systemitem"
>JMSendMail</SPAN
>.
</P
><P
>&#13;Move the library and other files of
the <SPAN
CLASS="application"
>Email</SPAN
> module
into the <SPAN
CLASS="application"
>MMBase</SPAN
> installation tree:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
mv -i web-app/WEB-INF/lib/* \
/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/
mv -i web-app/WEB-INF/config/builders/* \
/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/builders/
mkdir /usr/local/tomcat/webapps/mmbase-webapp/email-examples/
cp -iR web-app/examples/* \
/usr/local/tomcat/webapps/mmbase-webapp/email-examples/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Save the documentation files for later reference:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
mkdir /usr/local/tomcat/webapps/mmbase-webapp/mmdocs/email/
mv -i web-app/README.txt web-app/README-PACKAGE.txt web-app/documentation web-app/src \
/usr/local/tomcat/webapps/mmbase-webapp/mmdocs/email/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Make sure all these new files are owned by
your <SPAN
CLASS="systemitem"
>tomcat</SPAN
> user as well:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown -R tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Edit the email configuration file
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/sendmail.xml</TT
>
(from <TT
CLASS="filename"
>web-app/WEB-INF/config/modules/sendmail.xml</TT
>):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
...
&#60;status&#62;active&#60;/status&#62;
...
&#60;classfile&#62;org.mmbase.applications.email.SendMail&#60;/classfile&#62;
...
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Add to <SPAN
CLASS="application"
>Tomcat</SPAN
>'s
root <TT
CLASS="classname"
>Context</TT
>
(in /usr/local/tomcat/conf/context.xml for Tomcat version 5,
in /usr/local/tomcat/conf/server.xml for Tomcat version 4)
(replace &#60;smtp.domain.tld&#62; with the adres of your
<SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>SMTP</SPAN
> server</SPAN
>):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
Resource name="mail/Session" auth="Container"
type="javax.mail.Session"/&#62;
&#60;ResourceParams name="mail/Session"&#62;
&#60;parameter&#62;
&#60;name&#62;mail.smtp.host&#60;/name&#62;
&#60;value&#62;smtp.domain.tld&#60;/value&#62;
&#60;/parameter&#62;
&#60;/ResourceParams&#62;
&#60;ResourceLink name="linkToGlobalResource"
global="simpleValue"
type="java.lang.Integer"/&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Failing to do this, results in a fatal error:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
FATAL org.mmbase.module.JMSendMail -
JMSendMail failure: Name mail is not bound in this Context
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Installing the <SPAN
CLASS="application"
>Email</SPAN
> module
in <SPAN
CLASS="application"
>MMBase</SPAN
> version 1.7
running on <SPAN
CLASS="application"
>Tomcat</SPAN
> version 5
resulted in a fatal error:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
FATAL org.mmbase.servlet.MMBaseStartThread -
Could not find the MMBase module!javax/mail/Session
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
></DIV
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN719"
></A
>10. Configuring initial
<SPAN
CLASS="application"
>MMBase</SPAN
> settings</H1
><P
>&#13;Here are some initial configuration settings
for <SPAN
CLASS="application"
>MMBase</SPAN
>.
</P
><P
>&#13;Change the default password
<SPAN
CLASS="systemitem"
>admin2k</SPAN
>
for the administrator <SPAN
CLASS="systemitem"
>admin</SPAN
>
by editing
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/security/context/config.xml</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;user name="admin" context="admin"&#62;
&#60;identify type="name/password" rank="administrator"&#62;admin2k&#60;/identify&#62;
&#60;/user&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Also, outcomment or remove the user
<SPAN
CLASS="systemitem"
>foo/bar</SPAN
>.
</P
><P
>&#13;Since this file contains your administrators password,
make sure other users can not read it:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chmod 640 /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/security/context/config.xml
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;To use the <SPAN
CLASS="application"
>MMBase</SPAN
>
builder <SPAN
CLASS="systemitem"
>mmbaseuser</SPAN
>
(using the <SPAN
CLASS="database"
>mmbaseuser</SPAN
> table
in your <SPAN
CLASS="application"
>MySQL</SPAN
> database)
for user authentication,
set the <TT
CLASS="classname"
>authentication</TT
> class
in the configuration file
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/security/security.xml</TT
>
to:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;authentication class="org.mmbase.security.implementation.cloud.Authenticate" url="" /&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;and set the <TT
CLASS="classname"
>authorization</TT
> class to:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;authorization class="org.mmbase.security.implementation.cloud.Verify" url="" /&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;In the same file change the shared secret used to communicate with remote
builders
(on other <SPAN
CLASS="application"
>MMBase</SPAN
> servers):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;sharedsecret&#62;yoursharedsecret&#60;/sharedsecret&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;You can set the language
for <SPAN
CLASS="application"
>MMBase</SPAN
>
by editing
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/mmbaseroot.xml</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;property name="language"&#62;en&#60;/property&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;You can set the <SPAN
CLASS="acronym"
>SMTP</SPAN
> gateway by editing
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/sendmail.xml</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;property name="mailhost"&#62;localhost&#60;/property&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN759"
></A
>11. Running <SPAN
CLASS="application"
>MMBase</SPAN
></H1
><P
>&#13;Now you are ready to start <SPAN
CLASS="application"
>Tomcat</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
service tomcat start
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;and access your new <SPAN
CLASS="application"
>MMBase</SPAN
> server
through
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;:8080/mmbase-webapp/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;If everything you just did worked out,
you should get the
<SPAN
CLASS="application"
>MMBase</SPAN
> welcome screen
where you can change the settings, look at the demos, and install the
samples.
<P
><IMG
SRC="MMBase-600x415.png"></P
>
</P
><P
>&#13;When asked for a login use the name
<SPAN
CLASS="systemitem"
>admin</SPAN
>
and the password
you just set in the security configuration file
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/security/context/config.xml</TT
>.
</P
><P
>&#13;<SPAN
CLASS="application"
>MMBase</SPAN
> users
(i.e. front-end developers) will typically add their web files to
the <TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/</TT
> directory.
Applications (defining the content) will be placed in
the
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/applications/</TT
>
directory.
</P
><P
>&#13;<DIV
CLASS="caution"
><P
></P
><TABLE
CLASS="caution"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/caution.gif"
HSPACE="5"
ALT="Caution"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;<SPAN
CLASS="application"
>Tomcat</SPAN
>
consumes far more <SPAN
CLASS="acronym"
>CPU</SPAN
> and memory resources
than <SPAN
CLASS="application"
>Apache</SPAN
>.
Make sure the dimensions of your
<SPAN
CLASS="application"
>Tomcat</SPAN
>/<SPAN
CLASS="application"
>MMBase</SPAN
> server system meet these requirements.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Shutting down (or restarting) the
<SPAN
CLASS="application"
>Tomcat</SPAN
> server (version 1.6)
in our case always left a last process running.
If you experience this same problem,
kill the process by hand before starting it up again:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
[root@hostname root]# service tomcat stop
[root@hostname root]# ps -ax |grep j2
24535 ? S 4:12 /usr/local/j2sdk/bin/java -server -Xms64m -Xmx512m-Dbuild.compiler.emacs=true ...
[root@hostname root]# kill 24535
[root@hostname root]# service tomcat start
[root@hostname root]#
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;You can save the original <TT
CLASS="filename"
>index.jsp</TT
> file
by renaming it to <TT
CLASS="filename"
>mmbase.jsp</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
mv -i /usr/local/tomcat/webapps/mmbase-webapp/index.jsp \
/usr/local/tomcat/webapps/mmbase-webapp/mmbase.jsp
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;This will allow you to always access the original MMBase home page through
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;:8080/mmbase-webapp/mmbase.jsp
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;In case of any problems,
check the <SPAN
CLASS="application"
>Tomcat</SPAN
>
and <SPAN
CLASS="application"
>MMBase</SPAN
> log files
in the directory
<TT
CLASS="filename"
>/usr/local/tomcat/logs/</TT
>
for hints.
</P
><P
>&#13;&#62;From here, we refer to the documentation
on the <SPAN
CLASS="application"
>MMbase</SPAN
> website
to complete your configuration
and start using <SPAN
CLASS="application"
>MMBase</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://www.mmbase.org/docs/"
TARGET="_top"
>http://www.mmbase.org/docs/</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="JK2"
></A
>12. Connecting <SPAN
CLASS="application"
>Apache</SPAN
>
and <SPAN
CLASS="application"
>Tomcat</SPAN
>
using <SPAN
CLASS="systemitem"
>mod_jk2</SPAN
></H1
><P
>&#13;Since (for some odd reason) some network managers allow outgoing web
connections only to <SPAN
CLASS="systemitem"
>TCP port 80</SPAN
>,
there might be people around that cannot access your
<SPAN
CLASS="application"
>Tomcat</SPAN
>
(and <SPAN
CLASS="application"
>MMBase</SPAN
>) server
through <SPAN
CLASS="systemitem"
>port 8080</SPAN
>.
You can install a <SPAN
CLASS="acronym"
>JK 2</SPAN
> mapping or a reverse proxy
in <SPAN
CLASS="application"
>Apache</SPAN
>,
so <SPAN
CLASS="application"
>Tomcat</SPAN
>
and <SPAN
CLASS="application"
>MMBase</SPAN
>
can be accessed through the
<SPAN
CLASS="application"
>Apache</SPAN
> web server
at <SPAN
CLASS="systemitem"
>port 80</SPAN
>.
Apart from the port issue,
this has the advantage that you can use
<SPAN
CLASS="application"
>Apache</SPAN
>
to manage you <SPAN
CLASS="acronym"
>SSL</SPAN
> connections
and use your existing
<SPAN
CLASS="application"
>Apache</SPAN
>
logs and statistics facilities
for <SPAN
CLASS="application"
>Tomcat</SPAN
>
and <SPAN
CLASS="application"
>MMBase</SPAN
> as well.
</P
><P
>&#13;Here we describe the installation and configuration of
the <SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>
connecting <SPAN
CLASS="application"
>Apache</SPAN
>
and <SPAN
CLASS="application"
>Tomcat</SPAN
>.
In this way,
<SPAN
CLASS="application"
>Tomcat</SPAN
> paths can be mapped
into <SPAN
CLASS="application"
>Apache</SPAN
>.
</P
><P
>&#13;&#62;From the
<SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>
website
(<A
HREF="http://jakarta.apache.org/tomcat/tomcat-4.1-doc/config/jk2.html"
TARGET="_top"
>http://jakarta.apache.org/tomcat/tomcat-4.1-doc/config/jk2.html</A
>):
<A
NAME="AEN844"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;<SPAN
CLASS="QUOTE"
>"
The <SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>
element represents
a <TT
CLASS="classname"
>Connector</TT
> component that communicates
with a web connector via the <SPAN
CLASS="acronym"
>AJP</SPAN
> protocol.
This is used for cases where you wish
to invisibly integrate <SPAN
CLASS="application"
>Tomcat</SPAN
> 4
into an existing (or new)
<SPAN
CLASS="application"
>Apache</SPAN
> installation,
and you want <SPAN
CLASS="application"
>Apache</SPAN
> to handle
the static content contained in the web application,
and/or utilize <SPAN
CLASS="application"
>Apache's</SPAN
>
<SPAN
CLASS="acronym"
>SSL</SPAN
> processing.
In many application environments,
this will result in better overall performance
than running your applications
under <SPAN
CLASS="application"
>Tomcat</SPAN
> stand-alone
using the
<SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>HTTP/1.1</SPAN
> Connector</SPAN
>.
However, the only way to know for sure
whether it will provide better performance for your application
is to try it both ways.
"</SPAN
>
</P
></BLOCKQUOTE
>
</P
><P
>&#13;If you will only be needing a simple configuration--
typically a single <SPAN
CLASS="application"
>Tomcat</SPAN
> server
sitting on the same system as
your <SPAN
CLASS="application"
>Apache server</SPAN
>--
<SPAN
CLASS="application"
>Apache</SPAN
> reverse proxies might be
an easier solution for you.
Although these are simpler in terms of the interconnection features,
reverse proxies provide more flexibility
in fiddling with your paths and other options.
The configuration of
<SPAN
CLASS="application"
>Apache</SPAN
> reverse proxies is
described in the next section.
</P
><P
>&#13;However, if you plan to build or grow to
a farm of several <SPAN
CLASS="application"
>Tomcat</SPAN
> servers
behind an <SPAN
CLASS="application"
>Apache</SPAN
> front-end
or build a high-performance system,
deploying
the <SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>
is the way to go.
</P
><P
>&#13;Download the sources of
the <SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>
from the <SPAN
CLASS="application"
>Apache Jakarta</SPAN
> website:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://jakarta.apache.org/site/sourceindex.cgi"
TARGET="_top"
>http://jakarta.apache.org/site/sourceindex.cgi</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Extract and compile
the <SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
tar -zxvf jakarta-tomcat-connectors-jk2-src-xxx.tar.gz
cd jakarta-tomcat-connectors-jk2-src/jk/native2/
./configure \
--with-apxs2=/usr/local/apache/bin/apxs
make
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Make sure your <TT
CLASS="envar"
>$JAVA_HOME</TT
> environment variable is set
and the <SPAN
CLASS="application"
>Java</SPAN
> binaries are
in your <TT
CLASS="envar"
>$PATH</TT
>
or add this option to your <B
CLASS="command"
>./configure</B
> command:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13; <TT
CLASS="option"
>--with-java-home=/usr/local/j2sdk</TT
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Copy the module files <TT
CLASS="filename"
>mod_jk2.so</TT
> and
<TT
CLASS="filename"
>jkjni.so</TT
>
to the <TT
CLASS="filename"
>modules/</TT
> directory
of <SPAN
CLASS="application"
>Apache</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
cp -i ../build/jk2/apache2/*.so /usr/local/apache/modules/
chmod 755 /usr/local/apache/modules/mod_jk2.so
chown root:root /usr/local/apache/modules/mod_jk2.so
chmod 755 /usr/local/apache/modules/jkjni.so
chown root:root /usr/local/apache/modules/jkjni.so
libtool --finish /usr/local/apache/modules
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Copy the sample configuration file
<TT
CLASS="filename"
>workers2.properties</TT
>
to the configuration directory
of <SPAN
CLASS="application"
>Apache</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
cp -i ../../jk/conf/workers2.properties /usr/local/apache/conf/
chown root:root /usr/local/apache/conf/workers2.properties
chmod 644 /usr/local/apache/conf/workers2.properties
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;and adjust it to your own needs.
</P
><P
>&#13;Here is a simple configuration that should get you up and running:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
[logger]
# outcomment this in production use
level=DEBUG
[config:]
file=${serverRoot}/conf/workers2.properties
debug=0
debugEnv=0
[uriMap:]
info=Maps the requests. Options: debug
debug=1
[shm:]
info=Scoreboard. Required for reconfiguration and status with multiprocess servers
file=${serverRoot}/logs/jk2.shm
size=1000000
debug=0
disabled=0
[workerEnv:]
info=Global server options
timing=1
debug=0
[status:]
info=Status worker, displays runtime informations
[uri:&#60;hostname&#62;/jkstatus/*]
info=Display status information and checks the config file for changes.
group=status:
[channel.socket:localhost:8009]
info=Ajp13 forwarding over socket
# Define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
[uri:&#60;hostname&#62;/mmbase-webapp/*]
info=MMBase
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Most of this configuration is pretty standard.
The last <TT
CLASS="classname"
>uri</TT
> declaration
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname)
is what this is all about;
it maps all client requests starting with
<TT
CLASS="filename"
>/mmbase-webapp/</TT
>
from <SPAN
CLASS="application"
>Apache</SPAN
>
to your <SPAN
CLASS="application"
>Tomcat</SPAN
> server.
</P
><P
>&#13;<DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;When we made a virtual host mapping,
somehow the general mappings no longer worked for this virtual host
(other virtual hosts on the same
<SPAN
CLASS="systemitem"
>IP address</SPAN
> had no problem at all).
We had to explicitly add the general mappings for this virtual host
to make these work again.
A bug?
Or a consequence of the way
<SPAN
CLASS="application"
>Apache</SPAN
>
implements name based virtual hosts?
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;So now, the same application you accessed
through <SPAN
CLASS="application"
>Tomcat</SPAN
> as
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;:8080/mmbase-webapp/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;will be available through
<SPAN
CLASS="application"
>Apache</SPAN
> as:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;/mmbase-webapp/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="important"
><P
></P
><TABLE
CLASS="important"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/important.gif"
HSPACE="5"
ALT="Important"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Only name based virtual hosts are supported this way.
Make sure you add the virtual host name
(pointing to this very same (web) server)
to the <TT
CLASS="filename"
>/etc/hosts</TT
> file
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
192.168.3.17 &#60;hostname&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;or things will not work
(running <SPAN
CLASS="acronym"
>DNS</SPAN
> is not sufficient here!).
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;If your <SPAN
CLASS="application"
>Apache</SPAN
> installation
is serving only a single website,
you can leave out the hostname:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
[uri:/mmbase-webapp/*]
info=MMBase
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;which will serve the
mapped <TT
CLASS="filename"
>/mmbase-webapp/</TT
> directory
on every address and site
of your <SPAN
CLASS="application"
>Apache</SPAN
> installation.
</P
><P
>&#13;<DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Using
<SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK</SPAN
> Connector</SPAN
>
version 2,
all configuration settings will be in the
<TT
CLASS="filename"
>workers2.properties</TT
> file.
Even though <SPAN
CLASS="application"
>Tomcat</SPAN
>
comes with its own
<SPAN
CLASS="acronym"
>JK 2</SPAN
> configuration file
<TT
CLASS="filename"
>/usr/local/tomcat/conf/jk2.properties</TT
>,
there's no need to edit this
as long as you stick with the standard
<SPAN
CLASS="systemitem"
>port 8009</SPAN
>.
</P
><P
>&#13;If you do have to edit this file
(for example when changing the port),
make sure that you do it
when your <SPAN
CLASS="application"
>Tomcat</SPAN
> server
is not running;
the file is auto-edited
by <SPAN
CLASS="application"
>Tomcat</SPAN
> itself.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;After adding the <SPAN
CLASS="systemitem"
>mod_jk2</SPAN
> module
to your <SPAN
CLASS="application"
>Apache</SPAN
> configuration
(in the file
<TT
CLASS="filename"
>/etc/httpd/conf/httpd.conf</TT
>
or in a new file <TT
CLASS="filename"
>jk2.conf</TT
>
in the <SPAN
CLASS="application"
>Apache</SPAN
>
configuration directory
<TT
CLASS="filename"
>/etc/httpd/conf.d</TT
>):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
# Load mod_jk2 module
LoadModule jk2_module modules/mod_jk2.so
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown root:root /etc/httpd/conf.d/jk2.conf
chmod 644 /etc/httpd/conf.d/jk2.conf
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;you can now restart <SPAN
CLASS="application"
>Apache</SPAN
>
and give your new entrance a try:
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;/mmbase-webapp/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;To check the status of
the <SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;/jkstatus/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;You can reread the configuration in
<TT
CLASS="filename"
>/usr/local/apache/conf/workers2.properties</TT
>
by (re)loading the <SPAN
CLASS="guimenu"
>JK Status</SPAN
> page.
This allows you to add new mappings
without restarting <SPAN
CLASS="application"
>Apache</SPAN
>
or having it reload its configuration.
However, existing mappings can not be removed this way
and require <SPAN
CLASS="application"
>Apache</SPAN
> to reconfigure.
</P
><P
>&#13;Although it's also possible to place the <SPAN
CLASS="acronym"
>JK 2</SPAN
> configurations
(in a slightly different form)
in your <SPAN
CLASS="application"
>Apache</SPAN
> configuration file,
this is a good reason to stick with the
<TT
CLASS="filename"
>workers2.properties</TT
> setup.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;<DIV
CLASS="important"
><P
></P
><TABLE
CLASS="important"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/important.gif"
HSPACE="5"
ALT="Important"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;To protect access to the <SPAN
CLASS="guimenu"
>JK Status</SPAN
> page,
add an authentication declaration
to the <SPAN
CLASS="application"
>Apache</SPAN
> configuration.
For example:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;Location /jkstatus/&#62;
AuthType Basic
AuthName "JK 2 Connector Status"
AuthUserFile /etc/httpd/conf/users
AuthGroupFile /etc/httpd/conf/groups
Require group admin
&#60;/Location&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;This will prompt for a login from a user
from the <SPAN
CLASS="systemitem"
>admin</SPAN
> group.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;In case of any problems,
check
the <SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>
log messages
that will be written to your <SPAN
CLASS="application"
>Apache</SPAN
>
<TT
CLASS="filename"
>error_log</TT
>.
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;In case the
<SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>
has difficulties connecting to
<SPAN
CLASS="application"
>Tomcat</SPAN
>,
check whether <SPAN
CLASS="application"
>Tomcat</SPAN
> is indeed
available on
<SPAN
CLASS="systemitem"
>port 8009</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
netstat -tln
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;Access requests mapping to <SPAN
CLASS="application"
>Tomcat</SPAN
>
will be logged in the <TT
CLASS="filename"
>access_log</TT
>'s
and <TT
CLASS="filename"
>error_log</TT
>'s
of <SPAN
CLASS="application"
>Apache</SPAN
>.
</P
><P
>&#13;For more information on the
<TT
CLASS="filename"
>workers2.properties</TT
> configuration,
check the documentation at:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13; <A
HREF="http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk2/configwebcom.html"
TARGET="_top"
>http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk2/configwebcom.html</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;There you will read about
setting up more (remote)
<SPAN
CLASS="application"
>Tomcat</SPAN
> workers,
grouping these together in load-balancing pools,
setting up <SPAN
CLASS="acronym"
>RPC</SPAN
> channels,
using <SPAN
CLASS="systemitem"
>Unix</SPAN
> sockets,
using the
<SPAN
CLASS="systemitem"
>Java Native Interface (<SPAN
CLASS="acronym"
>JNI</SPAN
></SPAN
>)
to interconnect with
<SPAN
CLASS="application"
>Tomcat</SPAN
> directly (in-process),
setting up alternative loggers,
and optimizing your time-outs.
</P
><P
>&#13;<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;<SPAN
CLASS="application"
>Apache</SPAN
> is far more efficient
than <SPAN
CLASS="application"
>Tomcat</SPAN
>
in serving ordinary content files.
You could have both the <SPAN
CLASS="application"
>Apache</SPAN
>
and <SPAN
CLASS="application"
>Tomcat</SPAN
> document directories
point to the same directory on your filesystem
and only forward requests for <SPAN
CLASS="acronym"
>JSP</SPAN
> pages
and <SPAN
CLASS="systemitem"
>Java Servlets</SPAN
>.
For example (in <TT
CLASS="filename"
>workers2.conf</TT
>):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
#[uri:/examples/servlet/*]
#info=Prefix mapping
#[uri:/examples/*.jsp]
#info=Extension mapping
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;However, now you need to protect
<SPAN
CLASS="application"
>Tomcat's</SPAN
>
<TT
CLASS="filename"
>WEB-INF/</TT
> directories
(and other directories and files you don't want visitors to have access to)
from being served by <SPAN
CLASS="application"
>Apache</SPAN
>.
For example (in <SPAN
CLASS="application"
>Apache</SPAN
>'s
<TT
CLASS="filename"
>httpd.conf</TT
>):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
&#60;Location "/examples/WEB-INF/"&#62;
AllowOverride None
deny from all
&#60;Location&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Also, realize that a setup like this bypasses
any security constraints you may have configured
in the file
<TT
CLASS="filename"
>/usr/local/tomcat/webapps/examples/WEB-INF/web.xml</TT
>.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13;You can find more general information about
the <SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>
at:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13; <A
HREF="http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/"
TARGET="_top"
>http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/</A
>
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN1037"
></A
>13. Installing an <SPAN
CLASS="application"
>Apache</SPAN
>
reverse proxy
as a front-end
to your <SPAN
CLASS="application"
>MMBase</SPAN
> server</H1
><P
>&#13;Installing an <SPAN
CLASS="application"
>Apache</SPAN
> reverse proxy
is an easy alternative to the
<SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
>
to use <SPAN
CLASS="application"
>Apache</SPAN
> as a front-end
to your <SPAN
CLASS="application"
>Tomcat</SPAN
> server.
</P
><P
>&#13;Add to your <SPAN
CLASS="application"
>Apache</SPAN
>
(virtual) server configuration
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
ProxyPass /tomcat/ http://&#60;hostname&#62;:8080/
ProxyPassReverse /tomcat/ http://&#60;hostname&#62;:8080/
ProxyPass /mmbase/ http://&#60;hostname&#62;:8080/mmbase-webapp/
ProxyPassReverse /mmbase/ http://&#60;hostname&#62;:8080/mmbase-webapp/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;This allows you to access your
<SPAN
CLASS="application"
>Tomcat</SPAN
> server
as
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;/tomcat/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;and your <SPAN
CLASS="application"
>MMBase</SPAN
> server as
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;/mmbase/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;<DIV
CLASS="caution"
><P
></P
><TABLE
CLASS="caution"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/caution.gif"
HSPACE="5"
ALT="Caution"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;Our MMBase version 1.7 installation used
absolute directory paths in the web pages it generated.
In order to get the reverse proxies to work properly,
the Apache proxy paths had to be the same
(replace <TT
CLASS="replaceable"
><I
>&#60;hostname&#62;</I
></TT
> with your hostname):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
ProxyPass /mmbase-webapp/ http://&#60;hostname&#62;:8080/mmbase-webapp/
ProxyPassReverse /mmbase-webapp/ http://&#60;hostname&#62;:8080/mmbase-webapp/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN1064"
></A
>14. Installing more <SPAN
CLASS="application"
>MMBase</SPAN
> servers
on a single <SPAN
CLASS="application"
>Tomcat</SPAN
> server</H1
><P
>&#13;If you want to support
more instances of <SPAN
CLASS="application"
>MMBase</SPAN
>,
for example if you would like
to make <SPAN
CLASS="application"
>MMBase</SPAN
>
available to more or all of your users,
you can create several
<SPAN
CLASS="application"
>MMBase</SPAN
> installations
and have these all run on the same
<SPAN
CLASS="application"
>Tomcat</SPAN
> server.
</P
><P
>&#13;Install <SPAN
CLASS="application"
>MMBase</SPAN
>
in the home directory
of the user <TT
CLASS="replaceable"
><I
>&#60;user&#62;</I
></TT
>
performing all steps before:
<P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>&#13;create a directory <TT
CLASS="filename"
>mmbase/</TT
>
in the users home directory,
</P
></LI
><LI
><P
>&#13;copy all <SPAN
CLASS="application"
>MMBase</SPAN
> files
into the directory
<TT
CLASS="filename"
>/home/<TT
CLASS="replaceable"
><I
>&#60;user&#62;</I
></TT
>/mmbase/</TT
>,
</P
></LI
><LI
><P
>&#13;build the directory structure and configuration files
in the very same way we did before,
</P
></LI
><LI
><P
>&#13;for <SPAN
CLASS="application"
>MMBase</SPAN
> version 1.7
running on <SPAN
CLASS="application"
>Tomcat</SPAN
> version 5,
enable the <SPAN
CLASS="systemitem"
>Xerces</SPAN
> libraries,
</P
></LI
><LI
><P
>&#13;for <SPAN
CLASS="application"
>MMBase</SPAN
> version 1.6
running on <SPAN
CLASS="application"
>Tomcat</SPAN
> version 4,
remove the <SPAN
CLASS="systemitem"
>Xerces</SPAN
> libraries
in <SPAN
CLASS="application"
>MMBase</SPAN
>
(after you have copied these
from <SPAN
CLASS="application"
>MMBase</SPAN
>
to <SPAN
CLASS="application"
>Tomcat</SPAN
>
the first time),
</P
></LI
><LI
><P
>&#13;install the <SPAN
CLASS="application"
>MySQL</SPAN
>
<SPAN
CLASS="acronym"
>JDBC</SPAN
> driver
and create a new <SPAN
CLASS="application"
>MySQL</SPAN
> database
for this user.
</P
></LI
></UL
>
</P
><P
>&#13;Make sure both the user
and the <SPAN
CLASS="application"
>Tomcat</SPAN
> server
have access to the
<SPAN
CLASS="application"
>MMBase</SPAN
> installation:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown -R &#60;user&#62;:tomcat /home/&#60;user&#62;/mmbase/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Make sure that the directory
<TT
CLASS="filename"
>/home/<TT
CLASS="replaceable"
><I
>&#60;user&#62;</I
></TT
>/mmbase/WEB-INF/config/builders/applications</TT
>
is writable and accessible by the servlet engine user
(for auto-installing builders):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chmod 770 /home/&#60;user&#62;/mmbase/WEB-INF/config/builders/applications
chmod 750 /home/&#60;user&#62;/mmbase/WEB-INF/config/builders/
chmod 750 /home/&#60;user&#62;/mmbase/WEB-INF/config/
chmod 750 /home/&#60;user&#62;/mmbase/WEB-INF/
chmod 750 /home/&#60;user&#62;/mmbase/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Now the home directory of this user has to be accessible
to the <SPAN
CLASS="application"
>Tomcat</SPAN
> server
as well.
You can change the group owner of the users home directory
to the <SPAN
CLASS="systemitem"
>tomcat</SPAN
> user group:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
chown -g tomcat /home/&#60;user&#62;/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Or, if you don't want this,
use the Access Control Lists (<SPAN
CLASS="acronym"
>ACL</SPAN
>'s)
to accomplish the same:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
setfacl -m u:tomcat:r-x /home/&#60;user&#62;/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Finally, link the new
<SPAN
CLASS="application"
>MMBase</SPAN
> installation
to the <SPAN
CLASS="application"
>Tomcat</SPAN
> server:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
ln -s /home/&#60;user&#62;/mmbase /usr/local/tomcat/webapps/mmbase-&#60;user&#62;
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;and restart <SPAN
CLASS="application"
>Tomcat</SPAN
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
service tomcat restart
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;which will make
this users <SPAN
CLASS="application"
>MMBase</SPAN
> installation
available through:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
http://&#60;hostname&#62;:8080/mmbase-&#60;user&#62;/
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13;Again, you can set up a <SPAN
CLASS="acronym"
>JK 2</SPAN
> mapping or a reverse proxy
in <SPAN
CLASS="application"
>Apache</SPAN
>
like we did before.
</P
><P
>&#13;<DIV
CLASS="important"
><P
></P
><TABLE
CLASS="important"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/important.gif"
HSPACE="5"
ALT="Important"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;In order to run
several instances of <SPAN
CLASS="application"
>MMBase</SPAN
>
on a single <SPAN
CLASS="application"
>Tomcat</SPAN
> server,
make sure you increase the available memory resources, i.e.
by adding to the <TT
CLASS="envar"
>$CATALINA_OPTS</TT
> environment variable
in <TT
CLASS="filename"
>/etc/rc.d/init.d/tomcat</TT
>:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;
-Xms64m -Xmx512m
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN1141"
></A
>15. Acknowledgements</H1
><P
>&#13;This document is a follow-up on the
<SPAN
CLASS="QUOTE"
>"<SPAN
CLASS="application"
>MMBase</SPAN
> Mini-HOWTO:
Installation on <SPAN
CLASS="systemitem"
>Debian Woody</SPAN
>"</SPAN
>,
by Casper Joost Eyckelhof, University of Twente, The Netherlands.
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN1147"
></A
>16. Contributers</H1
><P
>&#13;<P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>&#13;Felipe Caballero Gil,
</P
></LI
><LI
><P
>&#13;Andr<EFBFBD> van Elst,
<A
HREF="http://www.finalist.nl"
TARGET="_top"
>Finalist</A
>,
The Netherlands.
</P
></LI
></UL
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN1156"
></A
>17. Revision history</H1
><P
>&#13;<P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.3.5.DocBook.html"
TARGET="_top"
>Version 0.3.5</A
>, June 25, 2006: Tomcat init script,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.3.4.DocBook.html"
TARGET="_top"
>Version 0.3.4</A
>, September 19, 2005: minor corrections,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.3.2.DocBook.html"
TARGET="_top"
>version 0.3.2</A
>, January 25, 2005: MMBase 1.7.3, Java 1.5.0-01,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.3.1.DocBook.html"
TARGET="_top"
>version 0.3.1</A
>, December 26, 2004: Email module,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.3.0.DocBook.html"
TARGET="_top"
>version 0.3.0</A
>, December 25, 2004: MMBase 1.7.2, Tomcat 5.5.4, Java 1.5.0, MySQL Connector/J 3.0.16-ga, Jikes 1.22,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.2.6.DocBook.html"
TARGET="_top"
>version 0.2.6</A
>, July 27, 2004: minor additions,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.2.5.DocBook.html"
TARGET="_top"
>version 0.2.5</A
>, February 28, 2004: Creative Commons copyright license adjusted,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.2.4.DocBook.html"
TARGET="_top"
>version 0.2.4</A
>, January 22, 2004: Creative Commons copyright license; minor additions and corrections,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.2.3.DocBook.html"
TARGET="_top"
>version 0.2.3</A
>, December 26, 2003: minor additions and corrections,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.2.2.DocBook.html"
TARGET="_top"
>version 0.2.2</A
>, December 20, 2003: copyright adjusted,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.2.1.DocBook.html"
TARGET="_top"
>version 0.2.1</A
>, December 18, 2003: minor corrections,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.2.DocBook.html"
TARGET="_top"
>version 0.2</A
>, December 15, 2003: <SPAN
CLASS="systemitem"
><SPAN
CLASS="acronym"
>JK 2</SPAN
> Connector</SPAN
> setup added,
</P
></LI
><LI
><P
>&#13;<A
HREF="http://www.offerman.net/MMBase-Installation-HOWTO/MMBase-Installation-HOWTO-0.1.DocBook.html"
TARGET="_top"
>version 0.1</A
>, December 10, 2003: initial draft.
</P
></LI
></UL
>
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN1201"
></A
>18. Disclaimer</H1
><P
>&#13;This document is provided <SPAN
CLASS="QUOTE"
>"as is"</SPAN
>,
without any expressed or implied warranties.
Use the ideas, concepts, scripts, examples, helping hands and other
information at your own risk.
</P
><P
>&#13;The specific products and their respective manufacturers are not to be taken
as endorsements of, nor commercials for, the manufacturer.
</P
></DIV
><DIV
CLASS="sect1"
><HR><H1
CLASS="sect1"
><A
NAME="AEN1206"
></A
>19. Copyright</H1
><P
>&#13;Compiled, Copyright <20> 2003 - 2006, by
<A
HREF="http://www.offerman.net/"
TARGET="_top"
>Adrian Offerman</A
>.
</P
><P
>&#13;<A
HREF="http://www.creativecommons.org/licenses/by-sa/1.0/"
TARGET="_top"
><IMG
SRC="./CreativeCommons-SomeRightsReserved.gif"
WIDTH="88"
HEIGHT="31"></A
>
This document is licensed under the
<A
HREF="http://www.creativecommons.org/licenses/by-sa/1.0/"
TARGET="_top"
>Creative Commons Attribution-ShareAlike copyright license</A
>.
</P
><P
>&#13;This allows you to copy, distribute, display, and print this work,
and make derivative works,
and make commercial use of the work,
under the conditions that you give the original author credit,
and if you alter, transform, or build upon this work,
you may distribute the resulting work only under a license
identical to this one.
For any reuse or distribution,
you must make clear to others the license terms of this work.
Any of these conditions can be waived if you get permission from the author.
Your fair use and other rights are in no way affected by the above.
</P
></DIV
></DIV
></BODY
></HTML
>