mieki256's diary



2014/09/30(火) [n年前の日記]

#1 [vine][linux][hns] OSアップグレード作業中その3

まだまだ作業中。もっとも、この日記ページが見えてるということは、多少問題はありつつも一応そこそこサーバは動いてる、ということでしょうけど…。

swatch。 :

リアルタイムにログを監視して、特定のログ内容が出てきたら何か処理をすることができるツール。

_Simple Log Watcher | SourceForge.net
_【Vine Linuxで自宅サーバー】Swatchで不正アクセス遮断(Swatch+iptables)
_swatchインストール : マロンくん.NET

どうも動いてないような気がするので、一応再インストールすることにした。

必要なモジュールをインストール。他にも必要なものがあるかもしれないけど、よく分かってない。
apt-get install perl-Time-modules perl-TimeDate perl-Date-Calc perl-DateTime perl-File-Tail jwhois
cpan
install Bit::Vector
install Date::Calc
install File::Tail
install Time::HiRes
install Date::Parse

インストール作業。
wget http://downloads.sourceforge.net/swatch/swatch-3.2.3.tar.gz
tar zxvf swatch-3.2.3.tar.gz
cd swatch-3.2.3
perl Makefile.PL
make
make test
make install
/usr/bin/swatch にインストールされた模様。

/etc/init.d/swatch を作成。サービスとして利用できるようにする。
#!/bin/sh
#
# chkconfig: 2345 42 42
# description: monitaring logs tool.

[ -f /usr/bin/swatch ] || exit 0
[ -f /etc/swatchrc ] || exit 0

. /etc/rc.d/init.d/functions

RETVAL=0
SWATCH_SCRIPT="/var/run/swatch"

# See how we were called.
case "$1" in
  start)
        # Start daemons.
        echo -n "Starting swatch: "
        /usr/bin/swatch -c /etc/swatchrc -t /var/log/messages --script-dir=$SWATCH_SCRIPT >/dev/null 2>&1 &
        RETVAL=$?
        echo
        ;;

  stop)
        # Stop daemons.
        echo -n "Shutting down swatch: "
        killproc tail
        RETVAL=$?
        echo
        ;;

  restart)
        $0 stop
        $0 start
        RETVAL=$?
        ;;

  status)
        status swatch
        ;;

  *)
        echo "Usage: swatch {start|stop|restart|status}"
        exit 1
esac

exit $RETVAL
/usr/bin/swatch -c /etc/swatchrc -t /var/log/messages の部分で、
  • /usr/bin/swatch を起動せよ。
  • 監視ルールは /etc/swatchrc に書かれてる。
  • /var/log/messages を監視せよ。
と指定してる。

/etc/swatchrc にルール?を記述。
watchfor /\[(\d+\.\d+\.\d+\.\d+)\]\) - Maximum login attempts/
        mail=root,subject=swatch(Maximum login attempts)
        exec /bin/echo in.proftpd: $1 >> /etc/hosts.deny

watchfor /\[(\d+\.\d+\.\d+\.\d+)\]\) - USER admin/
        mail=root,subject=swatch(USER admin login failure)
        exec /bin/echo in.proftpd: $1 >> /etc/hosts.deny
上記の記述で、 /var/log/messages に、
[192.168.1.21]) - Maximum login attempts
とか
[192.168.1.21]]) - USER admin
てな感じの記録がされたら、該当IPを hosts.deny に追加することでアクセス拒否する。ついでに、root宛てに処理をした旨のメールを送る。

ftpサーバに、妙なアカウント名でアクセスしてくる相手が多くて…。

#2 [hns] Namazu for HNS のエラー

~/diary/bin/hns-index2 がエラーを出す問題をどうにかしたい。

Namazu の動作に必要らしいパッケージやモジュールをインストール。 :

apt-get install nkf chasen kakasi mecab namazu namazu-cgi jcode.pl perl-Jcode perl-Unicode-MapUTF8
cpan を使って、Text:Kakasi もインストールする。
cpan
install Text::Kakasi
quit

ところで、cpan自体を最新版にできないのだけど…。install CPAN で更新されない。何かエラーが出て止まってる。Vine Linux 6.2.1 の問題なのか、それともOSをアップグレードしてきたことでゴミが残っていて不具合が起きてる…?

Namazu v2 for hns を再インストール。 :

_Namazu v2 for hns による日記の全文検索 で説明されてる手順に従って、ホームディレクトリに再インストールする。今回は以下をDLした。
namazu-2.0.21.tar.gz
namazu_for_hns-2.0-pl5.tar.gz

インストールする際に、~/.hnssetup の記述に基づいてインストール処理がされるので、メールアドレスその他が以前から変更されてるなら ~/.hnssetup を修正しておくこと。

インストールしたら、~/diary/namazu2 というフォルダが出来て、その中に namazu関係のアレコレが作られた。また、~/diary/bin/ 以下に hns-index2 等のファイルが作成された。

LC_ALLの問題。 :

hns-index2 を実行すると、以下の警告が出る。
sh: warning: setlocale: LC_ALL: cannot change locale (ja)
"ja" というロケールは存在しないのに、ソレを LC_ALL に設定しようとしてるので、警告がでるらしい。

locale -a と打てば、使えるロケールが表示される。やはり "ja" は無い。"ja_JP" や "ja_JP.UTF8" なら使えそう。

_読書(してない)日記 を参考に、hns-index2 内の LC_ALL を指定してるあたりを以下のようにしてみたらエラーが出なくなった。
LC_ALL="ja_JP.UTF8"
export LC_ALL
ただ、~/diary/namazu2/share/namazu/filter/hnf.pl の中で、
$mark = "〜" if util::islang("ja");
という行があるのが気になる。"ja" ならこの処理をする、と書いてあるけど、"ja_JP.UTF8"と比較するからこの処理は通らない。いいのだろうか?

また、
~/diary/bin/.namazurc
~/diary/namazu2/etc/namazu/namazurc
の中で、 Lang ja とうい指定があるのだが、このままでもいいのだろうか…? ここを変えると検索インデックスが正常に作成されないようだし…。

hns-index2を動かすと文字化け。 :

hns-index2 clean を実行するとメッセージがずらずら表示されるけど、あちこち文字化けしてる。Vine Linux の標準文字コードが utf8 なのに、スクリプト側が euc-jp 決め打ちで日本語メッセージを表示してるから、だと思う。

putty や rlogin でサーバにアクセスしてるので、一時的に euc-jp 表示に切り替えてどうにか。

mknmzrc を変更。 :

~/diary/namazu2/etc/mknmzrc を修正して、以下に対応させる。
  • LAN内でも検索結果を使えるようにする。
  • mod_rewrite に対応させる。
$ADDRESS = 'メールアドレス';

$hnf::diary_uri = "";

$hnf::author = 'メールアドレス';

$hnf::link_templ = '%year%month%day.html#%year%month%day0';   # one day

一日中インデックスを再作成。 :

少しファイルを変更するたびに、hns-index2 clean を実行してインデックスを再作成。毎回体感では1時間ぐらいかかってたような。一日中再作成ばかりしていた気がする。

テンプレートファイルを弄ってもインデックス再作成が必要なのはどうなんだろう。今なら、見た目を変えたいならcssを弄って対応すべき、だよなと。

#3 [hns] hnsのキャッシュが作成されない

hns の動作を確認していたら、キャッシュが全然作られないことに気付いた。

正確には、アクセスがあった時に一瞬キャッシュを作るけど、その直後に、年別フォルダも含めてキャッシュを全消去してるようで。config.ph の $CacheLog = "OFF"; を $CacheLog = "ON"; に変更して ~/diary/log/cache_log を眺めてみたら、以下のような記述があって。
[2014/09/30:16:46:48 +0900] clear system
[2014/09/30:16:46:48 +0900] 20000920 miss
[2014/09/30:16:46:50 +0900] clear system
[2014/09/30:16:46:50 +0900] 20080510 miss
[2014/09/30:16:47:03 +0900] clear system
[2014/09/30:16:47:03 +0900] 20110105 miss
[2014/09/30:16:47:07 +0900] clear system
作っては消し、作っては消しを繰り返してるように見える。

~/diary/cache/ のパーミッションやオーナーがおかしいのかと色々変更してみたけど改善せず。

仕方ないので、config.ph を修正して、$AutoCacheClear = 1; を $AutoCacheClear = 0; に変更。これなら一応キャッシュは残し続けてくれるようだけど…。

どうも lib/HNS/Cache.pm 内の AutoClear() が呼ばれるたびに、$dirty に 1 が入って、Clear() が呼ばれてしまうように思える。どこで異常動作してるのだろう?

以上、1 日分です。

過去ログ表示

Prev - 2014/09 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project