Lunarc Application Portal

Manual Installation

This document provides manual instructions for installing the portal. This can be useful when custom setups or different Linux distributions are used.

Installing WebWare for Python

The first step in installing the portal is to install and configure the WebWare for Python application server. Webware tarballs can be downloaded from:

The tar-package can be downloaded and extracted with the following commands:

[root@grid sw]# wget [sourceforge url]
--13:57:29--  http://[...sourceforge...]/Webware-0.9.4.tar.gz
           => `Webware-0.9.4.tar.gz'
.
.
.
100%[=============>] 936,493      164.42K/s    ETA 00:00

13:57:35 (168.79 KB/s) - `Webware-0.9.4.tar.gz' saved ...
[root@grid sw]# tar xvzf Webware-0.9.4.tar.gz
Webware-0.9.4/
Webware-0.9.4/KidKit/
Webware-0.9.4/KidKit/Docs/
Webware-0.9.4/KidKit/Docs/RelNotes-0.9.1.phtml
.
.

To install Webware, the provided installation scripts must be run:

[root@grid sw]# cd Webware-0.9.4
[root@grid Webware-0.9.4]# python ./install.py
Webware for Python 0.9.4
Installer

    Cur Date: Tue Sep 25 14:08:58 2007
      Python: 2.3.4 (#1, May  2 2007, 19:26:00)
.
.
Choose a password for the WebKit Application Server.
If you will just press enter without entering anything,
a password will be automatically generated.
Password:

The installation script stops after a while to ask for a password. Press enter to generate a random password. As we are not going to use the WebWare administration interface a random password will suffice. If everything went well the following text is displayed indicating a succesful installation:

Welcome to Webware!

You can already try out the WebKit application server.
Start it with "WebKit/AppServer" and point your browser
to "http://localhost:8080".

Browsable documentation is available in the Docs folders.
You can use "Docs/index.html" as the main entry point.

Installation is finished.

Setting up a WebWare application instance

Before the portal can be installed, a webware application instance has to be created. A WebWare application instance is a separate directory containing startup and configuration files for an application. The WebWare installation directory contains command line tools for accomplishing this. The following procedure will setup a application instance at /opt/lap with a context directory /opt/lap/context.

[root@grid Webware-0.9]# cd
[root@grid Webware-0.9]# cd bin
[root@grid bin]# ./MakeAppWorkDir.py -c context /opt/lap
Making a new WebKit runtime directory...

Creating the directory tree...
        /opt/lap/
        /opt/lap/Cache
.
.
.

Configuring the Webware application instance

To test the instance the application server can be started using the AppServer command:

[root@grid lap]# cd /opt/lap
[root@grid lap]# ./AppServer
Starting WebKit.ThreadedAppServer...

WebKit AppServer 0.9.4
.
.
.
Creating 10 threads..........
Listening for Adapter on 127.0.0.1:8090
Listening for HTTP on 127.0.0.1:8080
Ready (0.14 seconds after launch).

If everything has been setup correct, a web page should be displayed when a browser is directed to http://localhost:8080. WebWare comes with a built in web server that is configured to start by default. This server will be disabled in when deploying the application using the Apache web server.

Configuring the application instance for LAP

The Lunarc Application Portal requires the use of https for transfer of sensitive login data. As the built in web server does not support this protocol it has to be disabled. This is done in the [instance dir]/Configs/AppServer.config. In the file the EnableHTTP configuration value must be set to False.

.
.
EnableHTTP = False # enable built-in Webserver
HTTPPort = 8080
.
.

Building the mod_webkit module for the Apache web server

To be able to use WebWare from the Apache Web Server the, mod_webkit, module has to be build. The source for this module is available in the WebWare-0.9.x source dir. To build the module, the apxs build tool is needed. On a CentOS based distro it is installed using yum

# yum install httpd-devel
Next the module is built and installed.
# cd {WEBWARE_DIR}/WebKit/Adapters/mod_webkit2
# make
# make install

Configuring the Apache web server

To use the Apache web server with the Lunarc Application Portal it has to be configured for the HTTPS protocol. The next step is to configure Apache to delegate requests to the WebWare application server. In a RedHat based configuration this can be done by adding the following configuration file to /etc/httpd/conf.d/lap.conf:

LoadModule webkit_module modules/mod_webkit.so

<Location /lap>
WKServer localhost 8086
SetHandler webkit-handler
SSLRequireSSL
</Location>

This will delegate any requests to https://xxxxx/lap/ to the WebWare application server located on the same machine as the web server using the tcp port 8086. Port can be configured in the [instance dir]/Configs/AppServer.config file.

When the Apache webserver is restarted, the Webware default page should be shown when directed to https://xxxxx/lap/.

Installing Nordugrid ARC packages

Before install the Lunarc Application Portal the needed NorduGrid ARC packages should be installed. Please see the instructions on www.nordugrid.org. In addition to the standard packages the following packages must be installed as well:

Installing the Lunarc Application Portal

The Lunarc Application Portal is intended to be installed in a WebWare application instance. The basic procedure is to download and extract the source packages to the root of the instance directory.

[root@grid lap]# tar xvzf lap-source-0.8.5.tar.gz
./context/LogoutPage.py
./context/WelcomePage.py
./context/UserPrefsPage.py
.
.[root@grid lap]# tar xvzf lap-plugins-0.8.5.tar.gz
./context/Plugins/DocProgrammingGuide/CustomDocSecurePage.py
./context/Plugins/DocProgrammingGuide/Doc.info
./context/Plugins/DocProgrammingGuide/CustomDocPage.py
.
.
[root@grid lap]# tar xvzf lap-layout-0.8.5.tar.gz
./context/images/jobSelectedRunning.gif
./context/images/trash.gif
./context/images/jobSelected.gif
.
.
[root@grid lap]# tar xvzf lap-config-0.8.5.tar.gz
./init/lap
./LapConfig/LapSite.py
./LapConfig/LapSite.pyc
start-lap
lapversion
make-dist
Launch.py
install-depends

Next the depency packages of the Lunarc Application Portal must be installed. These dependencies are:

To make it easier to install the Lunarc Application portal disitribution contains a help script for downloading and installing these.

[root@grid lap]# ./install-depends	
Downloading dependencies...
Downloading jsdomenubar 1.1.1...
--18:20:08--  http://.../jsdomenubar1_1_1.zip
           => `jsdomenubar1_1_1.zip'
Resolving www.dynamicdrive.com... 208.75.149.97
Connecting to www.dynamicdrive.com|208.75.149.97|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 93,831 (92K) [application/zip]

100%[========================>] 93,831       111.52K/s

18:20:14 (111.31 KB/s) - `jsdomenubar1_1_1.zip' saved 

Downloading HyperText 1.0.1...
--18:20:14--  http://.../HyperText-1.0.1.tar.gz
           => `HyperText-1.0.1.tar.gz'
Resolving dustman.net... 66.163.242.250
Connecting to dustman.net|66.163.242.250|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 46,606 (46K) [application/x-tar]

100%[========================>] 46,606        23.22K/s

18:20:21 (23.19 KB/s) - `HyperText-1.0.1.tar.gz' saved 

Installing jsdomenubar...
Patching jsdommenubar...
patching file jsdomenubar.js
Installing HyperText...

Configuring the portal

Configuration settings for the portal can be found in the [instance dir]/LapConfig/LapSite.py and should be modified to match the local setup. A typical configuration is shown below:

Application = {
        "ContextName":"context"
}

Logging = {
        "LogFile":"/var/log/lap/lap.log",
        "WebWareLogFile":"/var/log/lap/lap_ww.log",
        "LogLevel":"DEBUG"
}

Dirs = {
    "PluginDir":"/opt/lap/context/Plugins",
    "SessionDir":"/var/spool/lap",
    "WebWareDir":"/opt/Webware-0.9.4",
    "AppWorkDir":"/opt/lap",
    "DependsDir":"/opt/lap/depends",
    "NorduGridDir":"/opt/nordugrid"
}

Appearance = {
        "WelcomeMessage":"Welcome to the XYZ application portal",
        "WebSiteName":"XYZ",
        "LogoImage":"images/logo.png",
        "LogoImageWidth":"445px",
        "LogoImageHeight":"86px"
}

Admin = {
        "VOAdmin":"[DN of administrator]",
        "VOSites":[""],
        "UserAdmin":"[DN of administrator]",
        "UserSites":[""],
        "UserListEnabled":False
}

System = {
        "SMTPServer":"[hostname/ip of smtp server]",
        "ServerUser":"[unix userid for the server]",
        "ServerGroup":"[unix groupid for the server]",
        "ServerPIDFile":"/var/run/lap.pid",
}

The final step of the configuration is to modify and install the init-script (for RHEL based systems). The init-script is located in [instance dir]/init. There are 3 variables that must med modified for your system. The variables are shown below:

#!/bin/sh
#
# Startup script for the Lunarc Application Portal
#

# chkconfig: 2345 75 25
# description: LAP is a Python application server.

# Configuration section

APP_DIR=/opt/lap
PID_FILE=/var/run/lap.pid
LOG=/var/log/lap/lap_init.log
.
.