(2007-08-03 21:59:37) 整个安装过程比较烦琐,出现了不少错误,而且globus的安装手册也有很多问题。很多错误是由于用户对文件的权限引起的,碰到no such file or directory错误时,一般以root用户执行:chown globus:globus 文件目录,chown –R globus 文件目录(其中globus是用户名),通常都能解决问题。参考资料:http://www./toolkit/docs/4.0/admin/docbook/index.html Chapter 1. 4.0.x quickstart.doc 第一台机器的安装(机器名称:sonky;IP:10.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./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./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@u [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 u 注:u为主机名 下面需要用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-u/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.0:2811 0.0.0.0:* LISTEN 现在gridftp服务器已经在等待请求了,于是我们启动一个客户端并且发送一个文件: [stugrid@sonky]$ grid-proxy-init -verify –debug [stugrid@sonky]$ globus-url-copy gsiftp://u/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,添加一行<parameter name="logicalHost" value="10.10.22.19" /> 到<globalConfiguration>部分。 下面可以通过一个简单的clients/services来与容器进行交互操作 [stugrid@sonky]$ counter-client –s https://u: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 将</parameter>中的<value>*改为数据库用户globus的密码 <parameter> <name> password </name> <value> ***** </value> [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 u -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 |
|