Hi devs,
This proposal is a restart of the thread I've sent, entitled "[Proposal]
XWiki's Permanent Directory Strategy for Installations" in which I wasn't
clear.
Executive Summary
================
Define 2 XWiki directories; one for holding configuration data and one for holding
(permanent) data and allow various configurations for our distributions.
* Config dir is where xwiki configuration files is located. Examples: xwiki.cfg,
xwiki.properties, hibernate.cfg.xml
* Data dir is where xwiki writes permanent data. Examples: database/, extension/ lucene/,
jetty log files
Rationale
========
This proposal below tries to answer the following general use cases:
* Ability to easily backup an XWiki install
* Ability to easily upgrade an XWiki install
* Ability to install XWiki on various OSes, including OSes like Windows 7 which require a
total separation of readonly binaries and generated data
* Ability to have several instances of XWiki on the same machine
Note that I'm sending this email since I'm currently working on making our
installer work on Windows 7 and I need an agreement on this before I can continue since
I'm currently blocked.
Use Cases
=========
The proposal below should allow the following use cases easily:
UC1: use the standalone zip distribution
UC2: upgrade a standalone zip distribution install
UC3: Use the WAR production distribution
UC4: Upgrade an existing WAR distribution
Short Term Proposal
=================
* Add 2 system property variables: xwiki.config.dir and xwiki.data.dir
* Use the following algorithm for resolving the Config dir (in Environment Module):
** Check if system property xwiki.config.dir is set, if so, use it
** Otherwise default to the WEB-INF directory (same as now)
* Use the following algorithm for resolving the Data dir (in Environment Module):
** Check if system property xwiki.data.dir is set, if so, use it
** Otherwise use value of environment.permanentDirectory in xwiki.properties (same as
now)
** If no environment.permanentDirectory exists, then use the temporary directory (same as
now)
* Don't provide a default value for environment.permanentDirectory in
xwiki.properties
* Note that we probably need to modify a bit Environment module to add support for a
Configuration directory (not sure yet about this need).
Use Cases Walkthrough
===================
UC1:
* user unzips, that's all
* in start/stop xwiki scripts we use xwiki.config.dir = [homedir]/config and
xwiki.data.dir=[homedir]/data
* environment.permanentDirectory is not defined in xwiki.properties
UC2:
* user unzips new version in another directory and copy the old data and config
directories over
* Note that this use case is not really a valid one since the standalone zip is not meant
to be a production zip at the moment
UC3:
* user deploys war in container's webapps dir and edits WEB-INF/xwiki.properties to
set environment.permanentDirectory (same as now)
* however the recommendation is for the user to put it's XWiki config dir and data dir
somewhere on his system and use the xwiki.config.dir and xwiki.data.dir system properties
in his startup/stop scripts, thus making it easy for UC4
UC4:
* users replaces the older WAR with the new WAR and if he has applied the recommendation
from UC3 that's all he has to do. Otherwise he needs to edit the xwiki.properties file
to set environment.permanentDirectory
WDYT?
Thanks
-Vincent