如果新娘不是我的说说:Globus安装手册(1)

来源:百度文库 编辑:中财网 时间:2024/04/29 00:09:34

Globus安装手册(1)

(2007-08-03 21:59:37) 整个安装过程比较烦琐,出现了不少错误,而且globus的安装手册也有很多问题。很多错误是由于用户对文件的权限引起的,碰到no such file or directory错误时,一般以root用户执行:chown globus:globus 文件目录,chown –R globus 文件目录(其中globus是用户名),通常都能解决问题。

参考资料:http://www.globus.org/toolkit/docs/4.0/admin/docbook/index.html

                  Chapter 1. 4.0.x quickstart.doc

 

 

第一台机器的安装(机器名称:sonkyIP10.10.33.19

一、  安装操作系统

Globus支持redhat enterprise 3&4,fedora 3&4,suse,debian,MACOS,windows等。为方便与cluster连接,选择redhat enterprise linux AS4。安装系统的时候需要选择安装postgresql(也可以以后手工安装,不过让系统自己安装省点事)。

 

二、  准备工作

1.          设置用户

安装Globus需要设置几个用户:root, globus, stugrid

其中,globus作为globus的安装用户;stugrid作为container的用户和测试用户

2.          Globus Toolkit 4.0.5:http://www.globus.org/toolkit/downloads/4.0.5/,下载gt4.0.5-all-sourcer-installer.tar.gz(建议下载x86 RHAS4 Binary Installer,编译会比较简单)

3.          J2SE SDK 1.6:http://java.sun..com ,下载jdk-6u2-linux-i586-rpm.bin

4.          Apache Ant 1.7:http://www.apache.org/dist/ant/binaries/ ,下载apache-ant-1.7.0-bin.tar.gz

 

三、  安装

1.          安装JDK

首先修改文件的属性

[root@sonky]# chmod +x jdk-6u2-linux-i586-rpm.bin

[root@sonky]# cp jdk-6u2-linux-i586-rpm.bin  /usr/local

[root@sonky]# cd /usr/local

[root@sonky]# ./jdk-6u2-linux-i586-rpm.bin

会出现协议书类的一直回车直到显示

Do you agree to the above license terms? [yes or no]

输入y,会自动安装在/usr/java/jdk1.6.0_02目录下

2.          安装ant

[root@sonky]# cp apache-ant-1.7.0-bin.tar.gz  /usr/local

[root@sonky]# cd /usr/local

[root@sonky]# tar zxpvf apache-ant-1.7.0-bin.tar.gz

[root@sonky]# ln -s apache-ant-1.7.0 ant

3.          统一设置环境变量

[root@sonky]# vi /etc/profile

在最后添加下面的内容:

export ANT_HOME=/usr/local/apache-ant-1.7.0

export JAVA_HOME=/usr/java/jdk.1.6.0_02

export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH

输入:wq保存退出

4.          安装globus-4.0.5

[root@sonky]# mkdir /usr/local/globus-4.0.5

更改改目录主属性

[root@sonky]# chown globus:globus usr/local/globus-4.0.5

拷贝gt4.0.5-all-source-installer.tar.gz到globus-4.0.5目录中

[root@sonky]# tar xzvf gt4.0.5-all-source-installer.tar.gz

切换到globus用户

[root@sonky]# su – globus

设置环境变量

[globus@sonky]$ export GLOBUS_LOCATION=/usr/local/globus-4.0.5

[globus@sonky]$ cd gt4.0.5-all-source-installer

编译预设值,将globus安装到/usr/local/globus-4.0.5中

[globus@sonky]$ ./configure --prefix=$GLOBUS_LOCATION

注:configure 过程中出过些问题

./configure: conf2139.file: No such file or directory

看了一下configure,应该是生成文件出错,由于过程中,解压的文件,cp的文件,安装的文件的权限都有些不同,为了省事,干脆将所用目录下的文件都赋予文件主权限

chown -R globus 文件目录,这样之后,好多因为权限出现的问题基本不见了

执行编译命令

[globus@sonky]$ make

注:如果这一步出现问题,注意看一下是否是相关文件的权限问题,可以考虑 chmod u+x操作,make出问题后,如果再次执行时出现

  /usr/local/globus-4.0.0/sbin/gpt-build   -srcdir=source-trees-thr/core/source       gcc32dbgpthr

  make: /usr/local/globus-4.0.0/sbin/gpt-build: Command not found

  make: *** [globus_core-thr] Error 127

那么make clean 一下,再执行make

进行安装

[globus@sonky]$ make install

5.          安装simpleCa

[globus@sonky]$ source $GLOBUS_LOCATION/etc/globus-user-env.sh

[globus@sonky]$ $GLOBUS_LOCATION/setup/globus/setup-simple-ca

安装过程会出现:

         Do you want to keep this as the CA subject (y/n) [y]:输入y

         Enter the email of the CA (this is the email where certificate requests will be sent to be signed by the CA): sonky@sonky.stu

         [default: 5 years (1825 days)]:回车

         Enter PEM pass phrase:输入想设定的密码

Verifying - Enter PEM pass phrase: 再次输入想设定的密码

 

系统已经在 .globus 目录保存了已经创建好的simpleCA。现在我需要让我的机器对新的CA进去确认操作。以下操作将以root用户身份进行

[root@sonky]# export GLOBUS_LOCATION=/usr/local/globus-4.0.5

[root@sonky]# $GLOBUS_LOCATION/setup/globus_simple_ca_91177e045_setup/setup-gsi –default

生成的文件都是Globus Toolkit建立simpleCA信任的配置文件。

 

现在我们已经创建一个CA并完成了认证,我们下面将获得到这台机器的hostcert:

[root@sonky]# source $GLOBUS_LOCATION/etc/globus-user-env.sh

[root@sonky]# grid-cert-request -host sonky.stu

注:sonky.stu为主机名

 

下面需要用globus用户自己的simpleCA来进行签证:

[globus@sonky]$ grid-ca-sign  -in  /etc/grid-security/hostcert_request.pem  -out  hostsigned.pem

复制这个认证过的证书hostsigned.pem到/etc目录下:

[root@sonky]# cp hostsigned.pem /etc/grid-security/hostcert.pem

hostcert和hostkey为root用户所有,它们将被GridFTP服务器使用。因为Web服务容器(webservices container)被非root用户运行,所以我们需要一个为globus用户拥有的证书。即需要一个root用户拥有的host certificate/key和一个globus用户拥有的host certificate/key。以上可以通过简单的文件拷贝实现以上需求:

[root@sonky grid-security]# cp hostcert.pem containercert.pem

[root@sonky grid-security]# cp hostkey.pem containerkey.pem

[root@sonky grid-security]# chown globus:globus container*.pem

查看一下结果:

[root@sonky grid-security]# ls -l *.pem

-rw-r--r--  1 globus globus 2647 Aug  8 11:02 containercert.pem

-r--------  1 globus globus  887 Aug  8 11:03 containerkey.pem

-rw-r--r--  1 root   root   2647 Aug  8 11:01 hostcert.pem

-rw-r--r--  1 root   root   1369 Aug  8 10:53 hostcert_request.pem

-r--------  1 root   root    887 Aug  8 10:53 hostkey.pem

 

 

接着为stugrid用户创建usercert:

[stugrid@sonky]$ export GLOBUS_LOCATION=/usr/local/globus-4.0.5

[stugrid@sonky]$ source $GLOBUS_LOCATION/etc/globus-user-env.sh

[stugrid@sonky]$ grid-cert-request

 

现在需要向globus用户提出证书请求,以求能够被认证,然后将认证过的证书发送给stugrid(本机只要拷贝操作)

[globus@sonky]$ grid-ca-sign -in /home/stugrid/.globus/usercert_request.pem –out signed.pem

[root@sonky]# chown stugrid:stugrid signed.pem

[stugrid@sonky]$ cp signed.pem /home/stugrid/.globus/usercert.pem

[stugrid@sonky]$ ls -l ~/.globus/

-rw-r--r--  1 stugrid stugrid 2656 Aug  8 11:20 usercert.pem

-rw-r--r--  1 stugrid stugrid 1380 Aug  7 17:22 usercert_request.pem

-rw-------  1 stugrid stugrid  963 Aug  7 17:22 userkey.pem

 

最后再以root用户创建一个grid-mapfile,方便以后授权服务:

[root@sonky]#  vim /etc/grid-security/grid-mapfile

内容为:

"/O=Grid/OU=GlobusTest/OU=simpleCA-sonky.stu/OU=stu/CN=stugrid"stugrid

6.          搭建GridFTP

创建文件

[root@sonky]# vim /etc/xinetd.d/gridftp

内容为:

service gsiftp

{

instances               = 100

socket_type             = stream

wait                    = no

user                    = root

env                     += GLOBUS_LOCATION=/usr/local/globus-4.0.5

env                     += LD_LIBRARY_PATH=/usr/local/globus-4.0.5/lib 

server                  = /usr/local/globus-4.0.5/sbin/globus-gridftp-server

server_args             = -i

log_on_success          += DURATION

nice                    = 10

disable                 = no

}

 

修改文件:

[root@sonky]# vim /etc/services

vboxd           20012/udp

binkp           24554/tcp                       # binkp fidonet protocol

asp             27374/tcp                       # Address Search Protocol

asp             27374/udp

dircproxy       57000/tcp                       # Detachable IRC Proxy

tfido           60177/tcp                       # fidonet EMSI over telnet

fido            60179/tcp                       # fidonet EMSI over TCP

# Local services

gsiftp          2811/tcp

 

[root@sonky]# /etc/init.d/xinetd reload

[root@sonky]# netstat -an | grep 2811

tcp            0 0.0.0.0:2811            0.0.0.0:*               LISTEN

 

现在gridftp服务器已经在等待请求了,于是我们启动一个客户端并且发送一个文件:

[stugrid@sonky]$ grid-proxy-init -verify –debug

[stugrid@sonky]$ globus-url-copy gsiftp://sonky.stu/etc/group file:///tmp/stugrid.test.copy

[stugrid@sonky]$ diff /tmp/jeffery.test.copy /etc/group

如果没有内容表示传输正确

7.          启动Webservices Container

建立container启动文件,方便以后调试操作

[globus@sonky]$ vim $GLOBUS_LOCATION/start-stop

内容:

#! /bin/sh

set -e

export GLOBUS_LOCATION=/usr/local/globus-4.0.5

export JAVA_HOME=/usr/java/jdk1.6.0_02/

export ANT_HOME=/usr/local/apache-ant-1.7.0

export GLOBUS_OPTIONS="-Xms256M -Xmx512M"

 

. $GLOBUS_LOCATION/etc/globus-user-env.sh

 

cd $GLOBUS_LOCATION

case "$1" in

    start)

        $GLOBUS_LOCATION/sbin/globus-start-container-detached -p 8443

        ;;

    stop)

        $GLOBUS_LOCATION/sbin/globus-stop-container-detached

        ;;

    *)

        echo "Usage: globus {start|stop}" >&2

        exit 1

       ;;

esac

exit 0

 

[globus@sonky]$ chmod +x $GLOBUS_LOCATION/start-stop

 

现在以root用户创建一个/etc/init.d脚本去调用globus用户的start-stop脚本:

[root@sonky]# vim /etc/init.d/globus-4.0.5

内容:

#! /bin/sh -e

 

case "$1" in

  start)

    su - globus /usr/local/globus-4.0.5/start-stop start

    ;;

  stop)

    su - globus /usr/local/globus-4.0.5/start-stop stop

    ;;

  restart)

    $0 stop

    sleep 1

    $0 start

    ;;

  *)

    printf "Usage: $0 {start|stop|restart}\n" >&2

    exit 1

    ;;

esac

exit 0

[root@sonky]# chmod +x /etc/init.d/globus-4.0.5

[root@sonky]# /etc/init.d/globus-4.0.5 start

 

注:如果提示有ip错误,编辑$GLOBUS_LOCATION/etc/globus_wsrf_core/server-config.wsdd和client-server-config.wsdd,添加一行部分。

 

下面可以通过一个简单的clients/services来与容器进行交互操作

[stugrid@sonky]$ counter-client –s https://sonky.stu:8443/wsrf/services/CounterService

Got notification with value: 3

Counter has value: 3

Got notification with value: 13

表示与容器通讯成功

 

8.          配置RFT

修改postgresql的设置,使它可以接受tcp/ip连接。(忽略globus原手册上的操作,上面的操作有错误)

[root@sonky]# vim /etc/init.d/postgresql

将第181行的

$SU -l postgres -c "$PGENGINE/postmaster -p ${PGPORT} -D '${PGDATA}' ${PGOPTS} &" >> $PGLOG 2>&1

改为:

$SU -l postgres -c "$PGENGINE/postmaster -i -p ${PGPORT} -D '${PGDATA}' ${PGOPTS} &" >> $PGLOG 2>&1

 

[root@sonky]# vim /var/lib/pgsql/data/postgresql.conf

删除第30行“#tcpip_socket = true”中的#

 

[root@sonky]# vim /var/lib/pgsql/data/pg_hba.conf

在最后加上:

host rftDatabase "globus"  "10.10.33.19" 255.255.255.255 md5

 

[root@sonky]# /etc/init.d/postgresql restart

 

[root@sonky]# su postgres -c "createuser -P globus"

 

[globus@sonky]$ createdb rftDatabase

[globus@sonky]$ psql -d rftDatabase -f $GLOBUS_LOCATION/share/globus_wsrf_rft/rft_schema.sql

 

[globus@sonky]$ vim $GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml

将中的*改为数据库用户globus的密码

            

              

               password

              

              

                *****

               

                  

                   [root@sonky]# /etc/init.d/globus-4.0.5 restart

                  

测试RFT是否正常工作:

[stugrid@sonky]$ cp /usr/local/globus-4.0.5/share/globus_wsrf_rft_test/transfer.xfr /tmp/rft.xfr

[stugrid@sonky]$ rft -h sonky.stu -f /tmp/rft.xfr

如果最后出现“All Transfers are completed”表示传输成功,否则需要检查错误。在这个过程可能会出现连接不上容器的问题,可能需要重新设置pg_hba.conf,或者根据出错信息查看前面的步骤是否正确。

 

9.          GRAM

首先修改/etc/bin/sudo

[root@sonky]# visudo

在最后加上:

globus ALL=(stugrid) NOPASSWD: /usr/local/globus-4.0.5/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/local/globus-4.0.5/libexec/globus-job-manager-script.pl *

globus ALL=(stugrid) NOPASSWD: /usr/local/globus-4.0.5/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/local/globus-4.0.5/libexec/globus-gram-local-proxy-tool *

 

提交一个任务,测试GRAM

[stugrid@sonky]$ globusrun-ws -submit -c /bin/true

 

可能出错:

[stugrid@sonky globus-4.0.5]$ globusrun-ws -submit -c /bin/true

Submitting job...Done.

Job ID: uuid:3c0e1126-456f-11dc-ac80-00123f672ef7

Termination time: 08/09/2007 05:21 GMT

Current job state: Failed

Destroying job...Done.

globusrun-ws: Job failed: Error code: 201

Script stderr:

Sorry, /usr/bin/sudo must be setuid root.

解决方法:更改sudo的属性,[root@sonky]# chmod 4111 /usr/bin/sudo