Jeffery Lee (http://jeffery.lee.googlepages.com/ )
School
of
Computer
Science & Engineering
Southeast
University
Ver. 0.1
本文主要参考实验室李超师兄总结的《gt 3.2.1 的安装编程以及实验总结》一文,订正修改而成,主要为了避免安装时走弯路,由于Globus Tookit(以下简称GT3.2)安装过程中问题多多,所以本文不是“silver bullet”,希望大家充分利用www.globus.org上提供的信息,到问题了,先找原因,再试图自己解决,这是学习之道,与大家共勉。
本文详细的总结了GT 3.2.1 的版本的安装和编程。文章的顺序是:GT3.2的安装、GT3.2的编程框架以及类库之间的关系、GT3.2的简单编程和高级编程。
Ø 系统的约定:系统环境RedHat 9.0(kernel 2.4.20 )。host(主机)名为jeffery.seu.edu.cn, IP地址为10.3.5.38
GT3.2的安装路径为/home/globus/gt3.2,GT3.2的所有安装源文件放在/home/globus/share, shell是bash shell。
Ø 帐号的分配:创建三个用户: globus,client,root。globus用户用于安装GT3.2、安装CA(签证授权服务器)。client用户属于使用GT3.2的普通用户。root用户相对于client用户来说是GT3.2服务器(也同样要向CA申请签证)。
Ø 安装的软件配置:
1. gt 3.2.1 -all-source-installer.tar.gz,gt3.2的源文件。下载http://www-unix.globus.org/toolkit/download.html
2. jdk 1.4.2_04 ,gt3.2的源文件是java代码。下载http://java.sun.com/download.html
3. apache-ant- 1.6.2 -bin.tar.gz,gt3.2的安装和编程的配置都有ant来完成。下载http://jakarta.apache.org/ant
4. junit 3.8.1 ,gt3.2的java源代码的测试。下载http://www.junit.org
5. 编译gt3.2的源代码的c编译器为gcc3.2,YACC和其他的解压缩工具tar,gzip在RedHat 9.0中都已经默认安装了,如果没有安装,请安装。
软件的安装大致流程如下:
安装jdk->安装ant->安装junit->设置环境变量/etc/profile->安装gt3.2->安装mmjsf->安装gsi->建立服务器的认证->建立客户机的认证。
安装细节如下:
1) 安装jdk: 如果是bin包可以自动安装,若为rpm包则运行下面命令(root权限),默认路径为/usr/local/j2sdk 1.4.1
[root@share] rpm –ivh j2sdk-1_4_2_04-fcs-linux-i586.rpm
关于JDK版本,建议选择1.4,Sun公司主页上现在能下载到的也只有 1.4.2 。JDK5.0时间原因我没有来的及测试。
2) 安装 Apache ant:apache ant包可以为apache-ant- 1.6.2 也可以是apache-ant-1.6.1beta,默认路径为/usr/local/apache-ant-1.6.2
[root@share] tar -xvzf /home/globus/share/apache-ant- 1.6.2 -bin.tar.gz
3) 安装junit:因为是JUnit 3.8.1 .zip包,只需要解压到/usr/local/JUnit3.8.1就可以了,注意要把/usr/local/JUnit3.8.1/junit.jar拷贝到/usr/local/apache-ant-1.6.2/lib目录下,因为ant要用到junit进行测试。
[root@share] cp /usr/local/JUnit 3.8.1 /junit.jar /usr/local/apache-ant-1.6.2/lib
4) 设置环境变量:以root权限设置
[root@share] vi /etc/profile
加入一下内容:
JAVA_HOME=/usr/java/j2sdk 1.4.2_04
ANT_HOME=/usr/local/apache-ant- 1.6.2
GLOBUS_LOCATION=/home/globus/gt3.2
GPT_LOCATION=/home/globus/gt3.2
PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH:$GLOBUS_LOCATION/bin
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$ANT_HOME/lib/ant.jar:$ANT_HOME/lib/junit.jar:$ANT_HOME/lib/*.jar
export JAVA_HOME
export ANT_HOME
export GLOBUS_LOCATION
export GPT_LOCATION
export CLASSPATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
注意:这些设置都是全局的环境变量设置,JAVA_HOME, ANT_HOME是java和ant的安装路径,GLOBUS_LOCATION是gt3.2的安装路径,GPT_LOCATION是GPT(globus package toolkt)安装是需要的路径,不然在安装gt3.2的过程中会出现gpt安装失败,另外必须设置CLASSPATH,不然在gt3.2编译时会找不到库文件。
5) 安装GT3.2:
以globus用户登陆,注意权限设置,安装文件要求都为globus。
[root@share] su globus
[globus@share]
把gt 3.2.1 -all-source-installer.tar.gz源文件解压到/home/globus/share/gt3.2.1-all-source-installer
[globus@share] tar –zxvf gt 3.2.1 -all-source-installer.tar.gz
转到/home/globus/share/gt 3.2.1 -all-source-installer目录下
[globus@share]cd gt 3.2.1 -all-source-installe
[globus@ gt 3.2.1 -all-source-installe]
正式安装gt3.2:
[globus@ gt 3.2.1 -all-source-installe]./install-gt3 $GLOBUS_LOCATION
注意:首先要运行source /etc/profile设置环境变量,确保$GLOBUS_LOCATION是gt3.2的安装路径。
编译的时间视机器而定(建议选择性能较好的机器进行)。大概30分钟到1个小时左右,在编译过程中如果出现
make distclean make
*** no rule to make target distclean .stop
属于正常现象。
如果长时间没有反应,可以查看cpu的利用率,如果cpu利用率持续很高,则正常,如 持续很低(持续20分钟以上),则可以尝试重新启动安装命令(可能要试几次才有效)。编译过程是最为耗时的,真的需要有耐心和信心。
编译结束如果出现:“build successful”表示GT3.2安装成功了。
编译结束后系统提示要安装/$GLOBUS_LOCATION/setup/globus/setup-globus-gaa-authz-callout (这个一定要安装不然下面的安装会有问题)。
转到root用户运行/$GLOBUS_LOCATION/setup/globus/setup-globus-gaa-authz-callout –nonroot的安装
6) 安装mmjfs
[globus@ gt 3.2.1 -all-source-installe]./install-gt3-mmjfs $GLOBUS_LOCATION
注意:安装过程中如果出现xml文件不能读取的问题,则应该检查CLASSPATH中是否有xercesImpl.jar, xmlapi.jar, 以及$GLOBUS_LOCATION下文件的权限控制。
当出现“build successfully”表示安装成功。
7) 安装GSI(安全认证的配置)
因为GT3.2的安全认证库需要新的xalan.jar,所以要将$GLOBUS_LOCATION/endorsed/xalan.jar拷贝到$JAVA_HOME/jre/endorsed下。(以root权限)
以globus用户登陆。
ü 首先检查$GLOBUS_LOCATION环境变量是否已经设置,由于simpleCA的配置需要读取一些文件,因此,因此,应该更改它的权限,运行$GLOBUS_LOCATION/etc/globus-user-env.{sh.csh.bat}的脚本文件来更改文件的权限,因此运行:
[globus@ gt 3.2.1 -all-source-installe]source $GLOBUS_LOCATION/etc/globus-user-env.sh
ü 运行安装simpleCA的脚本:
[globus@gt 3.2.1 -all-source-installe]$GLOBUS_LOCATION/setup/globus/setup-simple-ca
a) 此脚本将提示输入你将创建的CA信息:(注意:请记住)按回车接受默认信息:cn(company name)=Globus Simple CA Ou(organization unit)=SimpleCA-jeffery.seu.edu.cn Ou=GlobusTest O=Grid
b) 提示输入CA的Email地址用于给CA和请求认证者之间的通信(如果是本机可以自己拷贝):Jeffery.Lee@gmail.com
c) 提示输入certificate的期限:回车默认为5年
d) 输入认证密码(一定要记住,每一次确认认证请求都要输入密码):simpleca
e) 则产生的CA private key放在目录/home/globus/.globus/simpleCA//private/cakey.pem
f) 输入刚才密码,生成CA的public key放在/home/globus/.globus/simpleCA/cacert.pem
g) 该CA的客户端发布包(用于其他客户端的签证,只需把这个文件拷贝到客户端,详情请查看本文档的后面)放在目录:/home/globus/.globus/simpleCA//globus_simple_ca_<hash code>setup-0.17.tar.gz
8) 安装GSI
以root用户运行如下命令:
[root@gt 3.2.1 -all-source-installer]$GLOBUS_LOCATION/setup/globus_simple_ca_<hashcode>_setup/setup-gsi
[root@gt 3.2.1 -all-source-installer]$GLOBUS_LOCATION/setup/globus_simple_ca_<hashcode>_setup/setup-gsi –default
注意:这一命令必须运行,否则,建立代理会失败。
9) 建立globus服务器的认证请求:
注意:globus用户建立的是CA服务器和globus服务器,首先要先对globus服务器进行签证。建立globus服务器的签证一定要以root用户登陆。
[root@ gt 3.2.1 -all-source-installer]$GLOBUS_LOCATION/bin/grid-cert-request –host ‘jeffery.seu.edu.cn’
注:jeffery.seu.edu.cn是/etc/host下面的host name。
(如果没有请用vi编辑host文件,手动添加ip和主机名)
该命令产生下面三个文件:
a) /etc/grid-security/hostkey.pem (private key)
b) /etc/grid-security/hostcert_request.pem (request file)
c) (an empty file should be replaced) /etc/grid-security/hostcert.pem
我自己在进行globus服务器的证书签证这一步时,运行上述命令有错误提示,并未生成hostcert_request.pem文件,而提示在/home/globus/.globus/simpleCA/newcerts下生成0X.pem文件,我们可以将该文件拷贝到globus用户目录下,简化下面的证书签证命令。
10) 对globus服务器的证书进行签证:
以globus用户登陆(CA为globus用户安装),运行下面命令:
[globus@gt 3.2.1 -all-source-installer]grid-ca-sign –in /etc/grid-security/hostcert_request.pem –out /etc/grid-security/hostsigned.pem
注:命令成功将产生/etc/grid-security/hostsigned.pem文件,前提是要先创建这个文件(可能globus没有权限创建)。当要用户输入签证密码时:输入前面globus用户建立CA时输入的密码:simpleca(用户自己定义)。
把产生的/etc/grid-security/hostsigned.pem文件覆盖掉/etc/grid-security/hostcert.pem(前面为空)
[globus@ gt 3.2.1 -all-source-installer]mv /etc/grid-security/hostsigned.pem /etc/grid-security/hostcert.pem.
注意,该签证后的文件的所有权则是globus服务器的所有者root用户,其他用户只有只读权限(444或644,通过ls –l查看,通过chmod,chgrp来更改)。
11) 建立客户端的认证请求:
以普通用户client进行登陆。注意由于client用户要执行$GLOBUS_LOCATION/bin下的文件,所以client用户要对该目录具有执行权限(通过chmod更改)
[client@ gt 3.2.1 -all-source-installer]$GLOBUS_LOCATION/bin/grid-cert-request
注意:命令运行后提示输入CA的签证密码,输入:simpleca,产生如下文件:
a) /home/client/.globus/userkey.pem (private key for client)
b) /home/client/.globus/usercert_request.pem (ceritification request)
c) /home/client/.globus/usercert.pem (empty file, should be replaced after begin signed)
d) 将上面的usercert_request.pem文件发给CA,由于是同一台机器,所以只要用globus用户对它进行签证就行了,如果是不同机器的用户,办法如后所述。
我自己在进行这一步时,运行上述命令同样有错误提示,并未生成hostcert_request.pem文件,而提示在/home/globus/.globus/simpleCA/newcerts下生成0X.pem文件,我们可以将该文件拷贝到globus用户目录下,简化下面的证书签证命令,这并不影响最后的安装。
12) 对客户端的认证请求进行签证:
以globus用户进行登陆:
[globus@ gt 3.2.1 -all-source-installer]grid-ca-sign –in /home/client/.globus/usercert_request.pem –out /home/client/.globus/usersigned.pem
注意:首先要创建/home/client/.globus/hostsigned.pem文件,上述命令会提示输入CA的签证密码,输入:simpleCA,产生/home/client/.globus/hostsigned.pem文件,client用户把这个文件替换掉/home/client/.globus/usercert.pem。
注意这三个文件的权限控制,文件user,group都为client用户(group可以是globus):
a) /home/client/.globus/userkey.pem r--------
b) /home/client/.globus/usercert_request.pem (ceritification request) rw-r--r--
c) /home/client/.globus/usercert.pem rw-r--r--
13) GT3.2的测试:
务必以client用户从系统登陆(而不是root或globus),否则象globus-service-brower不能正常启动。
a) 为了测试,首先要保证签证文件和密钥文件的权限:签证文件的umask码为:444,而密钥文件的umask码为:600,可以用root用户手工更改也可以利用脚本命令(推荐):
[root@ gt 3.2.1 -all-source-installer]$GLOBUS_LOCATION/bin/setperms.sh
b) 务必以root用户设置运行时动态连接库的位置:
[root@ gt 3.2.1 -all-source-installer]vi /etc/ld.so.conf /*动态链接库的配置文件*/
在ld.so.conf中加入GLOBUS的库文件路径
/home/globus/gt3.2/lib ( 务必运行/sbin/ldconfig )
c) 以client用户登陆,测试运行:
[client@client]$grid-proxy-init –debug -verify
d) 设置用户环境是的client可以读取$GLOBUS_LOCATION的文件,运行命令:
[client@client]$GLOBUS_LOCATION/etc/globus-user-env.sh
如果显示Permission Denied,注意检查globus-user-env.sh是否有执行权限
e) 设置授权用户并且映射提交作业
[root@grid-security]cd /etc/grid-security
创建grid-mapfile
[root@grid-security]touch grid-mapfile
[root@grid-security]vi grid-mapfile
按照下面格式添加用户名和授权ID
“/o=Grid/OU=GlobusTest/OU=simpleCA-jeffery.seu.edu.cn/OU=seu.edu.cn/CN=client” client
域名和用户名的获得可以通过以下命令得到(推荐)
[client@grid-security]grid-cert-info –subject
将命令输出复制到grid-mapfile即可
创建作业提交服务配置文件,使得用户可以提交作业
[root@grid-security]touch grim-port-type.xml
[root@grid-security]vi grim-port-type.xml
<authorized_port_types><port_type username=”client”>http://www.globus.org/namespace/managed_job/managed_job/ManagedJobPortType</port_type></authorized_port_types>
注:绝对不能有空行或回车,否则会出错
f) 启动globus container
务必要以globus用户登陆,务必要在$GLOBUS_LOCATION目录下
[globus@gt3.2]globus-start-container –p 8080
注:如果有问题的话可能要按照先安装ca,认证后在安装mmjfs.
g) 启动service brower
务必要以client用户登陆,务必要在$GLOBUS_LOCATION目录下。(待验证)
[client@gt3.2]globus-service-brower
14) 对其他的客户机进行签证:
ü 将我们前面建立CA服务器时生成的/home/globus/.globus/simpleCA//globus_simple_ca_<hash code>setup-0.17.tar.gz拷贝到请求签证的计算机上。
ü 运行下列命令:
[client@client]$GLOBUS_LOCATION/sbin/gpt-build globus_simple_ca_<hash code>setup-0.17.tar.gz gcc32dbg
ü 运行下列命令:
[client@client]setup-gsi -default
ü 建立用户认证请求:和前面过程一样,请求->签证