2007年6月12日 星期二

SRB 3.x 安裝指南 (PostgreSQL)

SRB套件:

SRB3.2e.tar

srb3.2.1patch.tar

DBMS套件:

postgresql-7.4.2.tar.gz

unixODBC-2.2.10.tar.gz

psqlodbc-7.2.5.tar.gz

主機:

Redhat Linux(Redhat 8, Redhat 9, Redhat AS 3皆測試過)

測試帳號:

srb.nchc.org.tw:5544 / mcat.nchc.org.tw:5544

srbtest

srbtest

Client Application:

InQ下載頁面

目錄:

前言

準備工作

SRB without MCAT

PostgreSQL and unixODBC Quick Installation Guide

SRB with MCAT

Test

  • 前言


在安裝的過程中,實在歷經千辛萬苦

雖然到了第3版,官方文件卻還是沒有跟著官方測試人員在新版本上的結果而更新,文件的配置潦草隨意

有相當多的堪誤

除了Scommand的設計還算不錯,ClientApp很漂亮也很好用

但Server有些設定及關鍵字的意義難以令人理解,與字面有些與差別

無論如何,我們還是感謝SRB開發人員實現這個想法

但如果是OpenSource,會讓這個想法實現的更完美吧!

可能大部分人都用安裝Oracle解決

Oracle好裝好用,但畢竟不是OpenSource

但是在這裡我用的是PostgreSQL,因為PostgreSQL對於ODBC的支援在幾版前便已經拆開

由非官方的團隊撰寫

ODBC的公用驅動一開始是選擇IODBC,不過似乎對於新版PostgreSQL的相容還是有些許問題

unixODBC有許多好用的設定工具,相容性也完全正常

不過裡面附的PostgreSQL驅動程式,我並沒有使用

MySQL也可能因為Library的關係出現Bus Error,官方沒有任何說明文件

便不在討論範圍內了




  • 準備工作


修正檔

解開兩個.tar檔

基本上從官方下載會經過pgp加密,請依官方指定的解密方式解密

再來依照srb3.2.1patch下的readme複製檔案
root$> tar xf SRB3.2e.tar
root$> tar xf srb3.2.1patch.tar
root$> cd srb3.2.1patch
root$> cp srbObjFunct.c ../SRB3_2/src/back/
...
...
完成之後,或許你可以將他tar起來,因為應該不會只裝一台的

建置Java Client的先前步驟

如果你要使用他的Java Client App,必須做這些動作

你可以到sun官方站去下載Java 2 SDK的RPM來安裝

http://java.sun.com

此外還需要Apache-Ant,這是一個Java的make工具

http://ant.apache.org/

請參考官方文件安裝,如果是下載binary的話就簡單的多,只要解開即可

環境變數

$JAVAHOME=你安裝java的路徑

$ANTHOME=你安裝apache-ant的路徑

$CLASSLIB=$JAVAHOME\lib:$JAVAHOME\jre\lib:$ANTHOME\lib

$PATH=$PATH:$JAVAHOME\bin:$JAVAHOME\jre\bin:$ANTHOME\bin

請務必加到環境變數設定檔去

Shell的問題

SRB有一小部分的script是用c shell寫的

經過測試,MCAT的ingest系列程式也是只抓c shell的變數

當下必須完全使用c shell操作

然而一般Linux使用者預設會使用bash

你必須安裝一個可用的c shell如tcsh




  • SRB without MCAT


安裝的建議

由於SRB本身是一個Server,許多小程式,API的集合

以及這些程式的配置(Layout)方式

並不建議執行make install來安裝至指定目錄

多人共用的話,可以將整個SRB資料夾擺在/usr/local/下,將Owner改成srb,再設定$PATH

或是擺在srb這個帳號的家目錄,再設定srb自己的$PATH

由於基本上是多人共用,我們採用上面方式

Configure參數說明

--enable-installdir=<path> 安裝路徑(預設: /usr/local/srb)

--enable-javagui 如果你選擇這個,你會需要java2 sdk及apache-ant

--enable-jdkhome=<path> 如果選擇上述參數,你需要指定這個參數至正確的路徑

--enable-gsi-auth 開啟globus GSI認證方式

--enable-globus-location=<path> 如果選擇上述參數,你需要指定這個參數至正確的路徑

--enable-secure-comm 和globus進行安全連線

--enable-openssl-location=<path> 如果要進行安全連線,卻不想使用globus內附的openssl,就指定其他路徑

--enable-project=<name> 如果你要在同一個主機上執行多個SRB,需要指定

Configure & Make

官方說要gmake那是在少數平台上才可能會有的問題,現在大多數的make都是gmake

如果你在Solaris或是其他大型主機的unix上操作請要注意

configure的時候,會自動地寫入mk/mk.common, mk/mk.config,使用者不需更改
root$> mv SRB3_2 /usr/local/SRB
root$> cd /usr/local/SRB
root$> ./configure --enable-javagui --enable-jdkhome=$JAVA_HOME
root$> make
root$> adduser srb
root$> chown -R srb:srb ./
環境變數

以下的路徑要加入至$PATH

/usr/local/SRB/bin
/usr/local/SRB/java/bin
/usr/local/SRB/utilities/bin
/usr/local/SRB/utilities/admin-bin

如果你要的話,可以將下列加入至$MANPATH

/usr/local/SRB/utilities/man

SRB套件附了什麼工具?

admin/

這是一個srb的監控工具

bin/

srbMaster,SRB的服務程式

/bin/commands

給runsrb及killsrb使用的script

data/

SRB主要設定檔的目錄,MCAT/data有部分檔案會做連結

jargon/

Java API

java/

Java Client,即為srbBrowser

matrix/

使用SRB的一個應用

NT/

Windows版的用戶端文字介面程式

readme.dir/

所有主要的說明都放在這裡

tape/

SRB的磁帶管理介面,可以將磁帶也納入MCAT管理

test/

測試程式及範例

unixIO/

libsrbUio.so,srbUio.h,提供的C API

utilities/

Scommand文件介面工具

安全機制

MDAS
(
Massive Data Analysis System ) 為SRB主要的存取控制,排程,中介資料(metadata)控制的子系統

每個SRB服務器需要連接到一個MCAT服務器

進入SRB Source的data目錄

編輯mcatHost 檔案

第一行是mcat主機位置

第二行是加密方式,一般使用ENCRYPT1即可

第三行目前沒有太大影響,不作任何編輯

你可以在SRB Source下的utilities/envFiles目錄找到兩個隱藏檔

.MdasAuth

.MdasEnv

建立~srb/.srb目錄,並且將這兩個檔案複製到其中

編輯這兩個檔案

一個前提是,這裡所使用到的帳號密碼

全部是在mcat中有註冊的帳號密碼,跟主機本身的帳號密碼沒有關連

在.MdasAuth檔案中填入密碼

而.MdasEnv中

在所有欄位填入相對應的值

如果你不是MCAT的管理者,你應該會被主動告知這些資訊

啟動

切換成srb帳號

務必進入bin目錄才能啟動

以下列出一般啟動及停止的情況
srb$> ./runsrb

rm: cannot lstat `./../data/lockDir/.[a-z]*': No such file or directory
rm: cannot remove `./../data/lockDir/CVS': Is a directory
findServerExec: found "/usr/local/SRB/bin/./srbServer" using argv[0]
logFile: ../data/srbLog opened successfully.
initHostWithMCat: mcatHost not defined for zone demozone
LocalHostName: nasyp2, localhost, nasyp2.nchc.org.tw, 127.0.0.1, Port Num: 5544.
Local storage vault conf:
storSysType: 0, vaultPath: /srbVault
NOTICE:Oct 17 15:37:25: srbMaster version SRB-3.2.0&F is up.
initHostWithMCat: mcatHost not defined for zone demozone
findServerExec: found "/usr/local/SRB/bin/./srbServer" using argv[0]
srb 6671 1 0 15:37 ? 00:00:00 ./srbMaster-3.2.0 -d 1 -S
srb 6679 6667 0 15:37 pts/3 00:00:00 grep srbMaster

srb$> ./killsrb

040 S srb 6671 1 0 75 0 - 2890 schedu 15:37 ? 00:00:00 ./srbMaster-3.2.0 -d 1 -S
000 S srb 6674 6671 0 76 0 - 3173 pipe_w 15:37 ? 00:00:00 /usr/local/SRB/bin/./srbServer -Q -p7 -P8
Will kill srbServers with pid = 6674
Will kill srbMaster with pid = 6671
Enter y to do so:
y
kill 1: 6674
kill 2: 6674
kill 1: 6671
kill 2: 6671
kill 6671: No such proces




  • PostgreSQL and unixODBC Quick Installation Guide


介紹

PostgreSQL是一個以物件導向為基礎的關連式資料庫,以下列出幾個好用的資源

PostgreSQL 7.4 文件

PostgreSQL台灣資訊網

幾乎很多大學的FTP都有PostgreSQL的Mirror

ftp://ftp.isu.edu.tw/pub/Unix/Database/PostgreSQL/

在本文件撰寫的時候,最新版本是7.4.5

你可以在ftp://ftp.isu.edu.tw/pub/Unix/Database/PostgreSQL/odbc/versions/src/

找到最新的ODBC驅動

unixODBC官方站

你可以在下載頁面找到最新版

unixODBC是一套擁有相當高支援性的unix平台ODBC驅動程式,比起iODBC,unixODBC更多了一些好用的工具介面及詳細的說明

你可以在官方站的manual頁面找到許多安裝指南

安裝PostgreSQL

在這裡必須強烈建議使用Source安裝,使用RPM由於會自動加入ptherad功能

就SRB的maillist有提到說可能會引發程式出錯

將下載回來的套件解開之後,進入PostgreSQL source 目錄
root $> ./configure --with-perl --with-nls

root $> make all install

root $> cd /usr/local/pgsql

root $> adduser postgres

root $> mkdir data

root $> chown -R postgres:postgres data

#請自行加入路徑至PATH

root $> initdb ./data

root $> pg_ctl -D ./data -l ./data/pgsol.log start

#要停止的話

root $> pg_ctl -D ./data stop

#重新啟動

root $> pg_ctl -D ./data -l ./data/pgsol.log restart

PostgreSQL與MySQL一樣,預設使用unix domain socket

為了能使ODBC驅動程式正常運作

我們得啟動他的tcp通訊埠

編輯data/postgresql.conf

大概在第30行有個tcpip_socket = false 改成true

下面有個port=5432

這是等會也要在ODBC設定檔設置的

重新啟動PostgreSQL之後可以測試看看
root $> netstat -al

tcp 0 0 *:postgres *:* LISTEN
安裝unixODBC及psqlodbc驅動程式

unixODBC的圖形工具要在kde下跑,如果你沒有安裝kde及libqt,記得加入 --enable-gui=no
root $> ./configure

root $> make all install

由於psqlodbc欠了三個檔案,請從postgresql安裝目錄找到這三個檔案,並複製過去

例如:/usr/local/pgsql/include

這三個檔案是

iodbc.h

isqlext.h

isql.h

#進入psqlodbc source目錄

root $> ./configure --with-unixodbc --enable-static

root $> make all install
在linux中,如果動態函示庫沒有以lib開頭,會無法正確連結

不使用softlink是因為mcat程式會無法正確抓到載入系統的函示庫

不過unixODBC是直接連接的,仍然可以正常運作
root $> cd /usr/local/lib

root $> ln psqlodbc.la libpsqlodbc.la

root $> ln psqlodbc.so libpsqlodbc.so

root $> ldconfig -v
新增odbcinst.ini

建立/usr/local/etc/odbcinst.ini

加入

[PostgreSQL]
Description = PostgreSQL driver for Linux & Win32
Driver = /usr/local/lib/libpsqlodbc.so




root$> odbcinst -i -d -f odbcinst.ini -n PostgreSQL

他會自動做其餘的設定

odbc驅動需要在預設資料庫增加一些function




root $> su postgrespostgres $> psql template1 < /usr/local/share/psqlodbc/odbc.sql

建立預設及mcat所要用的資料庫

我給SRB用的資料庫名稱為srb
root $> su postgres

postgres $> createdb postgres

postgres $> createdb srb

postgres $> createuser srb
切換成srb帳號,進入家目錄

建立.odbc.ini

並增加下列幾行

[PostgreSQL]
Servername = localhost
Database = srb
Username = srb
Password = nchcsrb
Port = 5432
Driver = /usr/local/lib/psqlodbc.so

如果出了問題,想要察看log,可以加入

Trace = Yes
TraceFile = /home/srb/odbc.trace
srb$> odbcinst -i -s -f .odbc.ini

srb$> isql PostgreSQL

+---------------------------------------+
| Connected!
|
| sql-statement
| help [tablename]
| quit
|
+---------------------------------------+
SQL>

表示可以正常連接




  • SRB with MCAT


前面準備動作都同樣,多了設定MCAT那個部分




root$> ./configure--enable-psgmcat --enable-psghome=/usr/local/pgsql--enable-javagui --enable-jdkhome=$JAVA_HOMEroot$> make

接下來仍然是建立srb帳號

加入環境變數...等

由於我們使用的是PostgreSQL ODBC Driver,而SRB又少了三個.h檔,我們必須將他複製到你安裝PostgreSQL的include

例如:/usr/local/pgsql/include

這三個檔案是

iodbc.h

isqlext.h

isql.h

切換至SRB Source目錄




root$> makeroot$> cd MCATroot$> makeroot$> chown -R srb:srb /usr/local/SRB

編輯設定檔

接著進入data目錄編輯三個檔案

  1. 將mcatHost檔案改為你的主機名稱

  2. 將MdasConfig.psg複製,覆蓋掉原來的MdasConfig
    你只要更動這裡所有的路徑至正確的,此外DB2USER就是剛剛使用createuser在PostgreSQL建立的帳號"srb"

  3. 將hostConfig加入你的主機名稱


建立資料庫

切換成srb帳號,進入SRB Source下的MCAT/data目錄

如果有需要觀看結果,輸出重導至任何檔案

install.results.*這些檔案是SDSC他們安裝的結果,可以用diff與你自己的安裝結果比較




srb$> psql srb < catalog.install.psg

將MCAT/bin加入至你的路徑,你可以現在就將這些常用的路徑寫至srb帳號的環境設定檔

之後可以在MCAT/data執行test.catalog這個script

test.reault.*是SDSC測試的結果




srb$> ./test.catalog

使用diff來將你的結果和官方的結果比較後

若是發現錯誤,可以使用utilities/bin底下的Scommand




srb$> Serror -3219
Serror
DATA_SUBCOLLECTION_NOT_UNIQUE: DATA_SUBCOLLECTION_NOT_UNIQUE

你或許可以在SRB的maillist找到一些解釋

isql連線測試沒什麼問題的話,就幾乎都會正常

若是出現Segmentation fault,你應該試著將psqlodbc驅動重新make,或是使用另一個版本

真的有錯誤,為了追蹤,你可以開啟PostgreSQL的Log connection/statement 功能

註冊帳號及區域

MCAT有預先定義一組區域及帳號,我們將使用這組帳號來新增其他帳號

以下的操作,需要一個可用的c shell

以下可能會有一些字元混淆的狀況,例如O和0,1和l

不行的話試著複製貼上吧
srb$> csh

srb%> setenv srbUser srb

srb%> setenv srbAuth CANDO

srb%> setenv mdasDomainName sdsc

srb%> ingestToken Domain nchc gen-lvl4

srb%> ingestUser srbadmin nchcsrb nchc sysadmin '' '' ''

這兩道指令原本的意思

ingestToken Domain $YOURDOMAIN gen-lvl4

ingestUser $YOUR_ADMIN_NAME $YOUR_PASSWD $YOUR_DOMAIN sysadmin '' '' ''

啟動

同樣地,複製並編輯好.MdasAuth及.MdasEnv兩個檔案

便可以依照上面的作法啟動SRB

啟動的訊息應該也會於上面無異




  • Test


你可以下載InQ,Windows的SRB Client來使用上面的帳號連接看看

一些API,工具的使用在之後的文章會陸續介紹

沒有留言 :

張貼留言