On Jun 2, 2012, at 4:06 PM, Thomas Mortagne wrote:
On Fri, Jun 1, 2012 at 3:30 PM, Vincent Massol
<vincent(a)massol.net> wrote:
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
There is something missing here. XWiki is not going to find anything
in [homedir]/config obviously when starting so how does he knows about
proper hsqldb configuration for example ? Is the configuration copied
from the war the first time it starts ?
The zip contains everything. Its structure would be:
[homedir]/
|_ data/
|_ config/
|_ jetty/
|_ webapps/
|_ start_xwiki.sh
|_ …
In the start/stop shell scripts, we will have: -Dxwiki.data.dir=data and
-Dxwiki.config.dir=config
Hope it's more clear :)
Thanks
-Vincent
> * 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