サーバの構築記録・日記編 page3
2003.4.6、サーバーメインマシンが壊れてしまいました。
どんな風に壊れたかというと、ハード的な故障は全く見つけられません。
HDDは正常です。
・WEBレスポンスがめちゃくちゃ悪い
・telnet , ssh にはまったく反応しない
・POPにもぜんぜん反応しない
・ローカルコンソールではログイン可能
・pingを飛ばすと、2分後位に反応する
とにかく実用になりません。
乗っ取られた形跡も無いですし・・・・
復旧も試みましたが、ここは潔く、マシンの入れ換えを行いました。
せっかくミラーサーバもあることだし。
その時の手順と、いくつかあった問題を記載しておきます。
まず、構成ですが、メインマシンのIPは 10.0.0.100 でミラーマシンは 10.0.0.101 。
日常的には rsync を用いて、ディレクトリごとミラーリングを行っていました。その操作は以前に記録した通りです。
主にミラーを取っていたのは、/home と /var です。
インストールする必要のあるモジュールはミラーリングでは動作しませんね。
いままでメインマシンにインストールした時に同時にインストールしてきました。
だからqmail や jvinなどの各モジュールなどは、ちゃんとインストール済み。
そうしないと緊急出動で切替えられないですね。
さて、改めて見てみますが、サーバーを入れ換えるに当たり採用できる方法は2つあります。
その1)ルーターのNATの向き先を 10.0.0.101 に変更し、サーバーには手を加えない。
問題:
その1、LAN内の設定を見直す必要がある。
その2、ルーターの設定を変えるとフィルタリングの自動設定がはたらき、見直す必要がある。
その2)サーバーのアドレスを変える
問題:あるかどうか?やったことないので。。。。
という訳で2の方法を選択しました。
普通の運用の場合は何もしなくても大丈夫なんです。でもバーチャルサーバーを立てているので、IPがconfigに記載してあります。
テスト運用の時から 10.0.0.101 をセットしてあったのでコレを修正しました。
/etc/httpd/conf/httpd.conf
の中の
NameVirtualHost 10.0.0.101
と
<VirtualHost 10.0.0.101>
と書いてある数ヶ所(2ヶ所でした)
を変更します。 これでOK
これも簡単ですね。
cronの設定はすっかり忘れていました。
crontab -e
で前の仕事を設定します。まだ前のマシンが動作するのでまねして設定しました。できたらメモしておきましょう。
私の場合、時間が来たらルーターがパケットを止めるtelnetなどをcronにさせていたのですが、その設定などを控えておくのを忘れていました。
別の記事の通り、hostsファイルにローカルなクライアントの名前を書き出して解決です。
このへんが厳しくなったのはTurbo 7だからなのでしょうか?
これも別記事の通りで、bindの逆引きで解決しました。tcpserverの名前解決待ちのせいでした。
肝心な事を最初にしたのでした。
ミラー処理の為に、rootでssh経由のログインが出来る様にしておいたのですが、これをやめないと危険ですね。
ちゃんと変えました。詳細は過去記事を。
以上の変更で無事サーバーが継続して復活いたしました。
会社でキーワード検索システムが必要になりました。さて、検索エンジンって自前で立てられるのかな?
と、あれこれ検索すると 行き着くところはnamazuです。
namazuっていままであまり真面目に調べたことはなかったけれど、実は記憶には刷り込まれてます。
全文検索システムとは?と聞かれれば namazu!と答える、そんな名前です。
namazuの公式サイトはこちら http://www.namazu.org
詳細はオリジナルサイトをご覧ください。
今回は名前だけでなく、本格的にこのnamazuの機能に向き合ってみます。
では早速自サイトでテストです。
【必要なモノ】
Perl | これはもうあたりまえにありますね | |
nkf | 日本語変換ソフトです | たいていLinuxと一緒にインストールされますが、v1.90と1.92は不具合があるのでそれ以外のものを使う必要があるとのこと。私のサーバーは1.90でした。 |
NKF.mod | ついでに Perlモジュールの NKF.modも高速らしいのでインストールします | |
kakashi | 日本語文節分析用 | ChaSen(ちゃせん)とどちらかを使うという事ですが簡単そうなのでkakashiを使うことにしました |
namazu | これが検索システムそのものです |
全部namazuサイトで丁寧に紹介されています。
【インストールした手順の覚え書き】
nkf
前述の通り v1.90 と 1.92 の不具合を避ける為に入れます。
IEでダウンロードした圧縮された該当ファイルはどういう訳かうまくgzipで展開できませんでした。
しかたないのでLinux上から直接ファイルをゲットしました。コマンドは次の通り。
wget http://www01.tcp-ip.or.jp/~furukawa/nkf_utf8/nkf204.tar.gz
バージョンは2.04です。
ちなみに一連の展開処理は私の場合 /tmp の下でやってます。/tmpは定期的に勝手に掃除されてしまいますので注意して下さい。
上記ファイルのある場所は namazuサイトのチュートリアルで紹介されています。
ではインストール作業を説明します。
tar zxvf nkf204.tar.gz で解凍 cd nkf204 make
これでnkfは完了、となるハズですがなんだかちょっと説明通りに行かなかったのでもう一度おさらいします。
あらかじめもとから入っているnkfは削除しておかなければいけません。
rpm -qa | grep nkf
でnkfのパッケージを調べてそのファイル名を使って削除します
rpm -e nkfxxxxx
という様に削除しておきます。xxxxxは該当ファイルに書き換えます。
そしてnkfをインストール、というところですが、なんだか手動でコピーしないとダメみたいです。
cp nkf /usr/bin cp nkf.1 /usr/local/man/man1
本来 /usr/local/bin に入れるのでしょうが、システムがしきりに /usr/bin/nkf を見に行きたがるのですなおに従う事にしました。
まずはこれでOKです。
そして Perlモジュールも一緒にインストールします。
cd NKF.mod/ perl Makefile.PL make make test make installで完了です。
kakashi
これもhttp://www.namazu.org/doc/tutorial.htmlのリンク先から頂きました。
今回のバージョンは2.34
tar zxvf kakasi-2.3.4.tar.gz cd kakashi-2.3.4 ./configure make make check make install
これで完了。これだけ。
namazu
安定バージョン 2.0.12を使用しました。
tar zxvf namazu-2.0.12.tar.gz cd namazu-2.0.12
で、そのままインストールを始めると事前に必要な File-MMagicが入っていないのでエラーになります。
これはnamazu一式に同梱されているのでこのままFile-MMagicを先にインストールします。
cd File-MMagic perl Makefile.PL make install
これで完了
cd .. ./configure make make install
これでnamazuもインストール完了
namazuを使う
namazuに関する主なファイルは3つ
(1)mknmz ・・・・ インデックス作成
(2)namazu ・・・・ コンソールで検索
(3)namazu.cgi ・・・・ Cで作成された検索CGI
あとは設定ファイルが1つあります。
1、まず、インデックス作成の為の mknmz
mknmz -O /tmp/namazu --indexing-lang=ja /var/www/html
パラメーター1 -Oで書き出しインデックスディレクトリを指定
パラメーター2 --indexing-lang=ja で日本語コードを指定。これを指定しないと日本語の検索が出来ない。
ここで指定しなくても環境変数の設定で行けます。例えば export LC_ALL="ja"
をシェルから指定しておけば大丈夫。
パラメーター3 目的のディレクトリ
この実行で指定ディレクトリにインデクスが作成されます。
通常のnamazuのデフォルトインデックスディレクトリは /usr/local/var/namazu/index という事なのでそこにいれるのもいいかもしれませんが、とりあえず
/tmp/namazu なんぞを使ってみました。
まずはこれで準備完了
2、コンソールから検索 namazu
このファイルも既にインストールが完了しているので
namazu 検索文字 インデックスディレクトリ
とします。
namazu amm /tmp/namazu
これでammの文字検索結果が表示されます。
でもこれはコンソールだけなのであくまでテストといいますか動作確認用です。
3、CGI設置
namazu.cgiという、これはスクリプトではなくCで作られたコマンドの様ですがこれが一通りの事をやってくれます。
このcgiは /usr/local/libexe/namazu.cgi にしまわれているので、を目的のWEBファイルのあるディレクトリに移して使います。
パーミッションも実行権限が付いていると思いますが一応確認して下さい。
namazu.cgiが使う設定ファイルを同じディレクトリに置いておきます。
サンプルファイルは /usr/local/etc/namazu/namazurc-sample です。
これを .namazurc という名前に変えて、cgiと一緒においておきます。
サンプルから変更した箇所、というか必要な記述は次の4行。
Index /tmp/namazu インデックスのディレクトリ
Template /tmp/namazu これはIndexといっしょ。NMZ.headなどのHTMLテンプレート
Replace /var/www/html/ http://xxxxxxxxx.com/ ディレクトリ情報をWEB用に差し替える
Lang ja_JP.SJIS これをセットしないと検索結果が文字化けする
これでcgiをブラウザから見ると簡単に検索出来るようになっています。
あとは自分用に検索画面をチューニングしたりすればOKです。
インデックスディレクトリにある NMZ.head.ja などがその元になるファイルですがmknmzを実行する度に更新されるので元になるテンプレート
/usr/local/share/namazu/template を編集することで対応できます。
これだけで全文検索システムが稼動できるわけですから大したものです。
あとは定期的に mknmz を実行すれば更新できますね。
※驚いたことに、PDFファイルが置いてあってもちゃんと文面を検索してくれているところがすごいです。
ではnamazuのオリジナル検索画面をこちらにどうぞ
2004.2.25
メールで投稿できる掲示板を探してみました。
写メールが流行ってるから写真対応のメール投稿掲示板はそれなりに見つけられます。
でもCGIでの供給はないもんですね。レンタル掲示板ばっかり。
そりゃそうですよね。MTAがメールを受信してから掲示板の書込みトリガーを起こすなんて、サーバー全体の仕事ですから。
でも・・・・qmailならそんなことも頑張ればできそうです。
1)メール受信とともに .qmail でスクリプトを起動
2)起動したスクリプトは、そのメールのヘッダ、本文、添付ファイルを解析、そして日本語化
3)メールから抜き出したそれらの情報を掲示板のLOGに埋めこむ
この様な動作で実現可能。
kentさんのwforumのログを横取りして情報を埋めこむスクリプトを書いてみました。
興味のある方は試してみてください。
forum@ayamizu.com宛にメールを送るとサンプル掲示板に新規投稿として表示されます。
但し!!!削除キーはセットできないので注意して下さい。
また、送信時の from の設定値をそのまま表示しますので名前が埋めてある方、気をつけてくださいね。
掲示板は機能はそのまま生きているのでレスは付けられます。
スクリプトはぐちゃぐちゃなので公開しませんが、こんな事を実現した事例とサンプルを紹介まで。