Installing Astrogrid Server Applications

If you are using Tomcat as your webapp container, then AstroGrid provides a number of graphical installer applications that manage downloading, installing and configuring AstroGrid components.

These installer apps are executable jar files and require only that JDK1.4+ is installed on your machine. Once downloaded, double-click on the jar file (in Windows Explorer) or execute

java -jar installer-name.jar

from the commandline. As well as prompting you for any configuration settings, the installer will give you the opportunity to save your settings to allow easy reinstallation.

Follow the links to the left to download the latest installer for each component.

Firewalls/proxies

If you can only access the internet through a proxy then you run the installers with:

java -jar install-name.jar -p proxyhost:port [-u username:password]

Non-graphical environments

The installers use a Swing-based GUI. If you're installing on a headless machine, then run the installers with a -c switch to use text-only mode.

Out of Memory errors

Try increasing the memory available to the JVM

java -Xmx128m -jar installer-name.jar

Developers: About the installers

The problem

AstroGrid software is usually packaged as a web-archive for deployment in a container such as Tomcat. Typically, installation requires the web-archive to be deployed, the setting up of a working directory, configuration of JNDI properties, and the registration of the component in an IVOA registry. This is beyond the capabilities of free off-the-shelf installers such as izpack. "Scripting" environments such as Maven and Ant offer the power we need, but are not very user-friendly. Furthermore, when an attempt was made to use Maven as a deployment tool it was found that the maintenance costs of having separate almost-but-not-quite identical scripts for deployment and integration testing (ie AGINAB) were too great.

A solution

AGINAB has now been split up into separate Ant scripts, each responsible for deploying and configuring a single component. These scripts are stored in CVS with the component which they deploy, making maintenance easier. AGINAB is now responsible only for setting up the testing environment - it delegates deploying the test components to these scripts.

Furthermore, each AstroGrid component now has a separate project that builds a graphical installer around the Ant deployment scripts. Thus, the same script is used both for testing, and to drive an easy to use graphical installer. The graphical installer wraps up Ant, the deployment script, and some help pages into a single executable jar file. The user is only required to have Java 1.4+ and Tomcat installed on his target system.

The details

The deployment scripts have been created by extracting the relevant parts of the old AGINAB script and refactoring them to make them more user-friendly (more echo statements for example). Since the installer only bundles Ant, only Ant has been used in the deployment scripts. User-definable properties (such as those used for configuration) are set in the scripts using <input> tags. When the script is run stand-alone, these tags prompt the user for the properties. However, when the script is called from AGINAB these properties are set in advance, and Ant/Maven skips over the <input> tags since properties in Ant are immutable. In most components the deployment script can be found in a Maven subproject called deployment. This is the place to go now if you want to change how your component is deployed or configured for integration testing. Typically the script has a number of 'public' targets such as "install", "remove" and "register", and a number of 'private' targets such as "download", "updateWar". Currently most scripts register their component using the Registry Ant task developed for AGINAB. However, where a component has a JSP page that performs registration it is preferable for the script to call that instead for maintenance and testing reasons.

Each component also has a Maven subproject, usually called installer, that creates a graphical installer as an executable jar file. The installer project bundles together Ant, the deployment script, and a small library called Antigen that provides the GUI interface to Ant. Of interest here is the resources/config.properties file that sets such things as window titles, the Ant targets to run, and the location of the help files. The file is a simple java properties file and is well commented. When running the scripts from AGINAB using Maven there are a number of issues to note. Firstly, Maven 1.0.2 uses an old version of Ant that does not properly support the <input> task, so I've had to patch it - this is the strange "override-input-task" goal in the AGINAB script. When Maven 1.1 (which bundles Ant 1.6.x) is released, this kludge should go away. Secondly, currently AGINAB calls most of the deployment scripts with "inheritall" set to false. This means that deployment scripts do not see the properties that are set in AGINAB - instead properties must be passed explicitly to the scripts as a nested properties block. This ensures that there is no danger of the deployment scripts interfering with each other (ie we can have identically named properties with different meanings in different scripts). It would make the AGINAB script more concise if the deployment scripts do inherit the properties from AGINAB but we will need to be disciplined about the naming of properties in the deployment scripts.