Domino on FC6

出典: Fukudat

Lotus Domino Server 7.0.2 を Fedora Core 6 (FC6) で動かすまでのメモ. 実行時のLinuxは (uname -rm = kernel 2.6.20-1.2948.fc6 i386) であった.

目次

準備

(1) インストーラーを起動するために足りなかった以下のパッケージを追加導入する.

  • compat-libstdc++-33
  • compat-libstdc++-296
  • libXp

yum を使う場合,

$ sudo yum install compat-libstdc++-33 compat-libstdc++-296 libXp

でOK.

(2) ノーツを実行するユーザを作成しておく.

$ sudo adduser -r notes

設定のときにログインするので,パスワードをつけておこう.

$ sudo passwd notes

(3) 本当に必要かどうかわからないが,/etc/security/limits.conf を編集して,notes が開くことのできるファイル数の上限を 20000 まで増やす. 次の行を加えればよい.

notes           -       nofile          20000

インストール

インストールメディアに入っている install スクリプトを root で実行する.

$ sudo path/to/linux/domino/install

あとは,いくつか質問に次のキーで答えてゆけばよい.

  • TAB (提示されたオプションを受け入れて先に進む場合)
  • SPACE (提示されたオプションを変更する場合)
  • RETURN (ユーザ名やインストールパスなど,設定値をタイプインする必要がある場合)
  • ESC (前のページに戻る場合)

ここでは,program directory を /opt/ibm/lotus (デフォルトのまま)に設定し,data directory を /home/notes/data (デフォルトは /local/notes/data)とした.

しばし待つと、インストール(というかファイルの展開)が終わる.

初期化

ファイルの展開が終わると,「notes でログインして /home/notes/data ディレクトリに移動し,/opt/ibm/lotus/bin/server コマンドを起動して設定せよ」というようなメッセージが出てくる.その通り実行するのだが,ちょっとだけおまじないが必要.

$ xhost +                    # セットアップがウィンドウを開く許可を与える
$ su - notes                 # notes ユーザに切り替え
$ cd /home/notes/data        # データディレクトリに移動
$ export DISPLAY=:0.0        # DISPLAY変数をセット
$ export LANG=ja_JP.UTF-8    # これがないと,セットアップの終盤でSEGVを喰らう
$ /opt/ibm/lotus/bin/server  # セットアップを起動

すると,ノーツのロゴウィンドウに引き続き,初期設定のウィザードが立ち上がる.指示に従って先に進めば完了.

もし途中で失敗するようであれば,データディレクトリにある notes.ini をそのバックアップ (notes.ini.数字) から復元してやれば,何度でもやり直せる.

うまくいったら,今度は同じ手順でサーバーを起動する.(後でboot時に自動で起動する方法を示すが,ここは手動で起動する方法)

$ cd /home/notes/data        # データディレクトリに移動
$ export LANG=ja_JP.UTF-8    # たぶん必要
$ /opt/ibm/lotus/bin/server  # サーバーを起動.セットアップと同じコマンド.

サーバーを終了するには,サーバーを起動した端末で exit または quit とタイプインする.

設定

PC にインストールされている Lotus Domino Administrator を使って設定を行う.手順は次の通り.

  1. サーバーの管理者idファイル(admin.id)と認証者idファイル(cert.id)をそのPCのノーツデータディレクトリコピーしておく.
  2. Lotus Domino Administrator を起動
    • File->Security->Switch ID でユーザIDを admin.id に切り替える.
    • File->Open Serverで,設定したいノーツサーバーを開く
  3. 普段使っているノーツIDをCertifyして,このサーバーで使用できるようにする.
    • Configurationタブ->右のTools中のCertifyを選択.
    • Certifiyer IDボタンを選んで,サーバーのcert.idを指定.OKを押してパスワードを入力.
    • 次に,普段使っているノーツidファイルを選ぶ.
  4. 最後に,このサーバーの管理者権限を普段使っているノーツidに付与する.
    • サーバーのdirectoryDB (names.nsf) を開く.
    • All Server Documentsビューにあるこのサーバーのサーバー文書を開く.
    • Securityタブを開き,Administrators の欄に普段使っているノーツユーザを入力する.

以上

デーモン化

サーバの起動・停止をスクリプト化しておく.

次の内容のファイルを /home/notes/bin/start-server におく.chmod +x するのを忘れずに.

#!/bin/sh

NOTES_USER=notes
NOTES_DATA_PATH=/home/notes/data
NOTES_PROG_PATH=/opt/ibm/lotus/bin

OUTPUT_LOG=/var/log/notes/$NOTES_USER.log
PATH=$PATH:$NOTES_DATA_PATH:$NOTES_PROG_PATH
LANG=ja_JP.UTF-8
export LANG

start() {
    if [ `id -u` = 0 ]
    then
        echo "Run the Domino Server as the notes user ($NOTES_USER)"
    exit 1
    fi

    if [ ! -x $NOTES_PROG_PATH/server ]
    then
        echo "Notes: Cannot access server command - exiting"
    exit 1
    fi

    if [ ! -d $NOTES_DATA_PATH ]
    then
        echo "Notes: Cannot access notes data directory - exiting"
    exit 1
    fi

    cd $NOTES_DATA_PATH

    if [ -a $OUTPUT_LOG ]
    then
        cp -p $OUTPUT_LOG $OUTPUT_LOG.`date +"%m%d%y_%H%M"`
    fi
    mkdir -p `dirname $OUTPUT_LOG`

    echo "Starting Domino 5 server ... "
    $NOTES_PROG_PATH/server < passwd > $OUTPUT_LOG 2>&1 &

    exit 0
}

stop() {
    echo "Stopping the Domino 5 Server for Linux"
    echo " ... waiting for shutdown to complete"

    cd $NOTES_DATA_PATH
    $NOTES_PROG_PATH/server -q < passwd > /dev/null 2>&1 &

    count=0
    NOTES_RUNNING=`ps -ef | grep /opt/ibm/lotus | grep -v grep`

    while [ -n "$NOTES_RUNNING" ] ; do
        sleep 10
        count=`expr $count + 1`
        echo " ... waiting "$count"0 seconds"

        if [ $count = 7 ]
        then
            echo "Domino Server is still running after 1 minute"
            echo " ... now for the ungraceful method"
            for i in `ps -ef | grep /opt/ibm/lotus | grep -v grep | awk '{ print $2 }'` do
                kill -9 $i
            done

            echo " ... Notes server TERMINATED"
            exit 
        fi

        NOTES_RUNNING=`ps -ef | grep /opt/ibm/lotus | grep -v grep`
    done

    echo "Notes server ended cleanly" 
    exit 0 
}

usage() {
    echo "This command should be named either \"start-server\" or \"stop-server\ "."
    echo "Exiting."
    exit 1
}

cmd=`basename $0`
case "$cmd" in
start-server)
    start;;
stop-server)
    stop;;
*)
    usage;;
esac

/home/notes/bin/stop-server としてもリンクしておく.

$ cd /home/notes/bin
$ ln start-server stop-server

これでノーツユーザで start-server, stop-server を実行すれば,ノーツサーバーの起動・停止ができる. 試しておこう.

$ su - notes                   # ノーツユーザに変身
$ /home/notes/bin/start-server # サーバーを起動
$ /home/notes/bin/stop-server  # サーバーを停止

次に、/etc/rc.d/init.d/domino 登録するスクリプトを用意する.

#!/bin/sh
. /etc/rc.d/init.d/functions

NOTES_PROG_PATH=/opt/ibm/lotus/bin
NOTES_DATA_PATH=/home/notes/data
NOTES_SCRIPT_PATH=/home/notes/bin

case "$1" in
start)
    echo -n "Starting Lotus Domino server: "
    if [ -d $NOTES_DATA_PATH -a -f $NOTES_PROG_PATH/server ] ; then
        su notes -c $NOTES_SCRIPT_PATH/start-server
    fi 
    touch /var/lock/subsys/domino
;;
stop)
    echo -n "Shutting down Lotus Domino server: "
    su notes -c $NOTES_SCRIPT_PATH/stop-server
    rm -f /var/lock/subsys/domino
    echo
;;
restart|reload)
    $0 stop
    $0 start
;;
*)
    echo "Usage: notes {start|stop|restart|reload}"
    exit 1
esac

exit 0

うまく動くかどうか試してみよう.

$ sudo /sbin/service domino start
$ sudo /sbin/service domino restart
$ sudo /sbin/service domino stop

うまく動いたら,runlevel を変えたときに動くよう設定しよう.

$ for x in 3 5 ; do
>   (cd /etc/rc.d/rc$x.d; ln -sf ../init.d/domino S99domino)
> done
$ for x in 0 6 ; do
>   (cd /etc/rc.d/rc$x.d; ln -sf ../init.d/domino K99domino)
> done