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.
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 . . .
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.
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 . .
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-develNext the module is built and installed.
# cd {WEBWARE_DIR}/WebKit/Adapters/mod_webkit2 # make # make install
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/.
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:
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...
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 . .