globus 4.0.8 在redhat上的安装配置全程记录

 

这份文档是反复安装多次 globus ,对整个操作步骤有一个清晰的印象和简单的理解后,在某一次保存的 snapshot 基础上开始边安装边记录的安装文档,但并不依赖这个 snapshot 的细节。
 
包括以下内容:
配置前准备;
证书配置;
配置 gridftp 服务器;
配置 webservice container
设置 RFT
设置 WS GRAM
 

一,配置前准备

当前我系统状态是 redhat 10, 内核 2.4.22 ,已经安装 JDK1.5.0, ANT1.6.5 globus-4.0.8 (解压前的安装包是 gt4.0.8-all-source-installer.tar.gz ), libiodbc3.52.6-1 postgresql 数据库暂时没有安装。主机名是 localhost.localdomain(hostname hostname –f 返回的都是这个 ) 。在 /etc/profile 中设置了 JAVA_HOME ANT_HOME 两个环境变量,没有也不需要设置 CLASSPATH ,在 ANT 中明确说过设置 CLASSPATH 如果操作不当可能会出问题。可执行文件 java 位于 $JAVA_HOME/bin 目录下,可执行文件 ant 位于 $ANT_HOME/bin 下。软件包的安装都非常简单。对于 JAVA ANT ,解压然后设置环境变量就可以。对于 libiodbc ,从官方网站下载最新的 rpm 包直接安装,对于 gt4 ,安装使用下述命令:
[globus@localhost gt4.0.8-all-source-installer]$ ./configure --prefix=/usr/local/globus-4.0.8/ --with-iodbc=/usr
[globus@localhost gt4.0.8-all-source-installer]$ make
[globus@localhost gt4.0.8-all-source-installer]$ make install
一切成功完成之后,进入下一步。当然,别忘了设置 GLOBUS_LOCATION 环境变量,我觉得最好也设在 /etc/profile 中,省去为每个用户单独设置的麻烦。
 
二,证书配置
证书配置的整个过程很简单:创建一个 CA(Certificate Authority) à 安装 gsi(grid security infrastructure ,网格安全基础设施 ) 。这两步以后,就建立了一个完整的证书认证体系。如果一个实体想申请证书,只需要使用 grid-cert-request 命令创建自己的一个密钥和证书申请文件,然后把证书申请文件送交 CA 签名,签名之后的文件就成了申请者的证书。
以上是纯工具性的,至于 globus 如何使用和为什么要这样使用证书这个工具,现在自己也是新手,需要熟练以后慢慢再去体会。以下是为了能让 globus 正确运行的配置:
创建 CA
先用 root 用户设置主机名:
[root@localhost root]# hostname test.gridlab.jlu.edu
网上很多安装过的朋友都说使用 hostname 设置了主机名以后重启又会丢失,不过我确从来没有遇到过这样的情况。我这里使用 hostname 设置完主机名后,发现 /etc/hosts 文件和 /etc/sysconfig/network 文件都没有改变,但无论重启与否, hostname 返回的都是设置的主机名而不是 localhost.localdomain ,有可能是因为我使用的是虚拟机所以这样。不过我安装了几次后觉得主机名不是个大问题,我这里说的步骤都是在我这里可行的。到这里设置之后,可能就不能启动 http 服务器了,需要手动在 /etc/hosts 文件中添加 IP 和新的主机名的映射才能启动 httpd
[globus@localhost globus]$ hostname
test.gridlab.jlu.edu
[globus@localhost globus]$ /usr/local/globus-4.0.8/setup/globus/setup-simple-ca
输出太长了,就不贴出来了。按照提示一路走下去就可以。 Complete 之后,
[globus@localhost globus]$ /usr/local/globus-4.0.8/setup/globus_simple_ca_a3e0f25e_setup/setup-gsi -default
setup-gsi: Configuring GSI security
Making /etc/grid-security...
mkdir /etc/grid-security
mkdir /etc/grid-security: Permission denied at /usr/local/globus-4.0.8/setup/globus_simple_ca_a3e0f25e_setup/setup-gsi.pl line 100
出错了,原来权限不够,这条命令应该在 root 下执行。
[root@localhost root]# /usr/local/globus-4.0.8/setup/globus_simple_ca_a3e0f25e_setup/setup-gsi -default
这一次就好了。
然后就是申请证书,主机的证书 / 密钥,用户的证书 / 密钥。
[root@localhost root]# source /usr/local/globus-4.0.8/etc/globus-user-env.sh
[root@localhost root]# grid-cert-request -host `hostname`
接下来就是让 CA 为主机的证书申请文件签名。
[globus@localhost globus]$ source /usr/local/globus-4.0.8/etc/globus-user-env.sh
最好把上面这条命令也加到 /etc/profile 里面去:
[root@localhost root]# cat >> /etc/profile
. /usr/local/globus-4.0.8/etc/globus-user-env.sh
CTRL C 保存退出。
CA 为主机的申请文件签名:
[globus@localhost globus]$ grid-ca-sign -in /etc/grid-security/hostcert_request.pem -out sign.pem
[root@localhost root]# mv /home/globus/sign.pem /etc/grid-security/hostcert.pem
mv: overwrite `/etc/grid-security/hostcert.pem'? y
[root@localhost root]# cd /etc/grid-security/
[root@localhost grid-security]# ll *.pem
-rw-rw-r--    1 globus   globus       2724 Jul 12 22:56 hostcert.pem
-rw-r--r--    1 root     root         1420 Jul 12 22:50 hostcert_request.pem
-r--------    1 root     root          887 Jul 12 22:50 hostkey.pem
注意,看到上面的 hostcert.pem ,它的属主是 globus 而不是 root ,而且权限位是 664, 应该改过来,否则在后面配置 gridftp 时会出错,尽管那时有错误提示信息。
[root@localhost grid-security]# chown root:root hostcert.pem
[root@localhost grid-security]# chmod 644 hostcert.pem
证书文件中包含了用户的公钥信息,其他用户都要能读但不能写,密钥是用户的私钥,必须秘密保存。
globus 作为运行 webservice container 的用户,也应该有主机的证书 / 密钥:
[root@localhost grid-security]# chown root:root hostcert.pem
[root@localhost grid-security]# chmod 644 hostcert.pem
[root@localhost grid-security]# cp hostcert.pem containercert.pem
[root@localhost grid-security]# cp hostkey.pem containerkey.pem
[root@localhost grid-security]# chown globus:globus container*.pem
[root@localhost grid-security]# ll *.pem
-rw-r--r--    1 globus   globus       2724 Jul 12 23:04 containercert.pem
-r--------    1 globus   globus        887 Jul 12 23:04 containerkey.pem
-rw-r--r--    1 root     root         2724 Jul 12 22:56 hostcert.pem
-rw-r--r--    1 root     root         1420 Jul 12 22:50 hostcert_request.pem
-r--------    1 root     root          887 Jul 12 22:50 hostkey.pem
接下来创建用户证书:
[root@localhost grid-security]# useradd guest0
[root@localhost grid-security]# usermod -s /bin/bash guest0
[root@localhost grid-security]# passwd guest0
guest0 登录:
[guest0@test guest0]$ grid-cert-request
根据提示填好相关信息后,会为用户生成一个密钥文件和一个证书申请文件,这些文件都放在用户的 ~/.globus 下。现在让 CA 为用户的申请文件签名:
[guest0@test guest0]$ chmod -R o+r /home/guest0/
[globus@localhost globus]$ grid-ca-sign -in /home/guest0/.globus/usercert_request.pem -out sign.pem
[root@localhost root]# mv /home/globus/sign.pem /home/guest0/.globus/usercert.pem
mv: overwrite `/home/guest0/.globus/usercert.pem'? y
[root@localhost root]# chown guest0:guest0 /home/guest0/.globus/usercert.pem
[guest0@test .globus]$ chmod 644 usercert.pem
最后,为了 gridftp 认证成功,需要创建一个 grid-mapfile
[guest0@test guest0]$ grid-cert-info -subject
/O=Grid/OU=GlobusTest/OU=simpleCA-test.gridlab.jlu.edu/OU=gridlab.jlu.edu/CN=guest0
[root@localhost root]# cd /etc/grid-security/
[root@localhost grid-security]# cat >> grid-mapfile
"/O=Grid/OU=GlobusTest/OU=simpleCA-test.gridlab.jlu.edu/OU=gridlab.jlu.edu/CN=guest0" guest0
CTRL C 保存退出。
 

三,配置 gridftp 服务器

我们使用 xinetd 的方式启动 gridftp 服务, xinetd 是一个 internet 服务守护进程 (daemon process) 。为了启动 gridftp ,我们先写它的 xinetd 配置文件:
[root@test root]# cat >> /etc/xinetd.d/gridftp
service gsiftp
{
        instances = 100
        socket_type = stream
        wait = no
        user = root
        env += GLOBUS_LOCATION=/usr/local/globus-4.0.8
        env += LD_LIBRARY_PATH=/usr/local/globus-4.0.8/lib
        server = /usr/local/globus-4.0.8/sbin/globus-gridftp-server
        server_args = -i
        log_on_success += DURATION
        nice = 10
        disable = no
}
CTRL C 保存退出。
说到这里,附带介绍两个小技巧。一个是 windows + putty + 虚拟机的超强组合, puttty 小巧简洁,功能强大,不像 ssh secure shell 那样笨重。另一个是在这个组合下编辑文件,我们不用启动如 emacs 这样比较大型的编辑器,使用 cat sed 等这些工具创建、编辑文件也非常方便,另外还有小巧的编辑器 nano ,也非常好用。
关于 xinetd 配置文件的语法用 man xinetd.conf 可以查到,上述花括号必须单独一行,等号左右必须有空白,这不是风格的问题,而是语法要求。 service 后面的服务名必须要在 /etc/service 中登记过,但不必要和这个配置文件名一样。
现在看 /etc/service 中是否登记过 gsiftp 服务:
[root@test root]# grep "ftp" /etc/services
ftp-data        20/tcp
ftp-data        20/udp
# 21 is registered to ftp, but also used by fsp
ftp             21/tcp
ftp              21/udp          fsp fspd
tftp            69/tcp
tftp            69/udp
sftp            115/tcp
sftp            115/udp
tftp-mcast      1758/tcp
tftp-mcast      1758/udp
mtftp           1759/udp
venus-se        2431/udp                        # udp sftp side effect
codasrv-se      2433/udp                        # udp sftp side effectQ
没有发现,必须手动加上去。
[root@test root]# cat >> /etc/services
gsiftp          2811/tcp
好了,现在我们让 xinetd 重新加载它的配置文件:
[root@test root]# /etc/init.d/xinetd reload
看看 gsiftp 是否启动:
[root@test root]# netstat -l | grep ftp
tcp        0      0 *:gsiftp                *:*                      LISTEN
我们尝试用 gridftp 来下载一个文件:
[guest0@test guest0]$ grid-proxy-init -debug -verify
 
 
ERROR: Couldn't find valid credentials to generate a proxy.
 
grid_proxy_init.c:605:globus_sysconfig: Error with key filename
globus_sysconfig: Error with key filename
globus_sysconfig: File has bad permissions: Permissions on /home/guest0/.globus/userkey.pem are too permissive. Maximum allowable permissions are 600
看来文件权限方面还是出了点问题。
[guest0@test guest0]$ cd .globus/
[guest0@test .globus]$ chmod 400 userkey.pem
[guest0@test .globus]$ ll
total 12
-rw-r--r--    1 guest0   guest0       2733 Jul 12 23:12 usercert.pem
-rw-r--r--    1 guest0   guest0       1434 Jul 12 23:07 usercert_request.pem
-r--------    1 guest0   guest0        951 Jul 12 23:07 userkey.pem
再来一次:
[guest0@test .globus]$ grid-proxy-init -debug -verify
 
User Cert File: /home/guest0/.globus/usercert.pem
User Key File: /home/guest0/.globus/userkey.pem
 
Trusted CA Cert Dir: /etc/grid-security/certificates
 
Output File: /tmp/x509up_u501
Your identity: /O=Grid/OU=GlobusTest/OU=simpleCA-test.gridlab.jlu.edu/OU=gridlab.jlu.edu/CN=guest0
Enter GRID pass phrase for this identity:
Creating proxy .....................++++++++++++
..........++++++++++++
  Done
Proxy Verify OK
Your proxy is valid until: Mon Jul 13 12:05:10 2009
好的,我们来下载一个文件:
[guest0@test .globus]$ globus-url-copy gsiftp://test.gridlab.jlu.edu/etc/group file:///tmp/test
[guest0@test .globus]$ cat /tmp/test
root:x:0:root
bin:x:1:root,bin,daemon
……
成功了。
下面是前几次安装到这一步时出现的问题,上面的步骤都避免了这些问题,但还是把它们贴出来。
在使用 xinetd 方式启动 gridftp 服务后,用 netstat –an | grep 2811 查看,如果看到的结果是两行,或者在客户端测试 gridftp 下载时出现这样的错误提示:
[guest0@jcwkyl guest0]$ globus-url-copy gsiftp://127.0.0.1/etc/group file:///tmp/test
 
error: globus_ftp_control: gss_init_sec_context failed
GSS Major Status: Unexpected Gatekeeper or Service Name
globus_gsi_gssapi: Authorization denied: The name of the remote host (jcwkyl), and the expected name for the remote host (localhost.localdomain) do not match. This happens when the name in the host certificate does not match the information obtained from DNS and is often a DNS configuration problem.
那么问题就是 hosts 文件的问题。修改 /etc/hosts 文件,把其中的
127.0.0.1  localhost.localdomain
这一行注释掉,然后再运行 globus-url-copy 就可以了。此时使用 netstat –an | grep 2811 看到的结果也是一行,这是对的。
 
 
中间一定要理解, globus 用户有一个密钥 / 证书对, root 用户也有一个密钥 / 证书对,这两个用户的密钥 / 证书对实际上是一样的,都是主机的密钥 / 证书。但一定要注意权限的设置。如果在客户端使用 globus-url-copy 测试 gridftp 时出现了这样的错误提示:

530-Attempt 1
530-
530-globus_credential: Error reading host credential
530-globus_sysconfig: Error with certificate filename
530-globus_sysconfig: Error with certificate filename
530-globus_sysconfig: File has bad permissions: Permissions on /etc/grid-security/hostcert.pem are too permissive. Maximum allowable permissions are 644

这就是这个密钥 / 证书对两个文件的权限太大了,按照说明用 chmod 命令把它们的权限全部设置成 644 即可。
 
别忘了在第一次运行 globus-url-copy 测试 gridftp 服务器之前要先运行 grid-proxy-init 命令验证一下一切是否正确安装。尤其是在证书有改动之后,比如用户由于证书过期或者泄密重新申请证书,或者 CA 重新被设置等等,有一次我在运行 globus-url-copy 时出现错误说 grid-mapfile 有问题,然后 grid-mapfile 文件已经正确更新了,所以猜想肯定是哪个地方没有更新,最后才想到是客户端没有重新运行 grid-proxy-init
 
如果在 globus-start-container 时出现了这样的错误:
Failed to start container: Container failed to initialize [Caused by: jcwkyl.gridlab.jlu.edu: jcwkyl.gridlab.jlu.edu]
这是因为在 /etc/hosts 文件中没有 IP 和主机名 ( 这里是 jcwkyl.gridlab.jlu.edu) 的对应,加上去就可以了。
接下来我们进入下一步:
 

四,配置并启动 webservice container

我们先把前面的步骤再回忆一下。由于安装过程比较长,所以需要不断重复,对整个安装过程从头到尾的全貌能理解,知道我们所做的工作处于哪一步,下一步应该做什么。我们首先安装了各种所需的软件包,主要包括 java ant gcc 有个编译 java 的插件叫做 gcj ,但是不要使用它,使用正规的 jdk ,之后安装了 libiodbc ,这是按照 quickstart 上说的,然后安装 gt4.0.8 。这一步结束之后,所有的工作都是配置了。配置的第一项工作是安全配置,这是网格的基础设施。在安全配置上,就是一个 PKI 模型,其核心就是 CA ,我们先创建一个 CA ,它负责签发证书,创建完 CA 以后,我们现在有两个用户,一个是 root ,一个是 globus 服务的使用者,在上文中是指 guest0 globus 用户本身不需要证书,它是个 (dumb user) globus 用户的任务就是管理 globus 的。安全配置之后是 gridftp 服务的配置,我们使用 xinetd 的方式来启动服务,所以 gridftp 的配置就两步:写 xinetd 启动脚本;重启 xinetd 以加载新建的脚本。
好了,现在开始配置 webservice container 。其实也不需要配置,直接启动看看:
[globus@test globus]$ globus-start-container
2009-07-13 00:28:12,374 ERROR service.ReliableFileTransferImpl [main,<init>:76] Unable to setup database driver with pooling.Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2009-07-13 00:28:12,993 WARN  service.ReliableFileTransferHome [main,initialize:97] All RFT requests will fail and all GRAM jobs that require file staging will fail.Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
Starting SOAP server at: https://127.0.0.1:8443/wsrf/services/
With the following services:
 
[1]: https://127.0.0.1:8443/wsrf/services/AdminService
[2]: https://127.0.0.1:8443/wsrf/services/AuthzCalloutTestService
……
[53]: https://127.0.0.1:8443/wsrf/services/mds/test/subsource/IndexServiceEntry
2009-07-13 00:28:41,469 INFO  impl.DefaultIndexService [ServiceThread-73,processConfigFile:107] Reading default registration configuration from file: /usr/local/globus-4.0.8/etc/globus_wsrf_mds_index/hierarchy.xml
2009-07-13 00:28:42,683 ERROR impl.QueryAggregatorSource [Timer-6,pollGetMultiple:149] Exception Getting Multiple Resource Properties from https://127.0.0.1:8443/wsrf/services/ReliableFileTransferFactoryService: java.rmi.RemoteException: Failed to serialize resource property org.globus.transfer.reliable.service.factory.TotalNumberOfBytesTransferred@30f369; nested exception is:
 
上面的异常信息是说 RFT 没有正确配置,这是正常的,因为我们还没有安装 postgresql 数据库,还没有配置 RFT 服务。但是上面那些 URL 中的 IP 127.0.0.1 ,这是错误的,应该修复它。
找到 $GLOBUS_LOCATION/etc/globus_wsrf_core/server-config.wsdd 这个文件和同目录下的 client-server-config.wsdd 文件,在 <globalConfiguration> 节下面加入:
<parameter name="logicalHost" value="192.168.0.4" />
现在重新启动 container
[globus@test globus]$ globus-start-container
……
Starting SOAP server at: https://192.168.0.4:8443/wsrf/services/
With the following services:
……
好了,现在看到的 IP 都是 192.168.0.4 了,这是我的电脑的 IP 。我们在客户端测试一下它,尽管还没有安装 RFT
[guest0@test guest0]$ counter-client -s https://test.gridlab.jlu.edu:8443/wsrf/services/CounterService
Error: ; nested exception is:
        org.globus.common.ChainedIOException: Authentication failed [Caused by: Operation unauthorized (Mechanism level: Authorization failed. Expected "/CN=host/localhost.localdomain" target but received "/O=Grid/OU=GlobusTest/OU=simpleCA-test.gridlab.jlu.edu/CN=host/test.gridlab.jlu.edu")]
出错了,多谢 http://hi.baidu.com/jjbear_ustc/blog/item/c49a43dd7e3d83e876c63887.html 地址处的这篇文章。解决方法是修改 /etc/hosts 文件,修改后的文件内容如下:
# Do not remove the following line, or various programs
# that require network functionality will fail.
# 127.0.0.1     localhost.localdomain
192.168.0.4     test.gridlab.jlu.edu
192.168.0.4     localhost.localdomain
这个时候再运行 counter-client
[guest0@test guest0]$ counter-client -s https://test.gridlab.jlu.edu:8443/wsrf/services/CounterService
Got notification with value: 3
Counter has value: 3
Got notification with value: 13
好了,进入下一步——
 

五,设置 RFT 服务

我们先安装 postgresql 数据库。安装包是系统盘上带的,从系统盘的安装包安装至少有两个好处,一是它是 rpm 安装包,一条命令完整,卸载又方便,还不用配置什么,另一个好处是由于它是系统盘带的,所以版本兼容肯定没有问题。我们不需要花大力气去下载源码包进行安装。
可是这次安装之前的系统不是干净的,这前曾经源码安装过 postgresql8.0.4 ,也安装过光盘中的 7.3.4, 而且两个安装都不完整。一片混乱。现在把一切都卸载掉,进入 postgresql8.0.4 的源码目录,执行 make uninstall ,然后用 rpm –e 来卸载 7.3.4 版。现在重新安装,命令行安装总是失败,于是 init 5 到图形界面,放入系统光盘自动安装 postgresql 数据库。
现在安装好了光盘中自带的 postgresql7.3.4-2 数据库,以下是设置的全过程:
设置 postgres 用户密码,这个用户在安装 postgresql 时已经创建好了。使用 SSH 登录必须有密码,所以:
[root@test root]# passwd postgres
Changing password for user postgres.
New password:
BAD PASSWORD: it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
创建一个目录:
[root@test root]# cd /usr/local
[root@test local]# mkdir pgsql
[root@test local]# chown postgres:postgres pgsql
postgres 身份登录系统,初始化这个数据库文件目录:
-bash-2.05b$ initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
 
……
Success. You can now start the database server using:
 
    /usr/bin/postmaster -D /usr/local/pgsql/data
or
    /usr/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
修改数据库文件目录下的 postgresql.conf 文件,本文中就是 /usr/local/pgsql/data/postgresql.conf 文件,把其中的:
# tcpip_socket = false
一行改为:
tcpip_socket=true
这样表示允许 postmaster 接受 TCP 连接,相当于在启动 postmaster 时传递的命令行参数。另外,既然选择了重新建立数据库文件目录给 globus 使用,就彻底不要去想 /etc/init.d/postgres 那个东西了,它在这里没有任何作用。
启动 postmaster 服务:
-bash-2.05b$ postmaster -D /usr/local/pgsql/data/ >log.txt 2>&1 &
[1] 3125
查看运行状态:
[root@test local]# export PGDATA=/usr/local/pgsql/data
[root@test local]# pg_ctl status
pg_ctl: postmaster is running (pid: 3215)
Command line was:
/usr/bin/postmaster '-D' '/usr/local/pgsql/data/'
或者:
-bash-2.05b$ jobs
[1]+  Running                 postmaster -D /usr/local/pgsql/data/ >log.txt 2>&1 &
创建数据库用户:
-bash-2.05b$ createuser -P globus
Enter password for user "globus":
Enter it again:
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
修改 pg_hba.conf 文件并重启数据库服务:
-bash-2.05b$ cd /usr/local/pgsql/data/
-bash-2.05b$ cat >> pg_hba.conf
host    rftDatabase     globus  192.168.0.4     255.255.255.255 md5
-bash-2.05b$ export PGDATA=/usr/local/pgsql/data/
-bash-2.05b$ pg_ctl restart
查看启动是否成功。因为重启的时候不再是后台进程了,回车又回到 shell ,但不能确定是否同时杀死了 postmaster
-bash-2.05b$ pg_ctl status
发现服务正常运行。
globus 登录,创建 RFT 数据库:
[globus@test globus]$ createdb rftDatabase
现在数据库已经存在了,这个数据库是专门用来存储 RFT 传输状态和 checkpoint 的,但是这个数据库现在是空的,我们需要部署数据库策略 (schema) gt4 提供了一个文件用来做这件事,它是 $GLOBUS_LOCATION/share/globus_wsrf_rft/rft_schema.sql 。我们可以打开这个文件看看,这个文件里面全部是 SQL 语句,用来创建一些 TABLE INDEX 。运行下面的命令自动完成这项工作:
[globus@test globus]$ psql -d rftDatabase -f /usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql
psql:/usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql:6: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index 'requestid_pkey' for table 'requestid'
CREATE TABLE
psql:/usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql:11: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index 'transferid_pkey' for table 'transferid'
CREATE TABLE
psql:/usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql:30: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index 'request_pkey' for table 'request'
CREATE TABLE
psql:/usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql:65: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index 'transfer_pkey' for table 'transfer'
CREATE TABLE
psql:/usr/local/globus-4.0.8/share/globus_wsrf_rft/rft_schema.sql:71: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index 'restart_pkey' for table 'restart'
CREATE TABLE
CREATE TABLE
CREATE INDEX
现在修改文件 $GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml 用来设置一些连接数据库的参数。
[globus@test globus]$ emacs $GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml
找到位于 ReliableFileTransferService 下面的 dbConfiguration ,修改 connectionstring 参数,如果是本机数据库,则不需要修改就能工作。然后修改 usrename password username 就是 globus password 就是在用 postgres 用户 createuser 时为 globus 设置的密码。
现在,重新启动 container
 
[globus@test globus]$ globus-start-container
Starting SOAP server at: https://192.168.0.4:8443/wsrf/services/
With the following services:
 
[1]: https://192.168.0.4:8443/wsrf/services/AdminService
[2]: https://192.168.0.4:8443/wsrf/services/AuthzCalloutTestService
[3]: https://192.168.0.4:8443/wsrf/services/CASService
[4]: https://192.168.0.4:8443/wsrf/services/ContainerRegistryEntryService
[5]: https://192.168.0.4:8443/wsrf/services/ContainerRegistryService
……
现在已经没有警告了。
现在测试一下 RFT 传输:
[guest0@test guest0]$ cp /usr/local/globus-4.0.8/share/globus_wsrf_rft_test/transfer.xfr /tmp/rft.xfr
我们可以看看这个文件是什么内容:
[guest0@test guest0]$ cat /tmp/rft.xfr
true
16000
16000
false
1
true
1
null
null
false
10
gsiftp://localhost:2811/tmp/rftTest.tmp
gsiftp://localhost:2811/tmp/rftTest_Done.tmp
看来这是一系列传输指令,就像 ftp.exe 的脚本文件一样。传输它:
[guest0@test guest0]$ rft -h test.gridlab.jlu.edu -f /tmp/rft.xfr
Number of transfers in this request: 1
Subscribed for overall status
Termination time to set: 60 minutes
 
  Overall status of transfer:
Finished/Active/Failed/Retrying/Pending
0/0/0/1/0
Error:Authentication with credential only failed on server localhost [Caused by: Authentication failed [Caused by: Operation unauthorized (Mechanism level: Authorization failed. Expected "/CN=host/localhost" target but received "/O=Grid/OU=GlobusTest/OU=simpleCA-test.gridlab.jlu.edu/CN=host/test.gridlab.jlu.edu")]]
出了错误,把 /tmp/rft.xfr 最后两行的 localhost 替换成 test.gridlab.jlu.edu:
又出错了,这次倒不是认证失败,而是说主机上没有 /tmp/rftTest.tmp 这个文件,本来就没有,这次再改一下,像 quickstart 上说的,把 tmp/rftTest.tmp 改为 /etc/group
[guest0@test guest0]$ rft -h test.gridlab.jlu.edu -f /tmp/rft.xfr
Number of transfers in this request: 1
Subscribed for overall status
Termination time to set: 60 minutes
 
  Overall status of transfer:
Finished/Active/Failed/Retrying/Pending
0/1/0/0/0
 
  Overall status of transfer:
Finished/Active/Failed/Retrying/Pending
1/0/0/0/0
All Transfers are completed
成功!
 
 

最后一步,设置 WS GRAM

[root@test local]# visudo
sudoers 文件的最后加上:
globus ALL=(guest0) NOPASSWD: /usr/local/globus-4.0.8/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/local/globus-4.0.8/libexec/globus-job-manager-script.pl *
globus  ALL=(guest0) NOPASSWD: /usr/local/globus-4.0.8/libexec/globus-gridmap-and-execute -g /etc/grid-security/grid-mapfile /usr/local/globus-4.0.8/libexec/globus-gram-local-proxy-tool *
然后可以测试一下:
[guest0@test guest0]$ globusrun-ws -submit -c /bin/date
Submitting job...Done.
Job ID: uuid:bcceac7c-6fec-11de-b8be-000c29ceaaf5
Termination time: 07/14/2009 20:35 GMT
Current job state: Active
Current job state: CleanUp
Current job state: Done
Destroying job...Done.
 
 
 
 
 
 
 

你可能感兴趣的:(数据库,redhat,webservice,table,PostgreSQL,permissions)