TOPへ

サーバの構築記録・日記編 page3


サーバーの交換 -> IP変更

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の方法を選択しました。

(1)サーバーのアドレス変更
変更個所は2つ
/etc/sysconfig/network-scripts/ifcfg-eth0
 の中から
 IPADDR=10.0.0.101
 を修正

/etc/hosts
 の中から
 10.0.0.101 と記載されている所を修正

この変更の後再起動すればサーバーのアドレスは変ります。 特に問題ありません。簡単です。
(2)Apacheの変更

 普通の運用の場合は何もしなくても大丈夫なんです。でもバーチャルサーバーを立てているので、IPがconfigに記載してあります。
 テスト運用の時から 10.0.0.101 をセットしてあったのでコレを修正しました。
 

 /etc/httpd/conf/httpd.conf
 の中の
 NameVirtualHost 10.0.0.101
 と
 <VirtualHost 10.0.0.101>
 と書いてある数ヶ所(2ヶ所でした)
 を変更します。 これでOK
 これも簡単ですね。
 

(3)cronの設定

 cronの設定はすっかり忘れていました。
 crontab -e
 で前の仕事を設定します。まだ前のマシンが動作するのでまねして設定しました。できたらメモしておきましょう。
 私の場合、時間が来たらルーターがパケットを止めるtelnetなどをcronにさせていたのですが、その設定などを控えておくのを忘れていました。

(4)Telnetモジュールの設定
 これもインストールするのを忘れてたのでインストールしました。。手順は自分で以前に書いたのを参考にしてます。
(5)Apacheへのローカルアクセスでレスポンスが悪い件を修正

 別の記事の通り、hostsファイルにローカルなクライアントの名前を書き出して解決です。
 このへんが厳しくなったのはTurbo 7だからなのでしょうか?

(6)qmailのレスポンス不良

 これも別記事の通りで、bindの逆引きで解決しました。tcpserverの名前解決待ちのせいでした。

(7)mysqlへの書き込み不良
 mysqlはちゃんと動作させてあるはずだ・・・・と思ったらデータソースとなるApacheのログが、ちゃんとカスタマイズしておかなかったのでした。
 直しました。
(8)bind
 zoneファイルが古いままになってました。/varは同期していたと思ったのですがしてなかったのかな?
 簡単だから書き直しました。
(9)ユーザーアカウントの修正
  ちょっと盲点でした。
 /homeを同期させると当然ながらユーザーのメールボックスも同期されます。
 でも、ユーザーを作ってないのに /home を同期させてもメールが受信できません。
 /etc/passwdのリストにあるかな?ないや。
 ってなことで、事前にユーザーをを作ってなかった場合は一旦ディレクトリを削除してからuseraddして改めてファイルを持ってくる事。
(10)忘れちゃいけないsshの設定

 肝心な事を最初にしたのでした。
 ミラー処理の為に、rootでssh経由のログインが出来る様にしておいたのですが、これをやめないと危険ですね。
 ちゃんと変えました。詳細は過去記事を。


以上の変更で無事サーバーが継続して復活いたしました。


全文検索システムnamazuの導入

会社でキーワード検索システムが必要になりました。さて、検索エンジンって自前で立てられるのかな?
と、あれこれ検索すると 行き着くところは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 の設定値をそのまま表示しますので名前が埋めてある方、気をつけてくださいね。

掲示板は機能はそのまま生きているのでレスは付けられます。
スクリプトはぐちゃぐちゃなので公開しませんが、こんな事を実現した事例とサンプルを紹介まで。