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本身是一個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是一個以物件導向為基礎的關連式資料庫,以下列出幾個好用的資源
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>
表示可以正常連接
前面準備動作都同樣,多了設定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目錄編輯三個檔案
- 將mcatHost檔案改為你的主機名稱
- 將MdasConfig.psg複製,覆蓋掉原來的MdasConfig
你只要更動這裡所有的路徑至正確的,此外DB2USER就是剛剛使用createuser在PostgreSQL建立的帳號"srb" - 將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
啟動的訊息應該也會於上面無異
你可以下載InQ,Windows的SRB Client來使用上面的帳號連接看看
一些API,工具的使用在之後的文章會陸續介紹
沒有留言 :
張貼留言