辞書サーバ

EBNETD を用いて辞書サーバを構築する.

Red Hat Linux 9 にインストール.

EB ライブラリのインストール

EBNETD は辞書にアクセスするために EB ライブラリを使うので, EB ライブラリをインストールする.

$ cd
$ wget ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.0.tar.gz
$ cd /usr/local/src
$ tar zxvf ~/eb-4.0.tar.gz
$ cd eb-4.0
$ ./configure
$ make
# make install

EBNETD のインストール

$ cd
$ wget ftp://ftp.sra.co.jp/pub/misc/eb/ebnetd-1.0.tar.gz
$ cd /usr/local/src
$ tar zxvf ~/ebnetd-1.0.tar.gz
$ cd ebnetd-1.0
$ ./configure
$ make
# make install
# groupadd ndtpgrp
# useradd -g ndtpgrp ndtpuser
# mkdir /usr/local/var/ebnetd
# chown ndtpuser:ndtpgrp /usr/local/var/ebnetd
# chmod 755 /usr/local/var/ebnetd

ebnetd.conf の設定

設定ファイルのサンプルが /usr/local/etc/ebnetd.conf.sample にインストールされているので,これをコピー.

# cp /usr/local/etc/ebnetd.conf.sample /usr/local/etc/ebnetd.conf

ebnetd.conf の編集.

同時にアクセスできるクライアントの数を設定.

max-clients    20

アクセスを許可するホストの設定.

hosts    127.0.0.1
hosts    192.168.1.0/24

辞書として英辞郎を使うための設定.

begin book
    name   eijiro
    title  eijiro
    path   /usr/local/share/dic/eijiro
    max-clients 10
    hosts  127.0.0.1
    hosts  192.168.1.0/24
end

編集した ebnetd.conf のチェック.

# ebncheck

/etc/services の設定

ebnet と ndtp で使用するポートの設定をする. /etc/services に以下を追加.

ndtp    2010/tcp
ebnet   22010/tcp

/etc/syslog.conf の設定

辞書サーバのアクセスログを取る設定. /etc/syslog.conf に以下を追加.

local0.info    /usr/local/var/ebnetd/log/ebnetd.log

ログファイルの作成とアクセス権設定.

# mkdir -p /usr/local/var/ebnetd/log
# touch /usr/local/var/ebnetd/log/ebnetd.log
# chmod 644 /usr/local/var/ebnetd/log/ebnetd.log

syslog をリスタートさせる.

# service syslog restart

設定が反映されているかどうかテスト.

# logger -p local0.info "test message"

うまくいっていれば, /usr/local/var/ebnetd/log/ebnetd.log にログが残っている.

xinetd の設定

スタンドアローンではなく,xinetd 経由で起動するための設定.

/etc/xinetd.d/ebnet を以下の内容で作成.

# default: off
# description: The ebnet server
service ebnet
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/local/sbin/ebnetd
        server_args     = --inetd
        log_on_failure  += USERID
}

/etc/xinetd.d/ndtp を以下の内容で作成.

# default: off
# description: The ndtp server
service ndtp
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/local/sbin/ndtpd
        server_args     = --inetd
        log_on_failure  += USERID
}

設定を反映させるため,xinetd をリスタート.

# service xinetd restart

起動チェック

telnet を用いて ebnet への接続テスト.

$ telnet localhost ebnet
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

BOOKLIST と入力.

BOOKLIST
!OK; book names and an empty line follows
eijirou eijirou

QUIT と入力.

QUIT
Connection closed by foreign host.

telnet を用いて ndtp への接続テスト.

$ telnet localhost ndtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

t と入力.

t
1       英辞郎  eijirou/eijiro  0       10      900
2       和英辞郎        eijirou/waeiji  0       10      900
3       略語郎  eijirou/ryaku   0       10      900
4       音辞郎  eijirou/otojiro 0       10      900
5       凡例    eijirou/hanrei  0       10      900
$*

Q と入力.

Q
Connection closed by foreign host.

ログの管理

アクセス毎に増え続けるログを1日単位で回転させ, 古いものは削除する.

/etc/cron.daily/ebndaily を以下の内容で作成.

#!/bin/sh
/usr/local/sbin/ebndaily -l /usr/local/var/ebnetd/log/ebnetd.log root@localhost

-l オプションでログの場所を指定しないと, /usr/local/var/ndtpd/log/ebnetd.log にログを読みに行きエラーになる.

実行可能にしておく.

# chmod 755 /etc/cron.daily/ebndaily

参考リンク


viusulce@hotmail.com
Last modified: Sat Apr 24 10:41:00 JST 2004