Hi list,
In order to ease XWiki installation for those who don't want to deal
with tomcat/mysql, Ludovic asked me to work on a standalone installation
of XWiki based on jetty and hsqldb.
I think I get to a point where I have something useful, so I wanted to
describe what I have done, and if Ludo agrees to create an account for
me, I will be able to commit some files in the next few days ;-)
So, I have added a 'standalone' target into the build.xml file (see
below). This target expands a jetty.5.1.5 archive, removes the sample
applications, inserts the xwiki release (exploded war) into the webapps
directory, copies some configuration files in order to make xwiki use an
in-process hsqldb database. hsqldb database files are also copied into
the package. The database data have been taken from the mysql export
(xwiki-db-0.9.2.sql).
At the root of this package, 4 scripts are eventually copied in order to
help user to start/stop the application server (start_xwiki.bat|sh,
stop_xwiki.bat|sh).
The produced package is usable 'as-is' simply by copying the files
somewhere on your disk. And yes, it works on a USB key also. It weights
a total of 37 MB.
With this target, I have also written a basic Nullsoft Installer script,
in order to help Windows users in installing the package. Basically this
installer installs all the files produced by the standalone target in a
user specified directory, then create 3 shortcuts in the Windows start
menu: start, stop (à la tomcat) and uninstall. Before doing this the
installer checks if a jre 1.4 or newer is installed (I'm not sure that
1.4 is required for xwiki, this can be changed easily), if not the user
is redirected to the download section of the Java web site. This
installer weight a total of 30 MB.
On the todo list of this installer :
- add the possibility to specify a port number for the jetty server ;
- install a bundled jre if needed (have to check the sun license in
order to be sure this is possible)
- add a final window explaining what to do after the installation (use
the start/stop shortcuts, start a browser...)
On the todo list of this standalone installation :
- add an installer for Mac OS X platforms
- add an installer for Linux platforms (autopackage ?), may be not so
useful, since Linux users are more acquainted to tomcat/mysql
installation ...
Any question, comment, idea would be greatly appreciated.
Seb.
here is the standalone target code :
<!-- Standalone package properties -->
<property name="standalone.base.dir"
value="${basedir}/standalone"/>
<property name="standalone.jetty.archive.dir"
value="jetty-5.1.5"/>
<property name="standalone.jetty.archive"
value="${standalone.base.dir}/${standalone.jetty.archive.dir}.zip"/>
<property name="standalone.package.name"
value="xwikionjetty"/>
<property name="standalone.release.dir"
value="${release.dir}/${standalone.package.name}"/>
<fileset id="standalone.db.bootstrap"
dir="${standalone.base.dir}/db" includes="xwiki_db.*"/>
<fileset id="standalone.config"
dir="${standalone.base.dir}/config"
includes="xwiki.cfg, hibernate.cfg.hsql.xml"/>
<fileset id="standalone.scripts"
dir="${standalone.base.dir}/scripts" includes="*"/>
<target name="standalone" depends="release">
<!-- unzip jetty archive into standalone release dir -->
<!-- exclude some jetty provided jar files in order to avoid clashes -->
<!-- these jars are provided by xwiki -->
<unzip src="${standalone.jetty.archive}"
dest="${release.dir}">
<patternset>
<exclude name="**/ext/xercesImpl.jar"/>
<exclude name="**/ext/xml-apis.jar"/>
<exclude name="**/ext/xmlParserAPIs-2.5.jar"/>
</patternset>
</unzip>
<move todir="${standalone.release.dir}">
<fileset dir="${release.dir}/${standalone.jetty.archive.dir}"/>
</move>
<!-- remove example webapps -->
<delete file="${standalone.release.dir}/webapps/javadoc.war"/>
<delete dir="${standalone.release.dir}/webapps/template"/>
<!-- explode xwiki war file into jetty/webapps -->
<mkdir dir="${standalone.release.dir}/webapps/xwiki"/>
<unwar src="${release.warfile}"
dest="${standalone.release.dir}/webapps/xwiki"/>
<!-- replace configuration files with standalone version -->
<copy todir="${standalone.release.dir}/webapps/xwiki/WEB-INF"
overwrite="true">
<fileset refid="standalone.config"/>
</copy>
<!-- install db bootstrap -->
<mkdir dir="${standalone.release.dir}/db"/>
<copy todir="${standalone.release.dir}/db">
<fileset refid="standalone.db.bootstrap" />
</copy>
<!-- install start/stop scripts -->
<copy todir="${standalone.release.dir}">
<fileset refid="standalone.scripts"/>
</copy>
</target>