dev:Namazu

PukiWikiのページをNamazuに食わせるひとつの方法

ぱんだが、自サイトでNamazuを飼った時の記録です。参考になれば幸いです。

以下のような手順でPukiWikiを修正します。

なお、Namazuが動作することを前提にしていますので、適宜インストール/設定を済ませておいてください。

以下のバージョンで動作することを確認しています。

  • namazu 2.0.10
  • chasen 2.2.9
  • perl 5.8.0
  • nkf 1.92

init.phpを修正

最新のcvs版*1では修正されていますが、念のため。

//** 初期処理 **
$update_exec = "";  ←この行を削除してください。

pukiwiki.ini.phpを修正

//$update_exec = ...
の行のコメント記号(//)を削除し、以下のように書きます。
$update_exec = '/usr/bin/mknmz -f /etc/namazu/mknmzrc -t text/pukiwiki
-O /var/lib/namazu/index/ -L ja -c -K /var/www/wiki/';

それぞれの意味(赤字は環境によって調整してください。)大文字小文字は区別されます。

  • /usr/bin/mknmz

    mknmzの場所を絶対パスで指定します。

  • -f /etc/namazu/mknmzrc

    設定ファイルの場所を指定します。

  • -t text/pukiwiki

    メディアタイプを指定することで、pukiwiki.plフィルタ(下記参照)を通すようにする

  • -O /var/lib/namazu/index/

    インデックスの位置

  • -L ja

    日本語を指定

  • -c

    chasenを使う(kakasiを使う時は-k)

  • -K

    記号を除去

  • /var/www/wiki/

    スキャンするディレクトリ

環境によっては省略できるパラメータもありますし、逆にこれでは足りない場合もありますので、その辺は臨機応変にひとつ。 :)

file.php/file_write()を修正

こうしておくと、ページの更新時に一度だけ*2update_execを実行するようになります。

- if($update_exec)
+ if($update_exec and $dir == DATA_DIR)
  {
   system($update_exec." > /dev/null &");
  }

namazurcを修正

環境に応じて適宜修正してください。以下は、PukiWikiを/var/wwwに置いている場合の例です。

Replace         /var/www/wiki/  http://.../pukiwiki.php?

フィルタを設置

検索結果画面の文書タイトルとuriを見やすくするために、フィルタをつくりました。

  • filepukiwiki.pl

    Namazuのfilterディレクトリ(/usr/share/namazu/filter/など)に、添付したpukiwiki.plを置いてください。

インデックスの更新

適当なページを編集し、ページを更新してください。バックグラウンドでmknmzが実行され、しばらく待つとNamazuでの検索ができるようになっているはずです。

注意

  • インデックスファイルを作成するディレクトリ(/var/lib/namazu/index/など)とその中身は、webサーバの実効ユーザ(wwwとかapacheとか)が読み書きできる必要があります。
  • mknmzの実行に必要なファイル(perlなど)にパスが通っていないときは、シェルスクリプトを書くとか、mknmzと同じパスにリンクを張るとか、適当になんとかしてください。(←いい加減)

    $update_execの行に

    $update_exec = 'set PATH=...; /usr/bin/mknmz ....';
    と書くのもいいかもしれません。
    • ちなみに、kakasi/chasenのパスはmknmzrcで指定できます。
  • module版PHPでPukiWikiを稼働させている場合、suEXECが導入されている環境では、$update_execが実行できない場合があります。その場合は、namazuのインデックス更新はcronで一定時間おきに行なうようにすればいいでしょう。-- reimy

メモ

  • たらこせる 2002-09-03 (TUE) 15:57:45

    kakasi2.3.4でも動作確認とれました。

  • reimy 2002-09-04 (WED) 02:36:21

    Namazu 2.0.10及び2.0.11にクロスサイトスクリプティングの脆弱性があることが明らかになり、2.0.12がリリースされています。

    • reimy 2002-09-04 (WED) 03:17:11

      なお、今回発見された脆弱性はウェブサーバーがIISの場合にのみ発生します。apacheでは2.0.10のままで問題ありません。

  • TA2? 2003-02-18 (TUE) 15:48:03

    添付ファイルの中身の検索・表示とかは可能なんでしょうか

  • 名無しさん 2004-04-10 (SAT) 21:15:44

    Xreaでやってみようとしていますが、うまくいきません

  • Namazu 2.0.13 でうまくいってます。ただ、なぜか インデックス作成(mknmz)で。Kakasi 2.3.4 ではうまくいくのに、Chasen 2.3.1 で、pipe broken といったエラーになります。茶筅が一つ前のバージョンだから? ともかく、青空文庫大菩薩峠全文検索を一応。完成させました。青空文庫内の Google 検索より確実にヒットすることだけは間違いないようです。(^o^) -- ゼファー生? 2004-10-13 (水) 01:45:25
  • Namazu2.0.14をインストールして試してみました。 -- 林檎? 2004-12-27 (月) 01:20:18
  • すみません、間違えて途中で挿入してしまいました。上記に書いてある通りの設定を行いましたが、私の環境では更新時インデックスが作成されていないようです。エラーとかどこをみれば分かりますでしょうか。debug-modeのようなものはありますか?動いているかどうかだけでも知りたいのですが。。。 -- 林檎? 2004-12-27 (月) 01:25:18
  • とりあえず、Namazuそのものとフィルタのインストールは成功したんで、ぜひ参考にして下さい。Epilogue:Namazu -- Logue 2005-03-27 (日) 02:15:16
  • Windowsではそのままでは動きませんでした。/lib/file.phpの253行目で " > /dev/null &" としてあるためと思われます。同行を以下のように修正して正常に動作しました。
    /lib/file.php:253
    -			system(PKWK_UPDATE_EXEC . ' > /dev/null &');
    +			system('start /b cmd /c ' . PKWK_UPDATE_EXEC . ' > nul');
    また,namzurcのReplaceもサンプルにならって書きましたが動きませんでした。以下のように指定したところ動作しました(<>は記述しません)。 -- moerrari 2011-01-01
    Replace [Cc]:/<pukiwiki設置ディレクトリへのパス>(<pukiwiki設置ディレクトリ名 >)/wiki/ /\1/?

重み付けのある Namazu 検索

  • フィルタをいじってみました。これまではページタイトルが検索対象になっていないのと、Heading などの重み付けができてないので、その部分に適当に手を入れてみました。既存のフィルタと共存できるように mime type は text/pukifile にしておきました。 -- わたなべ? 2005-02-17 (木) 20:40:51
  • 気合いでインストールしましたけど、文字コードがUTF-8のせいか、タイトルが文字化けしますね・・・。nkfも入れたので本文は化けていませんが。 -- Logue 2005-03-14 (月) 21:51:22

*1 dev:BugTrack/140参照。
*2 一度に複数のページを更新することは…ないですよね?

添付ファイル: filepukifile.pl 909件 [詳細] filepukiwiki.pl 2755件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-05-10 (火) 00:11:51
Site admin: PukiWiki Development Team

PukiWiki 1.5.1+ © 2001-2016 PukiWiki Development Team. Powered by PHP 5.6.33-0+deb8u1. HTML convert time: 0.325 sec.

OSDN