2014/09/30(火) [n年前の日記]
#1 [vine][linux][hns] OSアップグレード作業中その3
まだまだ作業中。もっとも、この日記ページが見えてるということは、多少問題はありつつも一応そこそこサーバは動いてる、ということでしょうけど…。
◎ swatch。 :
リアルタイムにログを監視して、特定のログ内容が出てきたら何か処理をすることができるツール。
_Simple Log Watcher | SourceForge.net
_【Vine Linuxで自宅サーバー】Swatchで不正アクセス遮断(Swatch+iptables)
_swatchインストール : マロンくん.NET
どうも動いてないような気がするので、一応再インストールすることにした。
必要なモジュールをインストール。他にも必要なものがあるかもしれないけど、よく分かってない。
インストール作業。
/etc/init.d/swatch を作成。サービスとして利用できるようにする。
/etc/swatchrc にルール?を記述。
ftpサーバに、妙なアカウント名でアクセスしてくる相手が多くて…。
_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 がエラーを出す問題をどうにかしたい。
ところで、cpan自体を最新版にできないのだけど…。install CPAN で更新されない。何かエラーが出て止まってる。Vine Linux 6.2.1 の問題なのか、それともOSをアップグレードしてきたことでゴミが残っていて不具合が起きてる…?
◎ Namazu の動作に必要らしいパッケージやモジュールをインストール。 :
apt-get install nkf chasen kakasi mecab namazu namazu-cgi jcode.pl perl-Jcode perl-Unicode-MapUTF8cpan を使って、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した。
インストールする際に、~/.hnssetup の記述に基づいてインストール処理がされるので、メールアドレスその他が以前から変更されてるなら ~/.hnssetup を修正しておくこと。
インストールしたら、~/diary/namazu2 というフォルダが出来て、その中に namazu関係のアレコレが作られた。また、~/diary/bin/ 以下に hns-index2 等のファイルが作成された。
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 を実行すると、以下の警告が出る。
locale -a と打てば、使えるロケールが表示される。やはり "ja" は無い。"ja_JP" や "ja_JP.UTF8" なら使えそう。
_読書(してない)日記 を参考に、hns-index2 内の LC_ALL を指定してるあたりを以下のようにしてみたらエラーが出なくなった。
また、
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 表示に切り替えてどうにか。
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を弄って対応すべき、だよなと。
テンプレートファイルを弄ってもインデックス再作成が必要なのはどうなんだろう。今なら、見た目を変えたいならcssを弄って対応すべき、だよなと。
[ ツッコむ ]
#3 [hns] hnsのキャッシュが作成されない
hns の動作を確認していたら、キャッシュが全然作られないことに気付いた。
正確には、アクセスがあった時に一瞬キャッシュを作るけど、その直後に、年別フォルダも含めてキャッシュを全消去してるようで。config.ph の $CacheLog = "OFF"; を $CacheLog = "ON"; に変更して ~/diary/log/cache_log を眺めてみたら、以下のような記述があって。
~/diary/cache/ のパーミッションやオーナーがおかしいのかと色々変更してみたけど改善せず。
仕方ないので、config.ph を修正して、$AutoCacheClear = 1; を $AutoCacheClear = 0; に変更。これなら一応キャッシュは残し続けてくれるようだけど…。
どうも lib/HNS/Cache.pm 内の AutoClear() が呼ばれるたびに、$dirty に 1 が入って、Clear() が呼ばれてしまうように思える。どこで異常動作してるのだろう?
正確には、アクセスがあった時に一瞬キャッシュを作るけど、その直後に、年別フォルダも含めてキャッシュを全消去してるようで。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 日分です。