::: 강좌/소스/문서 :::

강좌/소스/문서 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-11-29 16:33:22, Hit : 6202, Vote : 1542
 http://www.howto.pe.kr
 MCSdemo.java (5.1 KB), Download : 375
 [강좌] Metadata Catalog Service (MCS) 설치

// 제  목: Metadata Catalog Service (MCS) 설치
// 작성자: 김영대( http://www.howto.pe.kr )  

  설치 GT3: GT3 3.0.2
  O/S: Linux 2.4.18-3 (Redhat 7.3)
  호스트명: myhome.ssu.ac.kr

1.설치할 파일 다운받기
.j2sdk-1_4_2_02-linux-i586.rpm ( http://java.sun.com )
.tomcat-4.1.27.tar.gz ( http://jakarta.apache.org )
.Xerces-J-bin.2.6.0.tar.gz ( http://xml.apache.org )
.axis-1_1.tar.gz ( http://ws.apache.org )
.mysql-4.1.0-alpha.tar.gz ( http://www.mysql.com/downloads/mysql-4.1.html )
.mcs.tar.gz ( http://gaul.isi.edu/mcs/v2 )
.mcsschema.txt ( http://gaul.isi.edu/mcs/v2 )
  
2.tomcat 설치
만약 J2SDK 가 설치되어 있지 않다면 먼저 J2SDK 를 설치한다
아래와 같이 설치한다면 /usr/java/j2sdk1.4.2_02 디렉토리가 생성된다
   [root root]# rpm -ivh j2sdk-1_4_2_02-linux-i586.rpm

마찬가지로 tomcat 이 설치되어 있지 않다면 먼저 tomcat 을 /usr/java 아래에 설치한다
아래와 같이 설치한다면 /usr/java/jakarta-tomcat-4.1.27 디렉토리가 생성된다
   [root root]# tar xvfz tomcat-4.1.27.tar.gz -C /usr/java

j2sdk 와 tomcat 을 위한 환경변수를 등록하고 반영한다
   export JAVA_HOME=/usr/java/j2sdk1.4.2_02
   export CATALINA_HOME=/usr/java/jakarta-tomcat-4.1.27

tomcat을 아래와 같은 명령어로 실행한다 (종료는 shutdown.sh 이다)
   [root root]# $CATALINA_HOME/bin/startup.sh
윕브라우저를 이용하여 해당 서버의 8080 포트(예, http://localhost:8080) 로 접속해 본다
화면의 Examples 의 JSP Examples/Servlet Examples 등을 클릭하여 예제가 실행되는지 테스트한다
참고로 tomcat 의 홈페이지는 $CATALINA_HOME/webapps/ROOT/index.jsp 문서이다

3.axis(SOAP, WSDL), Xerces(XML parser) 설치
axis 를 /usr/java 아래에 설치한다
아래와 같이 설치한다면 /usr/java/axis-1_1 디렉토리가 생성된다
   [root root]# tar xvfz axis-1_1.tar.gz -C /usr/java

Xerces 를 /usr/java 아래에 설치한다
아래와 같이 설치한다면 /usr/java/xerces-2_6_0 디렉토리가 생성된다
   [root root]# tar xvfz Xerces-J-bin.2.6.0.tar.gz -C /usr/java

/usr/java/xerces-2_6_0 에 있는 모든 jar 파일을 axis 의 WEB-INF/lib 에 복사한다
   [root root]# cp /usr/java/xerces-2_6_0/*.jar /usr/java/axis-1_1/webapps/axis/WEB-INF/lib

아래에서 tomcat 윕서비스에 변동이 생길것이므로 실행된 tomcat 을 잠시 종료한다
   [root root]# $CATALINA_HOME/bin/shutdown.sh

/usr/java/axis-1_1/webapps의 axis 를 /usr/java/jakarta-tomcat-4.1.27/webapps 디렉토리 아래에 복사한다
   [root root]# cp -R /usr/java/axis-1_1/webapps/axis /usr/java/jakarta-tomcat-4.1.27/webapps

http://localhost:8080/axis/index.html 를 방문하여 "Hello! Welcome to Apache-Axis"
  를 확인하고 화면의 "Validate the local installation's configuration" 부분을 클릭한다
  이것은 axis 를 위한 needed(core) 콤포넌트와 옵션 콤포넌트가 어떻게 설치되어 있는지 보여준다
  "Warning: could not find class org.apache.xml.security.Init from file xmlsec.jar" 부분은 MCS 와는
  관련 사항이 없으므로 무시한다
  
다시 http://localhost:8080/axis/index.html 를 방문하여 "View the list of deployed Web services"
부분을 클릭해본다. 이것은 현재 axis 에서 제공하는 윕서비스와 제공하는 메소드 리스트를 보여준다
기본으로 2가지 윕서비스가 보일것이다
MCS 서버는 윕서비스 형태로 운영될것이므로 나중에 MCS 를 설치하고 나면 이곳에 "MetaDataCatalogService"
윕서비스가 추가됨을 보게될것이다
  .AdminService (wsdl)
    AdminService
  .Version (wsdl)
    getVersion  

4.MySQL 설치
다운받은 파일이 소스 배포본인지 그리고 4.1.0-alpha 이상인지 다시한번 확인한다
4.1.0-alpha 이상이어야 MCS 의 spatial attributes 기능을 사용할 수 있다
압축을 임의 디렉토리에서 풀고 압축을 푼 mysql 디렉토리로 이동하여 configure 합니다
   [root root]# tar xvfz mysql-4.1.0-alpha.tar.gz
   [root root]# cd mysql-4.1.0-alpha
   [root mysql-4.1.0-alpha]# ./configure --prefix=/usr/local/mysql --with-extra-character-sets=complex
   --localstatedir=/home/mysql/data

   --prefix=/usr/local/mysql  설치 디렉토리 지정
   --with-extra-character-sets=complex   mysql 에서 multi-byte character set 을 지원
   --localstatedir=/home/mysql/data  DB의 데이터 table을 파일로 저장할 디렉토리를 지정

configure 한 후 "Thank you for choosing MySQL!" 이라는 메시지가 나온다면 MySQL을 컴파일할 준비가
다 되었다는 것이다

아래와 같이 컴파일을 시작하며 컴퓨터 사양에 따라 수분에서 수십분 소요된다
   [root mysql-4.1.0-alpha]# make    

여기까지 되었다면 mysql 이라는 사용자 group과 id를 만들어야 한다
   [root mysql-4.1.0-alpha]# groupadd mysql
   [root mysql-4.1.0-alpha]# useradd -g mysql mysql
   [root mysql-4.1.0-alpha]# mkdir /home/mysql/data
   [root mysql-4.1.0-alpha]# chown -R mysql.mysql /home/mysql/data
   [root mysql-4.1.0-alpha]# cp support-files/my-medium.cnf /etc/my.cnf

아래와 같이 설치작업을 한다
   [root mysql-4.1.0-alpha]# make install

MySQL 의 데이터를 관리할 기초적인 DB(mysql,test)와 테이블(db,user,func 등)을 스크립트로 생성한다
   [root mysql-4.1.0-alpha]# scripts/mysql_install_db      
mysql_install_db 은 반드시 한번만 실행시켜야 한다

몇가지 DB 파일이 root 로 되어 있으므로 다시한번 권한을 바꿔준다
   [root mysql-4.1.0-alpha]# chown -R mysql.mysql /home/mysql/data

MySQL 서버의 시작과 종료 그리고 관련 명령어를 사용하기 편하게 하기위해서 부팅환경에 PATH를 추가한다
   [root mysql-4.1.0-alpha]# vi /root/.bash_profile
   PATH=$PATH:/usr/local/mysql/bin

시스템 부팅시에 자동 실행되도록 해준다
   [root root]# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
   [root root]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld
   [root root]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld

설치가 완료되었으므로 MySQL 서버의 구동을 테스트 해본다
   [root root]# /etc/rc.d/init.d/mysqld start

MySQL 서버가 정상적으로 가동중인지 아래와 같이 테스트한다
   [root root]# mysqladmin version
   mysqladmin  Ver 8.40 Distrib 4.1.0-alpha, for pc-linux on i686
   Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
   This software comes with ABSOLUTELY NO WARRANTY. This is free software,
   and you are welcome to modify and redistribute it under the GPL license

   Server version          4.1.0-alpha-log
   Protocol version        10
   Connection              Localhost via UNIX socket
   UNIX socket             /tmp/mysql.sock
   Uptime:                 5 min 40 sec

   Threads: 1  Questions: 4  Slow queries: 0  Opens: 6  Flush tables: 1  Open tables: 0  
   Queries per second avg: 0.012

MySQL 을 설치시(초기설정 스크립트파일 mysql_install_db을 실행하면 생성됨) MySQL의 DBA 를 위한
유저 하나를 자동으로 만드는데 root (UNIX 사용자 계정이 아님)라는 DBA 유저이다.
이 root 유저로 MySQL 을 로그인해보자
   [root root]# mysql -uroot
   Welcome to the MySQL monitor.  Commands end with ; or g.
   Your MySQL connection id is 2 to server version: 4.1.0-alpha-log

   Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

MySQL 에 기본으로 생성된 database 들을 보려면 아래와 같이 하면 된다
mysql 은 MySQL 자체를 관리하기 위한 것이고 test 는 그냥 테스트용 database 이다
   mysql> show databases;
   +----------+
   | Database |
   +----------+
   | mysql    |
   | test     |
   +----------+
   2 rows in set (0.02 sec)

mysql 이라는 database 를 접근하기 위해서는 아래와 같이 use 명령어를 이용하여 사용을 알린다
이 use 명령어는 하나의 DB를 사용하다가 다른 DB 로 전환할경우 주로 사용된다
   mysql> use mysql;
   Database changed  
  
그럼 mysql batabase에 있는 table 들을 보자
   mysql> show tables;
   +-----------------+
   | Tables_in_mysql |
   +-----------------+
   | columns_priv    |
   | db              |
   | func            |
   | host            |
   | tables_priv     |
   | user            |
   +-----------------+
   6 rows in set (0.00 sec)  

mysql database 의 use 테이블을 select 해보면 다음과 같다
지금까지 사용한 mysql 의 관리 유저인 root 가 보일것이다
   mysql> select host, user from user;
   +----------------------+------+
   | host                 | user |
   +----------------------+------+
   | myhome.ssu.ac.kr     |      |
   | myhome.ssu.ac.kr     | root |
   | localhost            |      |
   | localhost            | root |
   +----------------------+------+
   4 rows in set (0.00 sec)

5.MCS 를 위한 MySQL 설정
http://gaul.isi.edu/mcs/v2/mcsschema.txt 를 다운받는다
이 파일은 MySQL 에 MCS 를 위한 데이타베이스(mcs_2) 와 각종 테이블을 생성하는 스크립트이다
아래와 같이 실행하면 된다
   [root root]# wget http://gaul.isi.edu/mcs/v2/mcsschema.txt
   [root root]# mysql -uroot < mcsschema.txt

MySQL 의 DBA 유저인 root 가 아닌 MCS 를 위한 새로운 유저을 하나 만든다
현재 MySQL 에 접속해 있다면 다음과 같이 하여 database 를 mysql 로 변경한다
mysql database 는 MySQL 자체를 관리하기 위한 database 로 user 테이블에 유저을 insert 하여 새로운 유저를
만들 수 있다. 아래는 localhost 에서 접속하는 mcs/mcs 유저를 만드는 것이다
   mysql> use mysql;
   mysql> insert into user
       -> (host,user,password,
       -> Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv,
       -> Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
       -> Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv)
       -> values ('localhost', 'mcs', password('mcs'),
       -> 'Y','Y','Y','Y','Y','Y','Y',
       -> 'Y','Y','Y','Y','Y','Y','Y',
       -> 'Y','Y','Y','Y','Y','Y','Y');
   Query OK, 1 row affected (0.00 sec)

만약 원격으로 MySQL 서버에 접속하려면 접근할 IP를 host 로 하여 유저을 추가 등록하여야 한다
아래는 예제로 IP '211.204.10.72' 에서 mcs/mcs 로 MySQL 서버에 접근함을 허락하는것이다  
   mysql> insert into user
       -> (host,user,password,
       -> Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv,
       -> Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
       -> Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv)
       -> values ('211.204.10.72', 'mcs', password('mcs'),
       -> 'Y','Y','Y','Y','Y','Y','Y',
       -> 'Y','Y','Y','Y','Y','Y','Y',
       -> 'Y','Y','Y','Y','Y','Y','Y');
   Query OK, 1 row affected (0.00 sec)

잘 들어갔는지 다음과 같이 확인한다
   mysql> select host, user, password from user;
   +----------------------+------+-----------------------------------------------+
   | host                 | user | password                                      |
   +----------------------+------+-----------------------------------------------+
   | localhost            | root |                                               |
   | localhost            |      |                                               |
   | myhome.ssu.ac.kr     | root |                                               |
   | myhome.ssu.ac.kr     |      |                                               |
   | localhost            | mcs  | *64bca9a399a9bd47c56eaf65b6707a3fa3f5ea7d3e41 |
   | 211.204.10.72        | mcs  | *52d3de87ce3911963c9a013706e6ed11b8b2d1910687 |
   +----------------------+------+-----------------------------------------------+
   6 rows in set (0.00 sec)

지금까지 root 라는 유저은 비밀번호없이 MySQL 에 접근했는데 위와 같이 root 생성시 비밀번호가 없이
만들어졌기 떄문이다

그 다음 이 사용자가 접근할 수 있는 database 를 지정해야 한다
아래는 mcs_2 라는 database 를 mcs 유저가 접근할 수 있도록 권한값 지정하는 것이다
   mysql> insert into db
       -> (host, db, user,
       -> Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv,
       -> Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv)
       -> values ('%', 'mcs_2', 'mcs',
       -> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
   Query OK, 1 row affected (0.00 sec)
  
mysql 의 유저 환경이 변경되었으므로 reload 시킨다  
   [root root]# mysqladmin -uroot reload
  
방금 만든 mcs 유저로 mcs_2 데이터베이스에 접속해서 스크립트에 위해 생성된 테이블을 본다
   [root root]# mysql -umcs -pmcs mcs_2
  
   mysql> show tables;
   +------------------------------+
   | Tables_in_mcs_2              |
   +------------------------------+
   | mcs_annotations              |
   | mcs_audit                    |
   | mcs_coll_date_attributes     |
   | mcs_coll_datetime_attributes |
   | mcs_coll_float_attributes    |
   | mcs_coll_int_attributes      |
   | mcs_coll_spatial_attributes  |
   | mcs_coll_string_attributes   |
   | mcs_coll_time_attributes     |
   | mcs_collection               |
   | mcs_creation_log             |
   | mcs_data_permissions         |
   | mcs_external_catalogs        |
   | mcs_file_date_attributes     |
   | mcs_file_datetime_attributes |
   | mcs_file_float_attributes    |
   | mcs_file_int_attributes      |
   | mcs_file_spatial_attributes  |
   | mcs_file_string_attributes   |
   | mcs_file_time_attributes     |
   | mcs_logical_file             |
   | mcs_view                     |
   | mcs_view_date_attributes     |
   | mcs_view_datetime_attributes |
   | mcs_view_float_attributes    |
   | mcs_view_int_attributes      |
   | mcs_view_mappings            |
   | mcs_view_spatial_attributes  |
   | mcs_view_string_attributes   |
   | mcs_view_time_attributes     |
   | mcs_writer                   |
   | mcs_xml_data                 |
   | mcs_xml_path                 |
   +------------------------------+
   33 rows in set (0.01 sec)  
  
6.MCS 설치
mcs.tar.gz 을 /usr/local 아래에 설치한다
아래와 같이 설치한다면 /usr/local/mcs 디렉토리가 생성된다
   [root root]# tar xvfz mcs.tar.gz -C /usr/local

MCS 를 설치한 디렉토리로 이동하여 setenv.sh 을 수정한다
(맨 위줄의 MCS_HOME='pwd' 를 MCS_HOME=/usr/local/mcs 로만 바꾸도 저장한다)
   [root root]# cd /usr/local/mcs
   [root mcs]# vi setenv.sh
   MCS_HOME=/usr/local/mcs
   ...
  
이 setenv.sh 를 로그인 때마다 실행할 수 있도록 .bash_profile 에 다음을 등록한다
   . /usr/local/mcs/setenv.sh

MCS 의 lib 로 이동하여 어떤 파일들이 있는지 본다
   [root root]# cd /usr/local/mcs/lib
   [root lib]# ls -la

lib 디렉토리에서 다음 4개의 파일을 제외한 나머지 파일들을 삭제한다
(이유는 mcs.tar.gz 에 axis, xerces 가 함께 들어있는데 오래된 버전이며 위에서 이미 최신판을 설치했다)
   java-getopt-1.0.9.jar
   mcs.jar
   mysql-connector-java-3.0.8-stable-bin.jar
   ogsadai.jar

위 lib 의 4개 파일을 모두 tomcat 의 webapps/axis/WEB-INF/lib 로 이동 시킨다
   [root lib]# mv * /usr/java/jakarta-tomcat-4.1.27/webapps/axis/WEB-INF/lib

tomcat 의 webapps/axis/WEB-INF/lib 의 모든 파일을 mcs 의 lib 로 복사한다
   [root lib]# cp /usr/java/jakarta-tomcat-4.1.27/webapps/axis/WEB-INF/lib/* /usr/local/mcs/lib

MCS 의 etc 로 이동하여 mcs.properties 파일을 아래처럼 수정한다
이것은 접속하려는 tomcat 주소와 MySQL 정보이다
   [root root]# cd /usr/local/mcs/etc
   [root etc]# vi mcs.properties
   mcs_host = localhost
   mcs_port = 8080  
   mysql_host = localhost
   mysql_user = mcs
   mysql_pass = mcs
   mysql_database = mcs_2
   mysql_port = 3306

방금 수정한 mcs.properties 파일을 tomcat 의 conf 파일로 복사한다
   [root etc]# cp mcs.properties /usr/java/jakarta-tomcat-4.1.27/conf

MCS 의 etc 에 있는 deploy.wsdd 파일을 아래처럼 수정한다
(value="conf/MCS.bindas" 을 찾아 value="conf/mcs.properties" 로 수정하는것이다)
   [root etc]# vi deploy.wsdd
   <parameter name="PropertyFilePath" value="conf/mcs.properties"/>

MCS 의 setenv.sh 를 실행하여 CLASSPATH 를 설정한다
   [root etc]# source /usr/local/mcs/setenv.sh

tomcat 이 종료되어 있다면 다시 실행시킨다
   [root etc]# $CATALINA_HOME/bin/startup.sh

MCS 를 아래와 같이 tomcat 의 axis 윕서비스로 deploy 시킨다  
   [root etc]# java org.apache.axis.client.AdminClient
   -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd
   Processing file deploy.wsdd
   <Admin>Done processing</Admin>
  
다시 http://localhost:8080/axis/index.html 를 방문하여 "View the list of deployed Web services"
부분을 클릭해본다. 좀전에 deploy 시킨 MCS 윕서비스와 그것의 메소드 리스트가 추가되어 보일것이다
  .AdminService (wsdl)
    AdminService
  .Version (wsdl)
    getVersion  
  .MetaDataCatalogService (wsdl)
    mdcGetAttributes
    mdcGetUserAttributes
    mdcQuery
    mdcList
    mdcParent
    mdcCreate
    mdcModifyAttributes
    mdcModifyXML
    mdcDelete
    mdcAnnotate
    mdcAuthorize
    mdcViewAdd
    mdcCollAdd
    mdcGetXML
    mdcCreateDB  
참고로 undeploy 시키려면 아래와 같이 하면 된다
   [root etc]# java org.apache.axis.client.AdminClient
   -lhttp://localhost:8080/axis/services/AdminService undeploy.wsdd
      
7.MCS command line 명령어 테스트
logical file 생성
   [root root]# java -Dmcs.home=/usr/local/mcs org.globus.mcs.client.noweb.toolkit.create -l lfn0
  
logical file 리스트 보기
   [root root]# java -Dmcs.home=/usr/local/mcs org.globus.mcs.client.noweb.toolkit.list -l

logical file 에 user defined attribute 추가하기
   [root root]# java -Dmcs.home=/usr/local/mcs org.globus.mcs.client.noweb.toolkit.add_att -l lfn0 location string seoul
  
logical file 의 모든 attributes 보기
   [root root]# java -Dmcs.home=/usr/local/mcs org.globus.mcs.client.noweb.toolkit.listattributes -l lfn0

logical file 의 특정 attribute 로 검색하기
   [root root]# java -Dmcs.home=/usr/local/mcs org.globus.mcs.client.noweb.toolkit.query -l location string seoul
  
logical file 삭제
   [root root]$ java -Dmcs.home=/usr/local/mcs org.globus.mcs.client.noweb.toolkit.delete -l lfn0
  
8.MCS 예제소스 테스트
첨부한 소스파일(MCSdemo.java)을 임의의 디렉토리에서 컴파일하여 실행해본다
   [root root]# javac MCSdemo.java
   [root root]# java -Dmcs.home=/usr/local/mcs MCSdemo
  
* MCS 는 원래 윕서비스 형태로 운영되어야 하는데 설치문서를 만들 당시까지도 성공하지 못했습니다
위의 예제도 noweb 만 실행하는 이유가 web 부분은 NullPoint Exception 이 발생하여 테스트 해보지
못했기 때문입니다. mcs 배포 사이트에 있는 메일로 문의를 하면 답변을 잘 주기는 하나 자세한
설명이 없어 tomcat 의 환경설정 문제인지 mcs 의 문제인지는 판단할 수 없었습니다
혹시 mcs 를 web 으로 실행하는데 성공하신 분이 계시다면 저에게도 한수 가르침을 주세요...^^






4   [GRID] [강좌] GridFTP 를 xinetd 서비스로 등록하여 사용하기  김영대 2003/12/02 6617 1773
  [GRID] [강좌] Metadata Catalog Service (MCS) 설치  김영대 2003/11/29 6202 1542
2   [GRID] [강좌] Replica Location Service (RLS) 설치  김영대 2003/11/29 6138 1609
1   [GRID] [강좌] Globus Toolkit 3.0.2 + SimpleCA 설치  김영대 2003/11/27 6450 1140

1
 

Copyright 1999-2017 Zeroboard / skin by zero