Setting up EDG UI v1.2beta10 on RH 6.2

Firewall:

> The connections you will need to be able to make outgoing are
> 
> $ telnet rb.gridpp.ac.uk 7846             (Resource Broker)
> $ telnet rb.gridpp.ac.uk 7771             (Logging Broker)
> $ telnet rb.gridpp.ac.uk 2811             (GridFTP)
> $ telnet www.gridpp.ac.uk 80              (CRL Lists)
> 
> You do not need any inbound connections.
> Unless you use globus-job-run directly in which case the normal
> GLOBUS_TCP_RANGE=10000,12000  and then they have to be opened up
> incoming.

To use an R_GMA "server" you will need port 8080 open in both directions.


Start from stock" RedHat 6.2 box with current set of updates - make sure 
have relevant packages.

I'm using "commercial" SSH ssh-2.4.0-1

Need libwww, including devel -
	w3c-libwww-5.2.8-4
	w3c-libwww-apps-5.2.8-4
	w3c-libwww-devel-5.2.8-4

If need a proxy and are not using wget's config file, can set up env 
variable, e.g.:
	setenv http_proxy "http://wwwcache.brunel.ac.uk:10000/"
and similar for ftp_proxy gopher_proxy wais_proxy. Especially if using 
R-GMA on multiple machines at one site, you should also have a no_proxy 
variable indicating the local domain and covering port 8080, e.g.
	setenv no_proxy "brunel.ac.uk,brunel.ac.uk:8080"


Need OpenSSL, including devel -
	openssl-0.9.5a-29
	openssl-devel-0.9.5a-29
	openssl-perl-0.9.5a-29
	openssl-python-0.9.5a-29

Need wget -
	wget-1.5.3-6

RH7.2: need lesstif-0.92.32-6.i386.rpm for libXm.so.2 for prove?


From the WP6 EDG Packages repository on http://marianne.in2p3.fr/

Python (in the UI external collection):
	python2-2.1.3-1.i386.rpm
	python2-tkinter-2.1.3-1.i386.rpm
	python2-devel-2.1.3-1.i386.rpm
	python2-tools-2.1.3-1.i386.rpm
	expat-1.95.1-1
	expat-devel-1.95.1-1
The PYTHONPATH variable is set up in the edg_user_env script, so
no need to do anything permanent now - but may be good idea to set it 
in shell used for install process.
[ setenv PYTHONPATH "/opt/edg/lib" or whatever ]

[If upgradingfrom 1.1.4, 
	rpm -ev python-2.1.1-3 python-devel-2.1.1-3 python-tkinter-2.1.1-3 
		python-tools-2.1.1-3 --nodeps
first, then install. This will leave /usr/bin without a "python" 
executable, so symlink to "python2" (or re-install 1.5.2?)]


Globus: all rpms in UI globus collection -
	globus_common-gcc32dbgpthr_rtl-2.0-21
	globus_common-gcc32dbg_rtl-2.0-21
	globus_core-edgconfig-0.17-1
	globus_core-gcc32dbg_pgm-2.1-21
	globus_cyrus_sasl-gcc32dbgpthr_rtl-1.5.27-21
	globus_cyrus_sasl-gcc32dbg_rtl-1.5.27-21
	globus_data_conversion-gcc32dbg_rtl-2.0-21
	globus_duct_common-gcc32dbg_rtl-2.0-21
	globus_duct_control-gcc32dbg_rtl-2.0-21
	globus_duroc_common-gcc32dbg_rtl-2.0-21
	globus_duroc_control-gcc32dbg_rtl-2.0-21
	globus_ftp_client-gcc32dbg_rtl-1.2-21
	globus_ftp_client-gcc32dbgpthr_rtl-1.2-21
	globus_ftp_control-gcc32dbg_rtl-1.0-21
	globus_ftp_control-gcc32dbgpthr_rtl-1.0-21
	globus_gass_copy-gcc32dbg_pgm-2.0-21
	globus_gass_copy-gcc32dbg_rtl-2.0-21
	globus_gass_copy-gcc32dbgpthr_rtl-2.0-21
	globus_gass_server_ez-gcc32dbg_rtl-2.0-21
	globus_gass_transfer-gcc32dbg_rtl-2.0-21
	globus_gass_transfer-gcc32dbgpthr_rtl-2.0-21
	globus_gram_client-gcc32dbg_rtl-2.0-21
	globus_gram_client_tools-gcc32dbg_pgm-2.1-21
	globus_gram_protocol-gcc32dbg_rtl-2.0-21
	globus_gssapi_gsi-gcc32dbgpthr_rtl-2.0-21
	globus_gssapi_gsi-gcc32dbg_rtl-2.0-21
	globus_gss_assist-gcc32dbgpthr_rtl-2.0-21d
	globus_gss_assist-gcc32dbg_rtl-2.0-21d
	globus_io-gcc32dbg_rtl-2.0-21
	globus_io-gcc32dbgpthr_rtl-2.0-21
	globus_libtool-gcc32dbgpthr_rtl-1.4-21
	globus_mds_common-gcc32dbgpthr_pgm-2.2-21
	globus_mp-gcc32dbg_rtl-2.0-21
	globus_nexus-gcc32dbg_rtl-6.0-21
	globus_openldap-gcc32dbgpthr_pgm-2.0.14-21
	globus_openldap-gcc32dbgpthr_rtl-2.0.14-21
	globus_openldap-gcc32dbg_rtl-2.0.14-21
	globus_openssl-gcc32dbgpthr_pgm-0.9.6b-21
	globus_openssl-gcc32dbgpthr_rtl-0.9.6b-21
	globus_openssl-gcc32dbg_rtl-0.9.6b-21
	globus_profile-edgconfig-0.17-1
	globus_replica_catalog-gcc32dbg_dev-2.1-21c
	globus_replica_catalog-gcc32dbg_pgm-2.1-21c
	globus_replica_catalog-gcc32dbgpthr_dev-2.1-21c
	globus_replica_catalog-gcc32dbgpthr_rtl-2.1-21c
	globus_replica_catalog-gcc32dbg_rtl-2.1-21c
	globus_replica_catalog-noflavor_data-2.1-21c
	globus_replica_management-gcc32dbg_dev-2.1-21
	globus_replica_management-gcc32dbg_pgm-2.1-21
	globus_replica_management-gcc32dbgpthr_dev-2.1-21
	globus_replica_management-gcc32dbgpthr_rtl-2.1-21
	globus_replica_management-gcc32dbg_rtl-2.1-21
	globus_rsl_assist-gcc32dbg_rtl-2.0-21
	globus_rsl-gcc32dbg_rtl-2.0-21
	globus_ssl_utils-gcc32dbg_pgm-2.1-21e
	globus_ssl_utils-gcc32dbgpthr_rtl-2.1-21e
	globus_ssl_utils-gcc32dbg_rtl-2.1-21e
	globus_user_env-noflavor_data-2.1-21b

[If upgradingfrom 1.1.4, 
	rpm -Uvh globus_core-edgconfig-0.17-1.noarch.rpm 
		globus_gss_assist* globus_profile-edgconfig-0.17-1.noarch.rpm 
		globus_replica* globus_ssl_utils* 
		globus_openldap-gcc32dbg_rtl-2.0.14-21.i386.rpm 
		globus_common-gcc32dbgpthr_rtl-2.0-21.i386.rpm
		globus_cyrus_sasl-gcc32dbg_rtl-1.5.27-21.i386.rpm
		globus_ftp_client-gcc32dbgpthr_rtl-1.2-21.i386.rpm 
		globus_ftp_control-gcc32dbgpthr_rtl-1.0-21.i386.rpm
		globus_gass_copy-gcc32dbgpthr_rtl-2.0-21.i386.rpm
		globus_gass_transfer-gcc32dbgpthr_rtl-2.0-21.i386.rpm
		globus_io-gcc32dbgpthr_rtl-2.0-21.i386.rpm
]


From UI external collection -
	classads-0.0-edg2
	openmotif-2.1.30-8 
	myproxy-client-0.4.4-edg6
[If upgrading from 1.1.4, must add classads and myproxy]


EDG:
From UI EDG collection (all except edg-rgma*, grm, prove and spitfire) -
	userinterface-1.2.7-1
	userinterface-profile-1.2.7-1
	workload-profile-1.2.7-1
	edg-compiler-1.0-1
	edg-profile-0.3-1
	edg-profile-apps-1.2.1-1
	edg-user-env-0.3-1
	edg-utils-system-1.2.2-1
	edg-utils-user-1.2.2-1
	edg-se-libstringextra-1.0.2-1
	edg_se_query-1.0.5-1
	BrokerInfo-gcc32dbg-3.0-2
	edg-replica-manager-gcc32dbg-1.0-2
	gdmp-client-3.0-9
	userguide-1.2.7-1

[If upgradingfrom 1.1.4, remove edg-utils-1.0.14-1 first and back up 
config file for reference, then
	rpm -Uvh userinterface-1.2.7-1.i386.rpm 
		userinterface-profile-1.2.7-1.i386.rpm 
		workload-profile-1.2.7-1.i386.rpm 
		BrokerInfo-gcc32dbg-3.0-2.i386.rpm 
		edg-compiler-1.0-1.i386.rpm 
		edg-profile-apps-1.2.1-1.noarch.rpm 
		edg-replica-manager-gcc32dbg-1.0-2.i386.rpm 
		edg-se-libstringextra-1.0.2-1.i386.rpm 
		edg-utils-system-1.2.2-1.noarch.rpm 
		edg-utils-user-1.2.2-1.noarch.rpm 
		edg_se_query-1.0.5-1.i386.rpm 
		gdmp-client-3.0-9.i386.rpm 
		userguide-1.2.7-1.i386.rpm
]


From UI appcommon collection -
	GNU.LANG_gcc_shr-2.95.2-0_asis_1
	GNU.LANG_gcc_sys-2.95.2-0_asis_1


Set env variables for EDG:

For c-shell users, source in user .cshrc -
	if ( -x /opt/edg ) then
		source /opt/edg/etc/edg-user-env.csh
	endif

Edit /opt/edg/etc/edg-user-env.csh replacing 'return 1' at line 7 with 
'goto end' and adding 'end:' as a final line. [bug in script]

[ 
In /etc/sysconfig/edg_workload.csh the last line is

setenv EDG_WL_LIBRARY_PATH ${GLOBUS_LOCATION}"/lib:"${EDG_WL_LOCATION}"/lib:"/usr/local/lib"

where as it should be 

setenv EDG_WL_LIBRARY_PATH ${GLOBUS_LOCATION}"/lib:"${EDG_WL_LOCATION}"/lib:/usr/local/lib"

[traylens@gppui04 profile.d]$ source wl-ui-env.csh
Unmatched ".
]

The following should be set for each user

setenv RC_CONFIG_FILE /opt/edg/etc/atlas/rc.conf
setenv GDMP_CONFIG_FILE /opt/edg/etc/atlas/gdmp.conf

translated for your shell and VO. 


C-shell users should note that the unique jobids contain a '?'
which you must escape from the csh:

	$ dg-job-status 'JOBId'


Certificates and CRL updates: 

You need which ever CAs you trust from UI ca collection - e.g.
ca_CERN-0.8-1
ca_GridPP-0.8-1
ca_INFN-0.8-1

and also something to update them at intervals - you should run

$ /sbin/chkconfig edg-crl-upgraded on
$ /sbin/service edg-crl-upgraded start
$ /sbin/chkconfig edg-gridmapfile-upgraded off


GDMP:

The client for GDMP is configured with a script that is provided. For each 
Virtual Organisation that your most local storage element supports issue

$ /opt/edg/sbin/configure_gdmp_client gppse06.gridpp.rl.ac.uk /opt/edg gridpp 

where the three arguments are the 'local' storage element, the EDG top 
level directory and a virtual organisation. 


Replica Catalogue:

The replica catalogue client tools require some configuration files, one 
per VO. Ask Steve Traylen or tb-support to send you the configuration 
files as they contain slightly secret passwords.  


You should now have a working UI for job submission, but no RGMA for 
application monitoring ... yet.



R-GMA:

For R-GMA, a UI only needs the API to be able to talk to an R-GMA 
"server", but if there is no suitable server available at your site then 
you can install one on your UI; need MySQL, Java and Tomcat:

MySQL (in the UI external collection, recent ones give trouble on RH 6.2):
	MySQL-3.23.42
	MySQL-client-3.23.42-1
	MySQL-devel-3.23.42-1
	MySQL-shared-3.23.42-1

mm.MySQL (JDBC driver for MySQL, available from WP6 after much hunting):
	mm.mysql-2.0.6-2

Tomcat (in the UI external collection):
	tomcat-4.0.0-edg2

Java (available in the UI external collection):
	j2sdk-1.4.0-fcs
	j2sdk_profile-1.4.0-1
(You can get away with only the run-time env. jre if you will always use 
non-Java APIs to R-GMA. Remember to remove kaffe first if it is already 
installed...)

[ I've also got Apache:	
	apache-1.3.22-5.6
	apache-devel-1.3.22-5.6 ]

You will need to install and configure Apache and MySQL. Tomcat only needs 
install (rpm -ivh ...) - it is configured and started up by R-GMA's setup 
script.

Get latest R-GMA from 
	http://hepwww.rl.ac.uk/DataGridMonitoring/rpms/rpms/index.html

server+Java API:
ant-1.4-2
junit-3.7-edg1
log4j-1.1.3-edg1
Xerces-J-1.4.3-edg1

edg-rgma-api-java-2.2.4-3 
edg-rgma-common-2.2.4-3 
edg-rgma-demo-2.2.4-3
edg-rgma-servlets-2.2.4-3 
edg-rgma-tools-2.2.4-3

C++ API:
cppunit-1.6.2-1
log4cpp-0.2.7-3 (available from WP6 after poking round)
log4cpp-devel-0.2.7-3 (available from WP6 after poking round)
xerces-c-1.7.0-1 (available from WP6 after poking round)
xerces-c-devel-1.7.0-1 (available from WP6 after poking round)

edg-rgma-api-cpp-2.2.4-4

Other APIs:
edg-rgma-api-c-2.2.4-3

SWIG-1.3.11-edg1
edg-rgma-api-perl-2.2.4-3
edg-rgma-api-python-2.2.4-3

As root:
Edit and insert Schema server to be used in
	/opt/edg/etc/info/rgma-schemaBrowser.xml 
this is young.brunel.ac.uk for CMS/BOSS test
[poss. spare: gw33.hep.ph.ic.ac.uk:8080].

Run /opt/edg/bin/rgma-config and give requested info - e.g. 
Registry to be used young.brunel.ac.uk:8080 for CMS/BOSS test.

Add /opt/edg/etc/info/rgma-setup.sh
to .bashrc

* in /opt/edg/share/info/webapps, edit ArchiverServlet/WEB-INF/web.xml
to fully-qualified domain name for registry. repeat for other servlets

* in /opt/edg/etc/info edit Archiver.props to include fully qualified 
domain name for user servelt host. repeat for CircularBufferProducer.props 
Consumer.props and DataBaseProducer.props .

In /opt/edg/bin/pulse.sh, check that jar files are correct; I had to 
change to 
/usr/share/ant/lib/crimson.jar
/usr/share/ant/lib/jaxp.jar

In current RPMs /opt/edg/jas.jar and /opt/edg/jxUtil.jar are missing a 
share/info in the path. 
[i.e. should be /opt/edg/share/info/jxUtil.jar - bug now fixed for future 
releases ]


As user:
run /opt/edg/bin/rgma-config
chmod 755 ~/rgma-setup.sh and put in .cshrc.


young: ~> /opt/edg/sbin/check-rgma-config client
*  Warning  *  OS := Linux 2.2.19-6.2.16 and should be one of ['^Linux 2.4.9', '^Linux 2.4.18-3']
*  Warning  *  gcc version := package gcc is not installed and should be one of ['gcc-2.96-98', 'gcc-2.96-110']
*  Warning  *  JAVACC_HOME is defined := 0 and should be 1
*** Error ***  connect to http://young:8080/ := 0 and should be 1
*** Error ***  connect to http://young:8080/R-GMA/ArchiverServlet/getStatus := 0 and should be 1
*** Error ***  connect to http://young:8080/ := 0 and should be 1
*** Error ***  connect to http://young:8080/R-GMA/ProducerServlet/getStatus := 0 and should be 1
*** Error ***  connect to http://young:8080/ := 0 and should be 1
*** Error ***  connect to http://young:8080/R-GMA/ConsumerServlet/getStatus := 0 and should be 1
*** Error ***  connect to http://young:8080/ := 0 and should be 1
*** Error ***  connect to http://young:8080/R-GMA/DBProducerServlet/getStatus := 0 and should be 1

but the servlets are running:
young: ~> /opt/edg/sbin/check-rgma-config user-servlets
*  Warning  *  OS := Linux 2.2.19-6.2.16 and should be one of ['^Linux 2.4.9', '^Linux 2.4.18-3']

Try http://young.brunel.ac.uk:8080/R-GMA/ProducerServlet/getStatus
and get CircularBufferProducerServlet OK

pulse.sh /opt/edg/etc/info/rgma-schemaBrowser.xml
should connect to Schema server and show it OK.

(I've tried installing JavaCC-2.1-edg1 and seting the env. var, this fixes 
warning but not other errors. Not needed unless developing R-GMA.)
# obj-rgma* for LCFG use - ignore.

BOSS:
Get BOSS v3_3pre4 and unpack. Instructions in 00README
MySQL should already be installed & running.
http://www.bo.infn.it/cms/computing/BOSS/boss-v3_3_pre4.tar.gz

     As BOSS administrator:
       1. make config
       2. check in BOSSDBConfig.sh that the variables are fine for you
          (default will work if you installed the mysql server as in the
          previous step).

Will need to shorten values of BOSS_db_name, BOSS_db_guest and 
BOSS_db_user (guest and user to be 16 chars) to e.g. boss_v3_3_young, 
BOSSv3_3_mgr, BOSSv3_3_mon.   


         Please note that starting with version 3.0 there is a variable
          $BOSS_TMP_DIR that defines the directory where the temporary BOSS
          files are created. This directory must be present on any host  
          where the jobs may happen to run and on any host where BOSS
          commands are executed. By default BOSS_TMP_DIR=/tmp.
          BOSS_TMP_DIR=. is a valid value and gives the same behavour of
          previous versions of BOSS. Since AFS doesn't support FIFO's,
          BOSS_TMP_DIR cannot be on AFS.
          If your MySQL server supports InnoDB tables it is possible to
          specify InnoDB as default table type (BOSS_TABLE_TYPE).

source bossenv.sh

       3. make
       4. Please note: root access to MySQL server during "make":
          When "make" is executed the BOSS libraries and executables are
          created and the database is configured. Database configuration
          needs root access to MySQL server. The installation scripts try
          first without password. If this works the installation finishes.
          If root access is protected by password the installation script
          prompts for the password. If you don't have the root password you
          need to interrupt the installation and ask your MySQL  
          administrator to execute the commands for you. The commands may be
          found in the file MySQLconfig.sql

       5. If BOSS will be used with a grid scheduler, access to the MySQL
          server must be granted to the BOSS MySQL users from any host where
          the jobs may happen to run.
          You can grant access to the MySQL server from any host using the
          file ${BOSSDIR}/MySQLGridConfig.sql:
          mysql -u root -h MySQL host -s -f [-p] < MySQLGridConfig.sql

mysql -u root -s -f [-p] < MySQLGridConfig.sql
as on same box

       6. Before using BOSS in any session you need to set the environment 
          by sourcing $BOSSDIR/bossenv.csh (or $BOSSDIR/bossenv.sh)

In $BOSSDIR/sched_examples, ./registerEDGScheduler to register grid 
scheduler, and in $BOSSDIR/jobtest do ./registerTestJob to register the 
TestJob type.

In $BOSSDIR/jobtest (as user with write perms)
boss submit -scheduler fork -classad test.clad
to submit testjob locally, and 
boss query -all
to see results. Increase the count parameter to 400 or more, and it should 
be possible to watch the counter updating using either boss query or from 
within MySQL directly.

After all this, ~> mysqlshow
+-----------------+
|    Databases    |
+-----------------+
| arch0           |
| arch1           |
| arch2           |
| archiverTestDB0 |
| boss_v3_3_young |
| mysql           |
| test            |
+-----------------+