blob: dbd2fb9ac3692410aff54b01836dd6ac5ac8b2ed [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
<TITLE></TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 2.0 (Solaris x86)">
<META NAME="AUTHOR" CONTENT="Dave Johnson">
<META NAME="CREATED" CONTENT="20060123;11164600">
<META NAME="CHANGEDBY" CONTENT="Dave Johnson">
<META NAME="CHANGED" CONTENT="20060508;14292600">
<STYLE>
<!--
@page { size: 8.5in 11in; margin: 0.79in }
P { margin-bottom: 0.08in }
H2.western { font-family: "Thorndale", serif }
H2.cjk { font-family: "Andale Sans UI" }
H2.ctl { font-family: "Lucidasans" }
H3.western { font-family: "Thorndale", serif }
H3.cjk { font-family: "Andale Sans UI" }
H3.ctl { font-family: "Lucidasans" }
H4.western { font-family: "Thorndale", serif }
H4.cjk { font-family: "Andale Sans UI" }
H4.ctl { font-family: "Lucidasans" }
PRE { font-family: "Cumberland", monospace }
TT { font-family: "Cumberland", monospace }
-->
</STYLE>
</HEAD>
<BODY LANG="en-US" DIR="LTR">
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=7 STYLE="font-size: 40pt"><B>Installation
Guide</B></FONT></P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT SIZE=7 STYLE="font-size: 32pt"><B>Apache
Roller</B></FONT></P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><A NAME="DDE_LINK1"></A><FONT SIZE=5 STYLE="font-size: 20pt"><B>Version
2.3-incubating</B></FONT></P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0in"><BR>
</P>
<P ALIGN=LEFT><FONT FACE="Courier New"><FONT SIZE=1 STYLE="font-size: 8pt"><I>Licensed
to the Apache Software Foundation (ASF) under one or more contributor
license agreements. The ASF licenses this file to You under the
Apache License, Version 2.0 (the &quot;License&quot;); you may not
use this file except in compliance with the License. You may obtain a
copy of the License at</I></FONT></FONT></P>
<P ALIGN=LEFT> <FONT FACE="Courier New"><FONT SIZE=1 STYLE="font-size: 8pt"><I>http://www.apache.org/licenses/LICENSE-2.0</I></FONT></FONT></P>
<P ALIGN=LEFT><FONT FACE="Courier New"><FONT SIZE=1 STYLE="font-size: 8pt"><I>Unless
required by applicable law or agreed to in writing, software
distributed under the License is distributed on an &quot;AS IS&quot;
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied. See the License for the specific language governing
permissions and limitations under the License. For additional
information regarding copyright in this work, please see the NOTICE
file in the top level directory of this distribution.</I></FONT></FONT></P>
<P ALIGN=LEFT STYLE="page-break-before: always"><BR><BR>
</P>
<DIV ID="Table of Contents1" DIR="LTR">
<DIV ID="Table of Contents1_Head" DIR="LTR">
<P STYLE="margin-top: 0.17in; margin-bottom: 0.2in; page-break-after: avoid">
<FONT FACE="Albany, sans-serif"><FONT SIZE=4 STYLE="font-size: 16pt"><B>Table
of Contents</B></FONT></FONT></P>
</DIV>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>Introduction 3</B></FONT></P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>STEP
1: Before you install Roller 4</B></FONT></P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>STEP
2: Unpack the Roller distribution 5</B></FONT></P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>STEP
3: Install required third party jars 6</B></FONT></P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 3.1:
Download and install Hibernate 6</P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 3.2: Install
JDBC driver jar(s) 6</P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 3.3: Install
JavaMail and Activation jars 7</P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>STEP
4: Create Roller tables in your database 8</B></FONT></P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>STEP
5: Deploy Roller to your application server 9</B></FONT></P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>STEP
6: Check your internationalization settings 11</B></FONT></P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>STEP
7: Setup Roller data directories 12</B></FONT></P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 7.1: Create
uploads directory 12</P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 7.2: Create
search-index directory 12</P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 7.3: Create
planet-cache directory (optional) 12</P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 7.4: Make
sure that the logs subdirectory exists 13</P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>STEP
8: Review Roller configuration 14</B></FONT></P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 8.1: Review
the WEB-INF/classes/roller.properties file 14</P>
<P STYLE="margin-left: 0.59in; margin-bottom: 0in">Where to define
custom properties 14</P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 8.2: Change
keys in the WEB-INF/security.xml file 15</P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>STEP
9: Start Tomcat and start using Roller 16</B></FONT></P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>Appendix
A: Upgrading an existing Roller installation 17</B></FONT></P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 1: Shutdown
and backup your old Roller 17</P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 2: Install
the new Roller 17</P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 3: Copy
resources and update configs 18</P>
<P STYLE="margin-left: 0.59in; margin-bottom: 0in">3.1 Copy your old
resources and other files you've added 18</P>
<P STYLE="margin-left: 0.59in; margin-bottom: 0in">3.2 Remove
JavaMail jars if duplicated 18</P>
<P STYLE="margin-left: 0.59in; margin-bottom: 0in">3.3 Review
configuration properties 18</P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 4: Upgrade
the database 18</P>
<P STYLE="margin-left: 0.39in; margin-bottom: 0in">STEP 5: Startup
your app server 19</P>
<P STYLE="margin-left: 0.2in; margin-bottom: 0in"><FONT SIZE=4 STYLE="font-size: 16pt"><B>Appendix
B: The WEB-INF/roller.properties file 20</B></FONT></P>
</DIV>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<H2 CLASS="western" STYLE="page-break-before: always"><A NAME="section-InstallationGuide_2.x-Introduction"></A>
Introduction</H2>
<P><B>This document describes how to install Roller in the following
environment: </B>
</P>
<UL>
<LI><P STYLE="margin-bottom: 0in; font-weight: medium">Operating
System: UNIX or Windows based operating system
</P>
<LI><P STYLE="margin-bottom: 0in; font-weight: medium">Java
development kit: Java 2 SE 1.4 SDK (or later)</P>
<LI><P STYLE="margin-bottom: 0in; font-weight: medium">Application
server: Tomcat 5.X (or later)</P>
<LI><P STYLE="font-weight: medium">Relational Database: MySQL 4.X
(or later)</P>
</UL>
<P><BR><BR>
</P>
<P><B>NOTE: If you're upgrading from an earlier release of Roller,
read Appendix A first</B></P>
<P><BR><BR>
</P>
<P><B>What do you need to know to install Roller? </B>You need to
know how to use the UNIX or Windows command-line, how to set
environment variables, how to create a database in MySQL and how to
start and stop Tomcat.</P>
<P><B>What about other servlet containers?</B> <SPAN STYLE="font-style: normal">These
instructions target Tomcat, but you should be able to make Roller
work with just about any standard Servlet 2.3 compatible application
server. For full support of Roller's internationalization features,
we recommend Servlet 2.4. If you deploy Roller to a non-Tomcat
server, please contribute your install notes to help others who might
want to do the same.</SPAN>
</P>
<P><B>What about other databases?</B> These instructions target
MySQL, but Roller also includes database setup scripts for PostgreSQL
7.X later, Apache Derby, IBM DB2, Oracle and HSQL-DB.</P>
<P><B>What platform combinations are known to work?</B> For
information on which platforms we can vouch for, see the the
<SPAN STYLE="font-weight: medium"><I>Platforms</I></SPAN> page on the
Roller wiki.</P>
<P><BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<H2 CLASS="western" STYLE="page-break-before: always"><A NAME="section-InstallationGuide_2.x-STEP1Prerequisites1"></A><A NAME="ref-InstallationGuide_2.x-1"></A>
STEP 1: Before you install Roller</H2>
<P STYLE="font-weight: medium">Before you install Roller software you
should install and configure the Java development kit, your
application server and your database.</P>
<P>As part of the Tomcat install you should have set the environment
variable CATALINA_HOME to point to your Tomcat installation
directory. If not, you might want to set it now because we will refer
to it in this installation guide. Below are some examples that show
how to set this variable. Make sure you substitute the right path to
your Tomcat installation.</P>
<P>For UNIX with bash shell:</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> %
export CATALINA_HOME=/opt/jakarta-tomcat-5.5.9</FONT></FONT></P>
<P><BR><BR>
</P>
<P>For UNIX with c-shell:</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> %
setenv CATALINA_HOME /opt/jakarta-tomcat-5.5.9</FONT></FONT></P>
<P><BR><BR>
</P>
<P>For Windows with DOS shell</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> C&gt;
set CATALINA_HOME d:\jakarta-tomcat-5.5.9</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P><B>NOTES</B></P>
<UL>
<LI><P>For MySQL, make sure you enable UTF-8 support. See the page
Setting Up UTF-8 on MySQL page on the Roller wiki for details.</P>
<LI><P>For MySQL, make sure that TCP/IP networking is enabled. In
some versions of MySQL, this option is off by default. See the page
Debian MySQL for details. The Connector/J JDBC driver can only
access MySQL via TCP/IP.
</P>
</UL>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<H2 CLASS="western" STYLE="page-break-before: always"><A NAME="section-InstallationGuide_2.x-STEP2UnpackTheDownloadedZIPOrTARFile2"></A>
STEP 2: Unpack the Roller distribution</H2>
<P>Pick a directory on your computer and unpack the Roller
distribution using either GNU tar on UNIX or WinZip on Windows.
Hereinafter, we'll refer to that directory as your Roller
installation directory, <FONT FACE="Courier New">$ROLLER</FONT> in
the UNIX examples or <FONT FACE="Courier New">%ROLLER%</FONT> in the
Windows examples.</P>
<P><BR><BR>
</P>
<P>Here are some examples to show you how you might unpack Roller on
your computer.</P>
<P><B>UNIX example</B></P>
<P>Assuming you download the distribution into your home directory
and you'd like to install Roller into <FONT FACE="Courier New">/usr/local</FONT>
you might do something like this:</P>
<PRE><FONT FACE="Courier New"><FONT SIZE=2> % cd /usr/local</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=2> % tar xzvf ~/roller-2.3.tar.gz</FONT></FONT>
</PRE><P>
That would create the Roller installation directory
<FONT FACE="Courier New">/usr/local/roller</FONT>.
</P>
<P><B>Windows example</B></P>
<P>Use WinZip to extract the Roller distribution file into the
directory of your choice for example, no example necessary.</P>
<H3 CLASS="western"><A NAME="DDE_LINK3"></A></H3>
<H2 CLASS="western"></H2>
<H2 CLASS="western" STYLE="page-break-before: always"><A NAME="section-InstallationGuide_2.x-STEP4DownloadAndInstallRequiredJars4"></A>
STEP 3: Install required third party jars</H2>
<P>You also need to download and install some third-party jars, jars
that we can't include in Roller due to licensing restrictions. These
are the JDBC driver, JavaMail and Activation jars.</P>
<H3 CLASS="western"><A NAME="DDE_LINK4"></A>STEP 3.1: Download and
install Hibernate</H3>
<P>Roller <I>requires</I> the Hibernate persistence library, which
you must download separately from Roller.
</P>
<P> Download Hibernate 3.1.2 from SourceForge</P>
<P> <A HREF="http://prdownloads.sourceforge.net/hibernate/hibernate-3.1.2.tar.gz">http://prdownloads.sourceforge.net/hibernate/hibernate-3.1.2.tar.gz</A></P>
<P>Copy the following files from Hibernate into the Roller
WEB-INF/lib directory:</P>
<UL>
<LI><P>hibernate3.jar</P>
<LI><P>asm-attrs.jar</P>
</UL>
<UL>
<LI><P>asm.jar</P>
<LI><P>cglib-2.1.3.jar</P>
<LI><P>dom4j.1.6.1.jar</P>
<LI><P>ehcache-1.1.jar</P>
<LI><P>jdbc2_0-stdext.jar</P>
<LI><P>jta.jar</P>
</UL>
<P>The Roller Support project at Java.Net offers some bundles that
might make this part of the installation easier. Visit
<A HREF="http://roller.dev.java.net/">http://roller.dev.java.net</A>
for more information.</P>
<H3 CLASS="western">STEP 3.2: Install JDBC driver jar(s)</H3>
<P>Download the JDBC driver jar for your database and put it in the
classpath of your application server. For example, assuming Tomcat
and MySQL, you'd download the J/Connector JDBC driver from mysql.com
and you'd place it in the Tomcat <FONT FACE="Courier New">common/lib</FONT>
directory.</P>
<P><B>UNIX example</B></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> %
cp mysql-connector.jar $CATALINA_HOME/common/lib</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P><B>Windows example</B></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> C&gt;
copy mysql-connector.jar %CATALINA_HOME%\common\lib</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P><B>NOTES</B></P>
<UL>
<LI><P STYLE="margin-bottom: 0in">For MySQL 4.1.X users, we
recommend that you use the J/Connector 3.0.X JDBC drivers instead of
the newer 3.1.X series. If you <I>must</I> use J/Connector/J 3.1.X
then please read <I>Installation FAQ</I> page item #13 on the Roller
wiki.</P>
</UL>
<P><BR><BR>
</P>
<H3 CLASS="western">STEP 3.3: Install JavaMail and Activation jars</H3>
<P>If you like to use Roller's e-mail notification features, you'll
need to add the JavaMail and Activation jars to your application
server's classpath. Currently, we ship these jars with Roller, but
you will need to <B>move</B> them from the Roller <FONT FACE="Courier New">WEB-INF/lib</FONT>
directory and into the Tomcat <FONT FACE="Courier New">common/lib</FONT>
directory, or your server's equivalent location.</P>
<P><B>UNIX example</B></P>
<P><FONT FACE="Courier New"><FONT SIZE=2> % mv
$ROLLER/WEB-INF/lib/mail.jar $CATALINA_HOME/common/lib</FONT></FONT></P>
<P><FONT SIZE=2><FONT FACE="Courier New"> % mv
$ROLLER/WEB-INF/lib/activation.jar $CATALINA_HOME/common/lib</FONT> </FONT></P>
<P><B>Windows example</B></P>
<P><FONT FACE="Courier New"><FONT SIZE=2> c&gt; move
%ROLLER%\WEB-INF\lib\mail.jar %CATALINA_HOME%\common\lib</FONT></FONT></P>
<P><FONT FACE="Courier New"><FONT SIZE=2> C&gt; move
%ROLLER%\WEB-INF\lib\activation.jar %CATALINA_HOME%\common\lib</FONT></FONT></P>
<P><B>NOTES</B></P>
<UL>
<LI><P>To enable the Roller's e-mail notification features, you'll
also need to setup a mail session resource in your application
server configuration file (see the next section) and you'll need to
configure e-mail notification in the Roller UI.</P>
</UL>
<H2 CLASS="western" STYLE="page-break-before: always"><A NAME="section-InstallationGuide_2.x-STEP3CreateRollerTablesInYourDatabase3"></A><A NAME="ref-InstallationGuide_2.x-3"></A>
STEP 4: Create Roller tables in your database</H2>
<P>Create a new database within your MySQL installation, create a
user with all privileges within that database and run the Roller
database creation script to create tables within that new database.</P>
<P>Roller includes database creation scripts for a variety of
database, but MySQL is the most widely used and best supported
option. You can find the database creation scripts in the Roller
installation directory under <FONT FACE="Courier New">WEB-INF/dbscripts/<I>&lt;dbname&gt;</I></FONT>.
Here's the list of scripts currently in Roller:</P>
<UL>
<LI><P><FONT FACE="Courier New"><FONT SIZE=2>WEB-INF/dbscripts/mysql/creatdb.sql </FONT></FONT></P>
<LI><P><FONT FACE="Courier New"><FONT SIZE=2>WEB-INF/dbscripts/postgresql/creatdb.sql </FONT></FONT></P>
<LI><P><FONT FACE="Courier New"><FONT SIZE=2>WEB-INF/dbscripts/hsqldb/creatdb.sql</FONT></FONT></P>
<LI><P><FONT FACE="Courier New"><FONT SIZE=2>WEB-INF/dbscripts/derby/creatdb.sql</FONT></FONT></P>
<LI><P><FONT FACE="Courier New"><FONT SIZE=2>WEB-INF/dbscripts/db2/creatdb.sql</FONT></FONT></P>
<LI><P><FONT FACE="Courier New"><FONT SIZE=2>WEB-INF/dbscripts/oracle/creatdb.sql</FONT></FONT></P>
</UL>
<P><BR><BR>
</P>
<P>Here are some examples to show you how you might create the Roller
tables in MySQL:</P>
<P><B>UNIX example:</B></P>
<PRE><FONT FACE="Courier New"><FONT SIZE=2> % cd $ROLLER/WEB-INF/dbscripts/mysql</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=2> % mysql -u root -p</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=2> password: *****</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=2> mysql&gt; create database roller;</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=2> mysql&gt; grant all on roller.* to scott@'%' identified by 'tiger';</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=2> mysql&gt; grant all on roller.* to scott@localhost identified by 'tiger';</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=2> mysql&gt; use roller;</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=2> mysql&gt; source createdb.sql</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=2> mysql&gt; quit</FONT></FONT></PRE><P>
<B>Windows example:</B></P>
<PRE> <FONT FACE="Courier New">C&gt; cd %ROLLER%\WEB-INF\dbscripts\mysql</FONT>
<FONT FACE="Courier New"> C&gt; mysql -u root -p</FONT>
<FONT FACE="Courier New"> password: *****</FONT>
<FONT FACE="Courier New"> mysql&gt; create database roller;</FONT>
<FONT FACE="Courier New"> mysql&gt; grant all on roller.* to scott@'%' identified by 'tiger';</FONT>
<FONT FACE="Courier New"> mysql&gt; grant all on roller.* to scott@'localhost' identified by 'tiger';</FONT>
<FONT FACE="Courier New"> mysql&gt; use roller;</FONT>
<FONT FACE="Courier New"> mysql&gt; source createdb.sql</FONT>
<FONT FACE="Courier New"> mysql&gt; quit</FONT></PRE><P>
<B>NOTES</B></P>
<UL>
<LI><P>For MySQL, don't forget to call <I>flush privileges </I><SPAN STYLE="font-style: normal">to
commit your changes to MySQL.</SPAN></P>
<LI><P>To check whether your MySQL is setup properly, use the
command line mysql program to connect using the user name and
password you created. For example (we use 127.0.0.1 here instead of
localhost to ensure that TCP/IP networking is enabled):</P>
</UL>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">mysql roller
-h 127.0.0.1 -u scott -ptiger</FONT></P>
<P><BR><BR>
</P>
<P> </P>
<H2 CLASS="western" STYLE="page-break-before: always"><A NAME="section-InstallationGuide_2.x-STEP5DeployRollerToYourApplicationServer5"></A><A NAME="ref-InstallationGuide_2.x-5"></A>
STEP 5: Deploy Roller to your application server</H2>
<P>To deploy Roller to your application server you need to inform
your application server:</P>
<UL>
<LI><P STYLE="margin-bottom: 0in">Where to find the Roller
installation directory
</P>
<LI><P>How to configure the Roller datasource under the JNDI name
<FONT FACE="Courier New">jdbc/rollerdb </FONT>
</P>
</UL>
<P STYLE="margin-bottom: 0in">For Tomcat you can do this by creating
what's known as a context configuration file named <FONT FACE="Courier New">roller.xml</FONT>
and placing that file in the Tomcat <FONT FACE="Courier New">conf/Catalina/localhost</FONT>
directory.
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><B>Example context configuration file
for Tomcat 5.0.X users</B></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in; font-weight: medium">The portions shown
in bold are the ones that you'll probably have to change. Make sure
you set the docBase to point to your Roller installation directory.
Make sure you set the JDBC connection string to point to your
database and the database username and password too.</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<PRE><FONT FACE="Courier New">&lt;Context path=&quot;/roller&quot; docBase=&quot;<B>/usr/local/roller</B>&quot; debug=&quot;0&quot;&gt;</FONT>
<FONT FACE="Courier New">&lt;Resource name=&quot;jdbc/rollerdb&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot; /&gt;</FONT>
<FONT FACE="Courier New">&lt;ResourceParams name=&quot;jdbc/rollerdb&quot;&gt;</FONT>
<FONT FACE="Courier New">&lt;parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;name&gt;factory&lt;/name&gt;</FONT>
<FONT FACE="Courier New">&lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;</FONT>
<FONT FACE="Courier New">&lt;/parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;name&gt;driverClassName&lt;/name&gt;</FONT>
<FONT FACE="Courier New">&lt;value&gt;com.mysql.jdbc.Driver&lt;/value&gt;</FONT>
<FONT FACE="Courier New">&lt;/parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;parameter&gt; </FONT>
<FONT FACE="Courier New">&lt;name&gt;url&lt;/name&gt;</FONT>
<FONT FACE="Courier New">&lt;value&gt;</FONT>
<FONT FACE="Courier New"><B>jdbc:mysql://localhost:3306/roller?autoReconnect=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=utf-8&amp;amp;mysqlEncoding=utf8</B></FONT>
<FONT FACE="Courier New">&lt;/value&gt;</FONT>
<FONT FACE="Courier New">&lt;/parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;parameter&gt;&lt;name&gt;username&lt;/name&gt;&lt;value&gt;<B>scott</B>&lt;/value&gt;&lt;/parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;parameter&gt;&lt;name&gt;password&lt;/name&gt;&lt;value&gt;<B>tiger</B>&lt;/value&gt;&lt;/parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;parameter&gt;&lt;name&gt;maxActive&lt;/name&gt;&lt;value&gt;20&lt;/value&gt;&lt;/parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;parameter&gt;&lt;name&gt;maxIdle&lt;/name&gt;&lt;value&gt;3&lt;/value&gt;&lt;/parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;parameter&gt;&lt;name&gt;removeAbandoned&lt;/name&gt;&lt;value&gt;true&lt;/value&gt;&lt;/parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;parameter&gt;&lt;name&gt;maxWait&lt;/name&gt;&lt;value&gt;3000&lt;/value&gt;&lt;/parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;/ResourceParams&gt;</FONT>
<FONT FACE="Courier New">&lt;!-- If you want e-mail features, un-comment the section below --&gt;</FONT>
<FONT FACE="Courier New">&lt;!--</FONT>
<FONT FACE="Courier New">&lt;Resource name=&quot;mail/Session&quot; auth=&quot;Container&quot; type=&quot;javax.mail.Session&quot;/&gt;</FONT>
<FONT FACE="Courier New">&lt;ResourceParams name=&quot;mail/Session&quot;&gt;</FONT>
<FONT FACE="Courier New">&lt;parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;name&gt;mail.smtp.host&lt;/name&gt;</FONT>
<FONT FACE="Courier New">&lt;value&gt;mailhost.example.com&lt;/value&gt;</FONT>
<FONT FACE="Courier New">&lt;/parameter&gt;</FONT>
<FONT FACE="Courier New">&lt;/ResourceParams&gt;</FONT>
<FONT FACE="Courier New">--&gt;</FONT>
<FONT FACE="Courier New">&lt;/Context&gt;</FONT></PRE><P>
<BR><BR>
</P>
<P STYLE="margin-bottom: 0in; page-break-before: always"><B>Example
context configuration file for Tomcat 5.5.X users</B></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in; font-weight: medium">The portions shown
in bold are the ones that you'll probably have to change. Make sure
you set the docBase to point to your Roller installation directory.
Make sure you set the JDBC connection string to point to your
database and the database username and password too.</P>
<P STYLE="margin-bottom: 0in; font-weight: medium"><BR>
</P>
<PRE><FONT FACE="Courier New">&lt;Context path=&quot;/roller&quot; docBase=&quot;<B>/usr/local/roller</B>&quot; debug=&quot;0&quot;&gt;</FONT>
<FONT FACE="Courier New">&lt;Resource name=&quot;jdbc/rollerdb&quot; auth=&quot;Container&quot; type=&quot;javax.sql.DataSource&quot;</FONT>
<FONT FACE="Courier New">driverClassName=&quot;com.mysql.jdbc.Driver&quot;</FONT>
<FONT FACE="Courier New">url=&quot;<B>jdbc:mysql://localhost:3306/roller?autoReconnect=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=utf-8&amp;amp;mysqlEncoding=utf8</B>&quot;</FONT>
<FONT FACE="Courier New">username=&quot;<B>scott</B>&quot;</FONT>
<FONT FACE="Courier New">password=&quot;<B>tiger</B>&quot;</FONT>
<FONT FACE="Courier New">maxActive=&quot;20&quot;</FONT>
<FONT FACE="Courier New">maxIdle=&quot;3&quot;</FONT>
<FONT FACE="Courier New">removeAbandoned=&quot;true&quot;</FONT>
<FONT FACE="Courier New">maxWait=&quot;3000&quot; /&gt;</FONT>
<FONT FACE="Courier New">&lt;!-- If you want e-mail features, un-comment the section below --&gt;</FONT>
<FONT FACE="Courier New">&lt;!--</FONT>
<FONT FACE="Courier New">&lt;Resource name=&quot;mail/Session&quot; auth=&quot;Container&quot; type=&quot;javax.mail.Session&quot;</FONT>
<FONT FACE="Courier New">mail.smtp.host=&quot;mailhost.example.com&quot; /&gt;</FONT>
<FONT FACE="Courier New">--&gt;</FONT>
<FONT FACE="Courier New">&lt;/Context&gt;</FONT></PRE><P>
<B>NOTES</B></P>
<UL>
<LI><P>If Roller starts up fine but later fails and you find an
error like the one below in your roller.log file then try dropping
your <FONT FACE="Courier New">maxActive</FONT>, <FONT FACE="Courier New">maxIdle</FONT>,
and <FONT FACE="Courier New">removeAbandoned</FONT> values.
Depending on your database configuration you may have to go pretty
low, such as setting <FONT FACE="Courier New">maxActive</FONT> to 6,
<FONT FACE="Courier New">maxIdle</FONT> to 3 and
<FONT FACE="Courier New">removeAbandonedTimeout</FONT> to 60.
</P>
</UL>
<P STYLE="font-style: normal"><FONT FACE="Courier New"><FONT SIZE=2> User
scott@localhost has more than 'max_user_connections' active
connections</FONT></FONT></P>
<P><BR><BR>
</P>
<P><BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<H2 CLASS="western" STYLE="page-break-before: always"><A NAME="section-InstallationGuide_2.x-STEP6ConfigureYourApplicationServerForUTF86"></A>
STEP 6: Check your internationalization settings</H2>
<P STYLE="margin-bottom: 0in">Roller's approach to
internationalization (I18N) is to do everything in UTF-8. So, if you
want I18N to work properly, you'll need to configure your application
server and your web server to use UTF-8 encoding.
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><B>Check your application server's URI
encoding setting!</B></P>
<P STYLE="margin-bottom: 0in"><BR>Make sure that your web application
server uses UTF-8 to encode URI's. This allows you to use diacritical
characters like '&ccedil;' in your URLs. This is important for Roller
because weblog entry titles are used in URLs.
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in">For example, in Tomcat the URI encoding
is specified in the connectors that are configured in the Tomcat
configuration file <FONT FACE="Courier New">conf/server.xml</FONT>.
Here's a connector with the URI encoding attribute set properly:</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">&lt;Connector
port=&quot;8080&quot;</FONT></P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">maxThreads=&quot;150&quot;
</FONT>
</P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">minSpareThreads=&quot;25&quot;
maxSpareThreads=&quot;75&quot;</FONT></P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">enableLookups=&quot;false&quot;
</FONT>
</P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">redirectPort=&quot;8443&quot;
</FONT>
</P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">acceptCount=&quot;100&quot;</FONT></P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">debug=&quot;0&quot;
</FONT>
</P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">connectionTimeout=&quot;20000&quot;</FONT></P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">disableUploadTimeout=&quot;true&quot;
</FONT>
</P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New"><B>URIEncoding=&quot;UTF-8&quot;
</B> /&gt;</FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><SPAN STYLE="font-weight: medium">And
make sure you do this for <I>every</I> connector through which you
use Roller. For example, if you use the AJP connector or HTTPS
connector you need to add the </SPAN><TT><SPAN STYLE="font-weight: medium">URIEncoding=&quot;UTF-8&quot;</SPAN></TT><SPAN STYLE="font-weight: medium">
attribute to those connectors as well.</SPAN></P>
<P><BR><BR>
</P>
<P><BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<H2 CLASS="western" STYLE="page-break-before: always"><A NAME="section-InstallationGuide_2.x-STEP7SetupRollerDataDirectories7"></A><A NAME="ref-InstallationGuide_2.x-7"></A>
STEP 7: Setup Roller data directories
</H2>
<P>Roller stores file uploads, search index files, cache files and
log files on disk. So before you start, check to make sure the
directories that Roller expects exist and are writable by the Tomcat
process.
</P>
<H3 CLASS="western">STEP 7.1: Create <TT>uploads</TT> directory</H3>
<P STYLE="margin-bottom: 0in">By default, Roller saves uploaded files
under the directory:</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><TT><FONT FACE="Courier New"> ${user.home}/roller_data/uploads</FONT></TT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in">Here <TT><FONT FACE="Courier New">${user.home}</FONT>
</TT>is the Java system property that normally evaluates to the home
directory of the user identity executing the server's JVM process.
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in">In most cases, this default will
probably work fine for you. However, for security reasons some
application servers are set up to run as a server user identity whose
home directory does not exist or is not writable by the server user
itself. If this is the case for your server, override the property
<TT><FONT FACE="Courier New">uploads.dir</FONT></TT> in the
<FONT FACE="Courier New">roller.properties</FONT> file. See step 8
for more information on the <FONT FACE="Courier New">roller.properties</FONT>
file.</P>
<H3 CLASS="western">STEP 7.2: Create <TT>search-index</TT> directory</H3>
<P>By default, Roller creates and maintains its text search index
data in files under the directory</P>
<P><TT><FONT FACE="Courier New"> ${user.home}/roller_data/roller-index</FONT></TT>
</P>
<P>Again, <TT><FONT FACE="Courier New">${user.home}</FONT> </TT>is
the Java system property that normally evaluates to the home
directory of the user identity executing the server's JVM process.
You can specify a different directory by overriding the property
<TT><FONT FACE="Courier New">search.index.dir</FONT> </TT>in
<FONT FACE="Courier New">roller.properties</FONT><FONT FACE="Thorndale">.
See step 8 for more information on the </FONT><FONT FACE="Courier New">roller.properties</FONT><FONT FACE="Thorndale">
file.</FONT></P>
<H3 CLASS="western">STEP 7.3: Create <TT>planet-cache</TT> directory
(optional)</H3>
<P>You only need to do this if you are planning on using Roller's
integrated planet aggregator: create a directory for the planet cache
(e.g. /var/roller/planet-cache).
</P>
<P>The planet aggregator is off by default. To enable it, you'll have
to override the <TT>planet.aggregator.enabled</TT> property (see the
<A HREF="http://www.rollerweblogger.org/wiki/Wiki.jsp?page=ConfigurationGuide">ConfigurationGuide</A>).
Once you've got Roller up and running, login (as an adminstrator), go
to the Planet:Configuration page and set full-path to the directory
you choose for the planet-cache.
</P>
<P>Currently, you must specify the location of the planet-cache
directory through the Roller web UI (but we planning to move it to
roller.properties because it is really a startup property).
</P>
<H3 CLASS="western"></H3>
<H3 CLASS="western" STYLE="page-break-before: always">STEP 7.4: Make
sure that the <TT>logs</TT> subdirectory exists</H3>
<P STYLE="margin-bottom: 0in">The <TT><FONT FACE="Courier New">roller.log</FONT>
</TT>file is written to the location:</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><TT><FONT FACE="Courier New"> ${catalina.base}/logs/roller.log</FONT></TT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in">Make sure that that this directory
exists. Tomcat 5.0.X users will normally have this directory by
default. Tomcat 5.5.x users may need to create this subdirectory
under their base directory.
</P>
<P><BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<H2 CLASS="western" STYLE="page-break-before: always"><A NAME="section-InstallationGuide_2.x-STEP8ReviewRollerConfiguration8"></A>
STEP 8: Review Roller configuration</H2>
<P>Before you start Roller for the first time, review your
configuration.</P>
<H3 CLASS="western">STEP 8.1: Review the
<FONT FACE="Courier New">WEB-INF/classes/roller.properties</FONT>
file</H3>
<P>Roller tries to pick a good set of configuration defaults which
should let anyone start up the application without much work, but
here are a few properties which are custom to each install and should
be set before you start up Roller. We'll first talk about what ways
there are for defining your custom Roller configuration, then show
which properties we think you should set. <B>NOTE</B>: the default
<FONT FACE="Courier New">roller.properties</FONT> file is shown in
Appendix B.</P>
<H4 CLASS="western"><A NAME="section-ConfigurationGuide_2.x-WhereToDefineCustomProperties"></A>
Where to define custom properties</H4>
<P STYLE="margin-bottom: 0in">There are three ways you can alter the
default configuration for Roller.
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><B>1)</B> Define a
<FONT FACE="Courier New">roller-custom.properties</FONT> file and
place it somewhere at the root of one of your classpath locations.
This is the recommended way to override Roller configuration
properties. For example:</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> $TOMCAT_HOME/common/classes/roller-custom.properties</FONT></FONT></P>
<P STYLE="margin-bottom: 0in">Or...</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> $TOMCAT_HOME/webapps/$ROLLER_WEBAPP/WEB-INF/classes/roller-custom.properties</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><B>2) </B>Specify a custom properties
file via JVM option. This is another good option but is more
dependant on what servlet container you use. For example:</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> #
this is how you might do it for tomcat</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> JAVA_OPTS=&quot;-Droller.custom.config=/path/to/properties/file&quot;</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> export
$JAVA_OPTS</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> $TOMCAT_HOME/bin/startup.sh</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><B>3) </B>If you like, you can open up
the default roller config file and change the values there. This
option should not be necessary and is <B>NOT</B> recommended. For
example:</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> $TOMCAT_HOME/webapps/$ROLLER_WEBAPP/WEB-INF/classes/roller.properties</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><A NAME="section-ConfigurationGuide_2.x-WhatPropertiesYouShouldSet"></A>
<B>What properties you should set</B></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in">We are going to assume you have defined
a <FONT FACE="Courier New">roller-custom.properties</FONT> file and
placed it in your classpath somewhere. To override any of the default
Roller properties you simply add a line with the proper key and the
new value you wish to use.
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in">Here is a sample
<FONT FACE="Courier New">roller-custom.properties</FONT> with the few
properties that should be overridden</P>
<P STYLE="margin-bottom: 0in">
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> uploads.dir=/app/roller/roller_data/uploads</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> search.index.dir=/app/roller/roller_data/search-index</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2> #
etc, etc, etc ... any other properties you want to override</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<H3 CLASS="western" STYLE="page-break-before: always">STEP 8.2:
Change keys in the <FONT FACE="Courier New">WEB-INF/security.xml</FONT>
file</H3>
<P>Starting with version 2.1, Roller uses the Acegi security
infrastructure. Several of the security features rely on keys that
are intended to be site-specific. These keys are used to compute HMAC
(hash-based message authentication code) values for <I>Remember Me</I>
cookies. Knowledge of these keys could allow an attacker to forge
invalid cookies, and thereby gain unauthorized access to your Roller
installation (at the application level).
</P>
<P>Roller ships with default values, and these should assumed to be
widely known. You should change your keys to be secret values
specific to your own site.
</P>
<P>Here is how to change the keys.
</P>
<OL>
<LI><P STYLE="margin-bottom: 0in">Find your <TT><FONT FACE="Courier New">WEB-INF/security.xml</FONT></TT>
file and open it in a text editor.</P>
<LI><P STYLE="margin-bottom: 0in">For the beans with ids
&quot;anonymousAuthenticationProvider&quot; and
&quot;anonymousProcessingFilter&quot; change the <TT>value</TT>
field of the property with <TT>name=&quot;key&quot;</TT> to be
different from the default value of &quot;anonymous&quot;. You can
use any string value of your choosing. It should be a secret
specific to your site. Use the same key value in these two beans;
they must match.</P>
<LI><P>For the beans with ids &quot;rememberMeServices&quot; and
&quot;rememberMeAuthenticationProvider&quot; change the <TT>value</TT>
field of the property with <TT>name=&quot;key&quot;</TT> to be
different from the default value of &quot;rollerlovesacegi&quot;.
You can use any string value of your choosing. It should be a secret
specific to your site. Use the same key value in these two beans;
they must match
</P>
</OL>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><B>NOTES</B>
</P>
<UL>
<UL>
<LI><P STYLE="margin-bottom: 0in">The reason one should change the
anonymous provider key is that a granted authorities list is
embedded within the anonymous authentication token.</P>
</UL>
</UL>
<H2 CLASS="western" STYLE="page-break-before: always"><A NAME="section-InstallationGuide_2.x-STEP9StartTomcatAndRoller9"></A>
STEP 9: Start Tomcat and start using Roller</H2>
<P STYLE="margin-bottom: 0in">Start your Servlet Container, open your
web browser, browse to the Roller start page and start using Roller.
If you are installing Roller on Tomcat then your Roller start page
URL is probably <FONT FACE="Courier New">http://localhost:8080/roller</FONT>.</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><B>UNIX example</B></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"> % cd
$CATALINA_HOME/bin</FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"> %
./startup.sh</FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><B>Windows example</B></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"> C&gt; cd
%CATALINA_HOME%\bin</FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"> C&gt; startup</FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><B>NOTE</B>:<SPAN STYLE="font-weight: medium">
the first user you create will have administrator privileges, so make
sure you create the first user yourself. An admin user can grant and
revoke admin rights from other users. </SPAN>
</P>
<P STYLE="margin-bottom: 0in; font-weight: medium"><BR>
</P>
<P STYLE="margin-bottom: 0in; font-weight: medium"><B>NOTE</B>: if
you'd like to use Roller's JSPWiki plugin, which allows you to enter
blog entries using JSPWiki syntax, then you'll have to download and
install separately the JSPWiki jars. See Appendix C for more
information.</P>
<P><BR><BR>
</P>
<P><B>You're done! </B>
</P>
<P>Roller should be working perfectly now. If not, then please
consult the Installation FAQ page on the Roller wiki and then check
with the experts on the Roller mailing lists. Somebody has probably
encountered the very same problems that you are encountering.
</P>
<P><BR><BR>
</P>
<H2 CLASS="western" STYLE="page-break-before: always">Appendix A:
Upgrading an existing Roller installation</H2>
<P>This document describes how to upgrade an existing installation to
the latest release of Roller by upgrading the Roller database and
replacing the old Roller files (which are typically found in
<FONT FACE="Courier New">tomcat/webapps/roller</FONT>) with the new
release.
</P>
<P>The steps are:</P>
<UL>
<LI><P STYLE="margin-bottom: 0in">STEP 1: Shutdown and backup your
old Roller</P>
<LI><P STYLE="margin-bottom: 0in">STEP 2: Install the new Roller</P>
<LI><P STYLE="margin-bottom: 0in">STEP 3: Copy old configuration</P>
<LI><P STYLE="margin-bottom: 0in">STEP 4: Upgrade the database</P>
<LI><P STYLE="margin-bottom: 0in">STEP 5: Startup Tomcat
</P>
</UL>
<H3 CLASS="western"><A NAME="section-UpgradeGuide_2.1-STEP1ShutdownAndBackupYourOldRoller1"></A><A NAME="ref-UpgradeGuide_2.1-1"></A>
STEP 1: Shutdown and backup your old Roller
</H3>
<P>Before you get started with your upgrade, you should shutdown your
existing Roller install, make a backup of your data, and move the old
Roller files out of the way. Here is an example of how you'd do this
with a Tomcat/MySQL setup:
</P>
<P STYLE="margin-bottom: 0in">Run shutdown.sh to stop Tomcat, for
example:
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New"><FONT SIZE=3>%
cd $CATALINA_HOME/bin</FONT></FONT></P>
<PRE STYLE="margin-bottom: 0.2in"> <FONT FACE="Courier New"><FONT SIZE=3>% ./shutdown.sh</FONT></FONT></PRE><P STYLE="margin-bottom: 0in">
Backup your database to somewhere safe on your system or to a remote
file-system, for example if you use MySQL you might do something like
this:</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">% mysqldump
-u scott -p rollerdb &gt; \</FONT></P>
<P STYLE="margin-bottom: 0in">
<FONT FACE="Courier New">/somewhere/safe/roller-backup-20050420.dmp</FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in">Here's an example for PostgreSQL users:
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"> <FONT FACE="Courier New">pg_dump -h
127.0.0.1 -W -U scott rollerdb &gt; roller.db</FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in">Move your Roller files to somewhere
safe, for example:
</P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<PRE> <FONT FACE="Courier New"><FONT SIZE=3>% cd $CATALINA_HOME/webapps</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=3>% mkdir /somewhere/safe/roller-old</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=3>% mv roller /somewhere/safe/roller-old</FONT></FONT></PRE><H3 CLASS="western">
<A NAME="section-UpgradeGuide_2.1-STEP2InstallTheNewRoller2"></A><A NAME="ref-UpgradeGuide_2.1-2"></A>
STEP 2: Install the new Roller
</H3>
<P>Follow the normal installation instructions to install Roller,
except:
</P>
<UL>
<LI><P STYLE="margin-bottom: 0in">Don't create a new database for
Roller, instead point the new Roller to your old Roller database
</P>
<LI><P>DO NOT start Tomcat when you are done with the installation,
we'll do that later
</P>
</UL>
<P><BR><BR>
</P>
<H3 CLASS="western"><A NAME="section-UpgradeGuide_2.1-STEP3CopyResourcesAndUpdateConfigs3"></A><A NAME="ref-UpgradeGuide_2.1-3"></A>
STEP 3: Copy resources and update configs
</H3>
<H4 CLASS="western"><A NAME="section-UpgradeGuide_2.1-3.1CopyYourOldResourcesAndOtherFilesYouveAdded"></A>
3.1 Copy your old resources and other files you've added</H4>
<P>User uploaded files are, by default, stored in the <TT><FONT FACE="Courier New">/resources</FONT></TT>
sub-directory of the Roller context directory. You should copy your
old resources directory into your new Roller installation.
</P>
<P>For example, on UNIX you can use <TT><FONT FACE="Courier New">cp
-r</FONT></TT> to copy the whole directory:
</P>
<PRE> <FONT FACE="Courier New"><FONT SIZE=3>% cd %CATALINA_HOME/webapps/roller</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=3>% cp -r /somewhere/safe/roller-old/roller/resources .</FONT></FONT></PRE><P>
NOTE: If you have any new themes under roller/themes, make sure to
copy those as well.
</P>
<H4 CLASS="western"><A NAME="section-UpgradeGuide_2.1-3.2RemoveJavaMailJarsIfDuplicated"></A>
3.2 Remove JavaMail jars if duplicated</H4>
<P>In an upgrade installation, you may already have the JavaMail jars
<TT>mail.jar</TT> and <TT>activation.jar</TT> in your Tomcat
<TT>common/lib</TT>. If so, you should remove them from the
<TT>WEB-INF/lib</TT> directory within the web app. (Keep them only in
the <TT>common/lib</TT> directory.)
</P>
<H4 CLASS="western"><A NAME="section-UpgradeGuide_2.1-3.3ReviewConfigurationProperties"></A>
3.3 Review configuration properties</H4>
<P>Review properties as described in STEP #8 of the installation
guide.</P>
<UL>
<LI><P STYLE="margin-bottom: 0in"><FONT FACE="Thorndale"><FONT SIZE=3 STYLE="font-size: 13pt"><B>WARNING:
In Roller 2.3 we changed the Roller package names from org.roller to
org.apache.roller. Because of this you MUST review your
roller-custom.properties file, search for the string &ldquo;org.roller&rdquo;and
replace all occurances of it with &ldquo;org.apache.roller&rdquo;.</B></FONT></FONT></P>
<LI><P STYLE="margin-bottom: 0in"><FONT FACE="Thorndale"><FONT SIZE=3 STYLE="font-size: 13pt"><B>WARNING:
The files required for Roller's JSPWiki plugin, Ekit editor and
Javascript enhanced editor have been removed from the Roller
distribution. If you'd like to continue to use these plugins, please
visit the Roller Support project on Java.Net
(http://roller.dev.java.net).</B></FONT></FONT></P>
</UL>
<H3 CLASS="western"><A NAME="section-UpgradeGuide_2.1-STEP4UpgradeTheDatabase4"></A><A NAME="ref-UpgradeGuide_2.1-4"></A>
STEP 4: Upgrade the database
</H3>
<P>Use the appropriate database upgrade script to upgrade your
database. To do this, login to your database and run one (or more) of
the Roller upgrade scripts located in Roller's <FONT FACE="Courier New">WEB-INF/dbscripts</FONT>
directory that corresponds to your database. There's a directory for
MySQL, PostgreSQL, HSQLDB and more.
</P>
<P>The database script directories
</P>
<UL>
<LI><P STYLE="margin-bottom: 0in"><FONT FACE="Courier New">WEB-INF/dbscripts/mysql
</FONT>
</P>
<LI><P STYLE="margin-bottom: 0in"><FONT FACE="Courier New">WEB-INF/dbscripts/postgresql
</FONT>
</P>
<LI><P STYLE="margin-bottom: 0in"><FONT FACE="Courier New">WEB-INF/dbscripts/hsql
</FONT>
</P>
<LI><P>and more...
</P>
</UL>
<P>There is an upgrade script for each release of Roller. If you're
upgrading from Roller 2.1, which was the last release before 2.3
you'll only need to run one script, that's <TT>210-to-230-migration.sql</TT>.
For example, here's how you'd do it for a MySQL database running on
UNIX:
</P>
<PRE> <FONT FACE="Courier New"><FONT SIZE=3>% cd $CATALINA_HOME/webapps/roller/WEB-INF/dbscripts/mysql</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=3>% mysql -u root -p</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=3>password: *****</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=3>mysql&gt; use roller;</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=3>mysql&gt; source 210-to-230-migration.sql</FONT></FONT>
<FONT FACE="Courier New"><FONT SIZE=3>mysql&gt; quit</FONT></FONT></PRE><P>
If you're upgrading from an earlier release you'll have to run each
of the older scripts in order to upgrade your database.</P>
<H3 CLASS="western"><A NAME="section-UpgradeGuide_2.1-STEP5StartupTomcat5"></A><A NAME="ref-UpgradeGuide_2.1-5"></A>
STEP 5: Startup your app server
</H3>
<P>Use the standard Tomcat <FONT FACE="Courier New">startup.sh</FONT>
(or <FONT FACE="Courier New">startup.bat </FONT>on Windows) script to
start Tomcat. As Roller starts up, it will perform some final steps
to upgrade your database, this may take few seconds longer than your
average Roller startup.
</P>
<P>And you're done!
</P>
<P>If Roller doesn't come up, check the logs for exceptions and error
messages. You should see these messages in the
<FONT FACE="Courier New">tomcat/logs/catalina.out</FONT> file and in
<FONT FACE="Courier New">tomcat/logs/roller.log</FONT>. If you still
can't diagnose and fix your startup program, then subscribe to the
Roller user mailing list for help. If there are any interesting
messages in the log files, send those along too.
</P>
<P><BR><BR>
</P>
<H2 CLASS="western"></H2>
<H2 CLASS="western" STYLE="page-break-before: always">Appendix B: The
<FONT FACE="Courier New">WEB-INF/roller.properties</FONT> file</H2>
<P>This file defines the default start-up properties for Roller. See
step 8 for instructions on how to override the properties in this
file.</P>
<P><BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Licensed to the Apache Software Foundation (ASF) under one or more</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
contributor license agreements. The ASF licenses this file to You</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
under the Apache License, Version 2.0 (the &quot;License&quot;); you
may not</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
use this file except in compliance with the License.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
You may obtain a copy of the License at</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
http://www.apache.org/licenses/LICENSE-2.0</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Unless required by applicable law or agreed to in writing, software</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
distributed under the License is distributed on an &quot;AS IS&quot;
BASIS,</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
See the License for the specific language governing permissions and</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
limitations under the License. For additional information regarding</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
copyright in this work, please see the NOTICE file in the top level</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
directory of this distribution.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
roller.properties</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
This file is for meant for Roller deployment properties</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Any properties that don't change at runtime are defined here</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
You can override the values in this file in a couple ways ..</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
1. define a roller-custom.properties file and place it somewhere</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
at the root of one of your classpath locations.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
for example:</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
$TOMCAT_HOME/common/classes</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
$ROLLER_LOCATION/WEB-INF/classes</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
2. specify a custom properties file via jvm option</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
example:</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
roller.custom.config=/path/to/properties/file</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
**NOTE: if you run multiple instances of roller on the same server</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
then you should beware of the fact that the override
options above</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
may affect *all* of you running instances. if you want to
do</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
custom overrides for each instance then you must do it by</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
placing a roller-custom.properties file at WEB-INF/classes/
in</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
each of you roller installations.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
properties in this file are accessed like this ...</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
RollerConfig.getProperty(&quot;propname&quot;);</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
User management settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
True to enable group blogging. False to prevent users from creating
more </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
than one weblog and from joining other weblogs.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>groupblogging.enabled=true</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#---------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Property expansion settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Values of the properties in this list get system property expansion </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
applied to them when loaded.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>config.expandedProperties=uploads.dir,search.index.dir</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Upload settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
The directory in which Roller will upload files</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>uploads.dir=${user.home}/roller_data/uploads</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
The context path under which resoures will be made available </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>uploads.url=/resources</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Search index settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Enables indexing of weblog entries and comments and enables search
servlet</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>search.enabled=true</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Directory in which search index is to be created (delete this
directory to</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
force Roller to recreate the entire search index)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>search.index.dir=${user.home}/roller_data/search-index</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Whether or not to include comments in the search index. If this</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
is false, comments are not included in the index.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>search.index.comments=true</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Cache settings.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Remember ... times are in seconds</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Default settings suitable for 100 user system</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Cache properties all follow the given format ...</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
cache.&lt;cache_id&gt;.&lt;prop&gt;=&lt;value&gt;</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
we then pass all &lt;prop&gt;=&lt;value&gt; pairs into the cache
manager when the cache</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
is being constructed. this makes it easy to add cache properties
that can</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
be used by the specified CacheFactory you are using.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
NOTE: it is expected that property validation happens in the
CacheFactory</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#-----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
The default cache implementation we want to use</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.defaultFactory=org.apache.roller.presentation.cache.ExpiringLRUCacheFactoryImpl</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.customHandlers=</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
This sets how many minutes into the future we look to prepare</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
entries posted into the future which need to be invalidated from the
cache.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
It is very unlikely that this should ever need to be changed</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.futureInvalidations.peerTime=3</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Main page cache (this is low on purpose)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.mainpage.size=10</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.mainpage.timeout=1800</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
set &quot;true&quot; to NOT cache the custom pages for users who are
logged in</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.mainpage.excludeOwnerEditPages=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Weblog page cache (all the weblog content)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.weblogpage.size=400</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.weblogpage.timeout=3600</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
set &quot;true&quot; to NOT cache the custom pages for users who are
logged in</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.weblogpage.excludeOwnerEditPages=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Weblog page last-modified-date cache </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
you want this fairly high, like weblogs * 10, with long timeouts</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.ifmodified.weblogpage.size=1000</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.ifmodified.weblogpage.timeout=14400</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Feed cache (xml feeds like rss, atom, etc)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.feed.size=200</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.feed.timeout=3600</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Feed last-modified-date cache</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
you want a reasonable size, like weblogs * 2, with long timeouts</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.ifmodified.feed.size=200</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.ifmodified.feed.timeout=14400</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Planet cache (planet page and rss feed)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.planet.size=10</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.planet.timeout=1800</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
set &quot;true&quot; to NOT cache the custom pages for users who are
logged in</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>cache.planet.excludeOwnerEditPages=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Secure login configs</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Enables HTTPS for login page only</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>securelogin.enabled=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Enable scheme enforcement?</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Scheme enforcement ensures that specific URLs are viewed only via
HTTPS</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>schemeenforcement.enabled=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
URL patterns that require HTTPS</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>schemeenforcement.https.urls=/j_security_check,/login-redirect.jsp,/login.jsp,\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>/user.do,/editor/yourProfile.do,/admin/user.do,/editor/userdata</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Password security settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>passwds.encryption.enabled=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>passwds.encryption.algorithm=SHA</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Enabled plugins ... remember, order does matter!!</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Weblog entry editor plugins</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>plugins.page=\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>org.apache.roller.presentation.velocity.plugins.convertbreaks.ConvertLineBreaksPlugin
\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,org.apache.roller.presentation.velocity.plugins.topictag.TopicTagPlugin
\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,org.apache.roller.presentation.velocity.plugins.search.WikipediaLinkPlugin
\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,org.apache.roller.presentation.velocity.plugins.search.GoogleLinkPlugin
\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,org.apache.roller.presentation.velocity.plugins.textile.TextilePlugin
\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,org.apache.roller.presentation.velocity.plugins.acronyms.AcronymsPlugin
\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,org.apache.roller.presentation.velocity.plugins.bookmarks.BookmarkPlugin
\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,org.apache.roller.presentation.velocity.plugins.email.ObfuscateEmailPlugin
\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,org.apache.roller.presentation.velocity.plugins.smileys.SmileysPlugin
\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,org.apache.roller.presentation.velocity.plugins.readmore.ReadMorePlugin</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
scheduled tasks, each is comma separated list of classes</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Comma separated list of task classnames to be executed once per day</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>tasks.daily=org.apache.roller.presentation.TurnoverReferersTask\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Needed to enable nightly fetching of blacklist</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#,org.apache.roller.presentation.BlacklistUpdateTask\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Daily Planet task: syncs weblog list with Roller, refreshes
Technorati stats</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#,org.apache.roller.presentation.planet.SyncWebsitesTask</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Comma separated list of task classnames to be executed hourly</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>tasks.hourly=\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Hourly Planet task: refresh latest entry list from all weblogs in
list</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#org.apache.roller.presentation.planet.RefreshEntriesTask</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Velocity settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>velocity.properties=/WEB-INF/velocity.properties</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>velocity.toolbox.file=/WEB-INF/toolbox.xml</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Page model implementation</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>velocity.pagemodel.classname=org.apache.roller.presentation.velocity.PageModel</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Experimental page model that allows user's access to Planet
aggregations</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#velocity.pagemodel.classname=org.apache.roller.presentation.velocity.planet.PlanetPageModel</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Persistence settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>persistence.roller.classname=org.apache.roller.business.hibernate.HibernateRollerImpl</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>persistence.filemanager.classname=org.apache.roller.business.FileManagerImpl</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
authenticator settings (experimental)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>authenticator.classname=org.apache.roller.presentation.DefaultAuthenticator</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
comment, referrer and trackback settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>comment.authenticator.classname=org.apache.roller.presentation.velocity.MathCommentAuthenticator</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>comment.notification.separateOwnerMessage=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>comment.notification.hideCommenterAddresses=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
enables site full blacklist check on comment posts (default: true)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>site.blacklist.enable.comments=true</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
enables site full blacklist check at time of trackback post (default:
true)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>site.blacklist.enable.trackbacks=true</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
enables partial blacklist check (not including blacklist.txt) for
each incoming referrer</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>site.blacklist.enable.referrers=true</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Trackback protection. Set this only if you need to limit the URLs to</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
which users may send trackbacks. Regex expressions are allowed, for
example:</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
trackback.allowedURLs=http://w3.ibm.com/.*||http://another.example.com/.*</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>trackback.allowedURLs=</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#Robot
check in referral processing. If this pattern is set and the
User-Agent in the</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#request
matches this pattern, all referral processing is skipped; this means
that</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#the
referral spam check is skipped, the request is allowed to proceed,
but the</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#referrer
is not recorded and hit count is not incremented. Recommended for
large sites</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#that
get a lot of legitimate crawler bot traffic. The pattern here is a
suggestion that</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#has
been reported to work well.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#referrer.robotCheck.userAgentPattern=.*(slurp|bot|java).*</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Enable built-in referrer processing?</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>referrers.processing.enabled=true</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Change to true if you want to process referrers asynchronously.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
You can choose how many threads to use and sleep time (in seconds) </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>referrers.asyncProcessing.enabled=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>referrers.queue.numWorkers=3</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>referrers.queue.sleepTime=10</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
ping settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
The number of attempts to try to reach a ping target before refusing
to </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
requeue it for further retrials. If absent, this defaults to 3.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>pings.maxPingAttempts=3</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
The interval between ping queue processing runs in minutes. Must be
between </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
0 and 120. If set to 0, ping queue processing is disabled on this
server; </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
this is for clustered environments. Make sure it is nonzero on one
host in </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
a cluster. Don't use the value 0 here to disable ping functionality,
you </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
will instead get an infinitely growing ping queue. See the
documentation on </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
the properties below to disable ping functionality if you need to.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
If absent, this defaults to 5.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>pings.queueProcessingIntervalMins=5</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
The set of initial common ping targets. This is used to initialize
the </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
database if there are no common ping targets at startup. Ping
targets are </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
specified as a comma-separated list, each target in the form
{{name}{url}}. </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
To disable initialization of common ping targets, comment this out,
or set it</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
to the empty value. Common targets can be edited in the UI; this is
just </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
used to set up some typical ones.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>pings.initialCommonTargets=\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>{{Technorati}{http://rpc.technorati.com/rpc/ping}}\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,{{Weblogs.com}{http://rpc.weblogs.com/RPC2}}\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,{{blo.gs}{http://ping.blo.gs/}}\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,{{java.blogs}{http://javablogs.com/xmlrpc}}\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>,{{blogrolling.com}{http://rpc.blogrolling.com/pinger/}}</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
This controls whether users are allowed to add custom ping targets. </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Set this to false to disallow adding custom targets; if false, the </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Weblog:Custom Ping Targets menu item will not appear and associated
actions </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
will result in access denied messages. Leave this false or commented
for </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
normal behavior. </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
CAUTION: Setting this to true will cause the server to remove all
users' </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
existing custom targets on startup.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>pings.disallowCustomTargets=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
This controls whether the Weblog:Pings menu item and its associated
actions </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
are enabled. Set this to false to disallow users from configuring
autopings </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
and doing manual pings. If absent, this defaults to true.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
NOTE: There is a separate runtime property (configurable from the </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Admin:Configuration page, that can be used to suspend ping processing
without </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
disabling the UI.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
CAUTION: Setting this to true will cause the server to remove all
users' </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
existing autoping configurations on startup. Leave this false or
commented </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
for normal behavior.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>pings.disablePingUsage=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Setting both pings.disallowCustomTarget=true and
pings.disablePingUsage=true </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
will effectively disable the ping functionality.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
This is used for debugging the ping mechanism in Roller. If this is
set </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
to true, pings that would normally be sent will cause log messages to
be sent </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
but will NOT actually result in real pings being sent. Leave this
false or </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
commented for normal behavior.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>pings.logOnly=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Planet Aggregator settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Set to true to enable the Planet aggregator. This will cause:</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
- The main page of Roller will become an aggregated view of all blogs
in the </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Roller database, plus those defined in the Planet group 'external'.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
- A new menu tab will appear for Roller admin users. This allows
admins to </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
add/remove newsfeed subscriptions in the 'external' group.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
- Users can then subscribe to several newsfeeds:</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
- http://localhost:8080/roller/rss</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
- http://localhost:8080/roller/planetrss</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
- http://localhost:8080/roller/planetrss?group=external</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>planet.aggregator.enabled=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Planet cache must exist and must be writable by Roller process</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>planet.aggregator.cache.dir=/var/roller/planetcache</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Number of queries allowed per day</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>planet.aggregator.technorati.limit=500</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
defaults for new weblogs</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
list of links to include in root bookmark folder of each new blog</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
format is like so:
linktitle2|linkurl2,linktitle2|linkurl2,linktitle3|linkurl3</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>newuser.blogroll=\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>Dave
Johnson|http://rollerweblogger.org/page/roller,\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>Matt
Raible|http://raibledesigns.com/page/rd,\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>Lance
Lavandowska|http://brainopolis.dnsalias.com/roller/page/lance,\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>Henri
Yandell|http://blog.generationjava.com/roller/page/bayard,\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>blogs.sun.com|http://blogs.sun.com,\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>jroller.com|http://jroller.com</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
comma-separated list of top-level categories to be created in each
new weblog</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>newuser.categories=\</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>General,Status,Java,Music,Politics</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Default weblog editor</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
The list of available editors is in rollerRuntimeConfigDefs.xml</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>newweblog.editor=editor-text.jsp</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
misc settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>rememberme.enabled=true</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>breadcrumbs.stacksize=3</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>debug.memory.enabled=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
editor theme to be used (corresponds to directory name under /theme)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>editor.theme=tan</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#---------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
settings for various plugins</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Optional site-wide customization settings for the TopicTag plugin.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
n.b. these default settings match the coded default values that would
be </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
applied if these were omitted.</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>org.apache.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.defaultTopicBookmarkName=Default
Topic Site</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>org.apache.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.defaultTopicSite=http://www.technorati.com/tag</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>org.apache.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.tagRegexWithBookmark=topic:\\{(.*?)\\}\\[(.*?)\\]</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>org.apache.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.tagRegexWithoutBookmark=topic:\\[(.*?)\\]</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>org.apache.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.linkFormatString=&lt;a
rel=\&quot;tag\&quot; href=\&quot;{0}{1}\&quot;&gt;{2}&lt;/a&gt;</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Set to true to allow only default topic tag site (and avoid costly
bookmark queries)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>org.apache.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.ignoreBookmarks=true</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#---------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Experimental settings</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
Atom Publishing Protocol (APP) - this is an incomplete and untested </FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
implementation of an unfinished IETF specification. Intended only for
</FONT></FONT>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
interoperability testing. DO NOT ENABLE IN PRODUCTION!</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>webservices.atomprotocol.enabled=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#----------------------------------</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
legacy settings (thing that should be deprecated</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><BR>
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>#
settings for old #showNewseeds macro (not related to Planet stuff)</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>aggregator.enabled=false</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>aggregator.cache.enabled=</FONT></FONT></P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Courier New"><FONT SIZE=2>aggregator.cache.timeout=14400</FONT></FONT></P>
<P STYLE="margin-bottom: 0in; font-weight: medium"><BR>
</P>
</BODY>
</HTML>