Administrator's Manual

  1. RemoteClientのインストール

    1. 前提条件
    2. Windows端末へのインストール (KRPのデフォルト設定を利用)
    3. Unix端末へのインストール (KRPデータセンタのUnixクラスタへのインストール)
    4. Windows端末へのインストール (詳細)
    5. Unix端末へのインストール (詳細)

  2. コンパイル端末の設定

    1. 役割
    2. cvs pserverの許可
    3. ssh agentの設定
    4. build.xmlの編集
    5. scpの設定

役割

  1. 下記役割用のコンパイル端末を1台定義します。


  2. RemoteGUIからupdate命令があると、まずコンパイル端末が動作し、
    その後各ワーカがモジュール配布用ディレクトリから自分の端末にモジュールコピーを行います。

cvs pserverの許可 (cvs接続にsshを使っている場合のみ追加設定する)

  1. コンパイル端末からanonymous pserverでモジュールをダウンロードできるようcvsサーバの設定を変更します。

  2. cvsサーバにログインします。

  3. /etc/servicesにポートの記載があるか確認します。

    (注意)デフォルトポートは2401ですが、他のポートに変更した方がセキュリティー上安全です。
    その場合は、"2401"を違う数字に置き換えて設定してください。
    # vi /etc/services
    cvspserver      2401/tcp                        # CVS client/server operations
    cvspserver      2401/udp                        # CVS client/server operations

  4. ポートを許可し、サービスを再起動します。

    (注意)-s 10.225.135.130でpserverを許可する端末を限定しています。
    # vi /etc/sysconfig/iptables
    -A RH-Firewall-1-INPUT -s 10.225.135.130 -p tcp -m state --state NEW -m tcp --dport 2502 -j ACCEPT
    -A RH-Firewall-1-INPUT -s 10.225.135.130 -p udp -m state --state NEW -m udp --dport 2502 -j ACCEPT
    # service iptables restart
    # service network restart
  5. anonymous用のユーザアカウント"anocvs"を作成します。
    # smbldap-useradd.pl -N "Anonymous CVS" -d /home/anocvs -g 1000 -u 20005 -a -P anocvs
  6. inetd.dに設定を追加します。
    # vi /etc/xinetd.d/cvspserver
    service cvspserver
    {
      port                = 2401
      socket_type         = stream
      protocol            = tcp
      wait                = no
      user                = root
      passenv             =
      server              = /usr/bin/cvs
      server_args         = -f --allow-root=/pub/cvsroot pserver
    }
    複数リポジトリをpserverで使う場合は、server_argsを下のように設定します。
    server_args         = -f --allow-root=/pub/cvsroot --allow-root=/home/kasakura/cvsroot pserver
  7. /pub/cvsroot/CVSROOTのパスワードファイルを設定します。

    複数リポジトリをpserver接続する場合は、それぞれのリポジトリに対して同様の設定を行います。
    # vi /pub/cvsroot/CVSROOT/passwd
    anonymous::anocvs
  8. readersを設定し、読み取り専用にします。
    # vi /pub/cvsroot/CVSROOT/readers
    anonymous
  9. 最後にサービスを再起動します。
    # service xinetd restart
  10. コンパイル端末にログインしanonymous pserverでチェックアウトできるかテストしてください。
    $ cd /tmp
    $ cvs -d :pserver:anonymous@krpsvr.off.biosim.med.kyoto-u.ac.jp:2401/pub/cvsroot checkout simBio_private

ssh agentの設定

  1. ワーカ配布用のコンパイル済みモジュールを、コンパイル端末とは異なる別の端末に保存する場合、
    端末間でモジュールをコピーする必要があります。

    ディスクを共有している場合は、cpコマンドで動作しますが、
    共有していないディスクにコピーする場合、scpの利用が考えられます。

    下記は、パスワードを使わないでscpコピーする設定方法です。

  2. コピー先の端末にログインし、鍵を生成します。
    ログインユーザは管理用アカウントを使用し、このユーザ名で端末間のコピーを行います。
    鍵作成時にパスフレーズの入力を問われるので4文字以上の適当な値を設定してください。
    $ ssh-keygen -t rsa
  3. $HOME/.ssh/ディレクトリに秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が作成されていることを確認してください。
    $ cd ~/.ssh/
    $ ls -la
    -rw-------  1 jsadmin biosim  951  5月  9 09:56 id_rsa
    -rw-r--r--  1 jsadmin biosim  249  5月  9 09:56 id_rsa.pub
    
  4. 公開鍵を~/.ssh/authorized_keysに追加し、パーミッションを600に変更します。
    $ cd ~/.ssh/
    $ cat id_rsa.pub >> ~/.ssh/authorized_keys
    $ chmod 600 ~/.ssh/authorized_keys
    
  5. id_rsaをコンパイル端末に転送します。

  6. コンパイル端末に管理用アカウントでログインします。

  7. ssh-agentを起動し、秘密鍵を登録します。
    $ eval `ssh-agent`
    $ ssh-add id_rsa
    
  8. scpでファイルコピーを確認します。 初めの一回は接続確認がありますが、2回目から不要です。
    $ scp test.txt jsadmin@remotehost:/home/jsadmin

build.xmlの編集

  1. RemoteGUIのupdate実行時に呼ばれるスクリプトがcvsUpdate.sh(System.propertiesに定義)です。
    RemoteClientパッケージのsrc/main/resources/org/simBio/tools/remoteにあります。

  2. cvsUpdate.shでは大きく2つのことを行っており、
    1つめはantのbuild.xmlを使ったcvsからのチェックアウトと、コンパイル
    2つめはコンパイル済みモジュールの保存用ディレクトリへのscpコピーです。

  3. cvsUpdate.shを開いてもらうとわかるように、
    antのビルドファイルは$SIMBIO_HOME/bin/build.xmlで、ターゲットは"update"です。
    #!/bin/sh
    ...
    ant -f $SIMBIO_HOME/bin/build.xml update
  4. RemoteClientパッケージのsrc/main/resources/org/simBio/tools/remoteのbuild.xmlを開きます。
    updateターゲットでは、depends="cvs"となっているので、updateターゲット内の命令が実行される前にcvsターゲットが実行されます。
    <target name="update"
      depends="cvs"
      description="compile and copy to output folder">
  5. cvsターゲットではpserverを使ったcvsサーバからのチェックアウトを行っています。

    具体的にはantcallでcvsupdateというターゲットをチェックアウトしたいプロジェクトごとに呼び出しています。
    paramタグは呼び出し時の引数で、cvs.rootがcvsサーバのホスト名とリポジトリを指し、
    cvs.targetはプロジェクト名を表しています。
    <antcall target="cvsupdate"
      description="build simBio_private">
      <param name="cvs.root"
        value=":pserver:anonymous@192.168.0.2:/pub/cvsroot" />
      <param name="cvs.target"
        value="simBio_private" />
    </antcall>
    
  6. cvsからチェックアウトしたソースを保存する場所はcvs.destで定義されています。
    <property name="cvs.dest" value="/data/simbio/cvswork" />
  7. updateターゲットではantcallでbuildターゲットをプロジェクトごとに呼び出しています。
    引数は2つあり、java.dirでjavaソースのルートディレクトリを定義しています。
    lib.dirはjarファイルなどライブラリがあるディレクトリです。
    <antcall target="build">
      <param name="java.dir"
        value="${cvs.dest}/JavaSpace/src/main/java" />
      <param name="lib.dir"
        value="${cvs.dest}/JavaSpace/lib" />
    </antcall>
  8. コンパイル済みのモジュールはinstall.dirで定義されるディレクトリに保存されます。 *.classファイルはclassesフォルダに、*jarはlibフォルダに保存されます。
    <property name="install.dir" value="/data/simbio" />

scpの設定

  1. scpを使ったコピーはcvsUpdate.shの後半で行っています。
    $CLASSDIRはantの${install.dir}/classesと同じにし、$LIBDIRは${install.dir}/libと同じにします。

    $USERは管理用アカウント
    $HOSTはコピー先のホスト名
    $DESTINATIONはコピー先のディレクトリ
    です。これらは、deploy.batで定義されるコピー元になります。
    #!/bin/sh
    ...
    eval `ssh-agent`
    ssh-add /data/simbio/.ssh/id_rsa
    scp -p -r $CLASSDIR $USER@$HOST:$DESTINATION
    scp -p -r $LIBDIR $USER@$HOST:$DESTINATION
    eval `ssh-agent -k`