**PukiWikiのページを[[Namazu]]に食わせるひとつの方法 [#qc9a45f8] ~[[ぱんだ]]が、自サイトで[[Namazu]]を飼った時の記録です。参考になれば幸いです。 ~以下のような手順でPukiWikiを修正します。 ~なお、[[Namazu]]が動作することを前提にしていますので、適宜インストール/設定を済ませておいてください。 ~以下のバージョンで動作することを確認しています。 --namazu 2.0.10 --chasen 2.2.9 --perl 5.8.0 --nkf 1.92 ***init.phpを修正 [#s9771d35] :| ~最新のcvs版(([[dev:BugTrack/140]]参照。))では修正されていますが、念のため。 //** 初期処理 ** $update_exec = ""; ←この行を削除してください。 ***pukiwiki.ini.phpを修正 [#l8d6df85] :| //$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/'; ~それぞれの意味(&color(red){赤字};は環境によって調整してください。)大文字小文字は区別されます。 --&color(crimson){/usr/bin/mknmz}; ~mknmzの場所を絶対パスで指定します。 -- -f &color(crimson){/etc/namazu/mknmzrc}; ~設定ファイルの場所を指定します。 -- -t text/pukiwiki ~メディアタイプを指定することで、pukiwiki.plフィルタ(下記参照)を通すようにする -- -O &color(crimson){/var/lib/namazu/index/}; ~インデックスの位置 -- -L &color(crimson){ja}; ~日本語を指定 -- -c ~chasenを使う(kakasiを使う時は-k) -- -K ~記号を除去 --&color(crimson){/var/www/wiki/}; ~スキャンするディレクトリ ~環境によっては省略できるパラメータもありますし、逆にこれでは足りない場合もありますので、その辺は臨機応変にひとつ。 :) ***file.php/file_write()を修正 [#facb2c59] :| ~こうしておくと、ページの更新時に''一度だけ''((一度に複数のページを更新することは…ないですよね?))update_execを実行するようになります。 - if($update_exec) + if($update_exec and $dir == DATA_DIR) { system($update_exec." > /dev/null &"); } ***namazurcを修正 [#r23e10a7] :| ~環境に応じて適宜修正してください。以下は、PukiWikiを/var/wwwに置いている場合の例です。 Replace /var/www/wiki/ http://.../pukiwiki.php? ***フィルタを設置 [#o894f026] ~検索結果画面の文書タイトルとuriを見やすくするために、フィルタをつくりました。 --&ref(pukiwiki.pl); ~Namazuのfilterディレクトリ(/usr/share/namazu/filter/など)に、添付したpukiwiki.plを置いてください。 ***インデックスの更新 [#l285a3e1] ~適当なページを編集し、ページを更新してください。バックグラウンドでmknmzが実行され、しばらく待つとNamazuでの検索ができるようになっているはずです。 ***注意 [#w6556b7e] -インデックスファイルを作成するディレクトリ(/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]] ***メモ [#k7e88034] -[[たらこせる]] &new{2002-09-03 (TUE) 15:57:45}; ~kakasi2.3.4でも動作確認とれました。 -[[reimy]] &new{2002-09-04 (WED) 02:36:21}; ~Namazu 2.0.10及び2.0.11にクロスサイトスクリプティングの脆弱性があることが明らかになり、2.0.12がリリースされています。 --[[reimy]] &new{2002-09-04 (WED) 03:17:11}; ~なお、今回発見された脆弱性はウェブサーバーがIISの場合にのみ発生します。apacheでは2.0.10のままで問題ありません。 -[[TA2]] &new{2003-02-18 (TUE) 15:48:03}; ~添付ファイルの中身の検索・表示とかは可能なんでしょうか -[[名無しさん]] &new{2004-04-10 (SAT) 21:15:44}; ~Xreaでやってみようとしていますが、うまくいきません -Namazu 2.0.13 でうまくいってます。ただ、なぜか インデックス作成(mknmz)で。Kakasi 2.3.4 ではうまくいくのに、Chasen 2.3.1 で、pipe broken といったエラーになります。茶筅が一つ前のバージョンだから? ともかく、[[青空文庫大菩薩峠全文検索:http://palm.nishinari.or.jp/daibosatsu/namazu.cgi]]を一応。完成させました。[[青空文庫内の Google 検索:http://www.google.com/search?as_dt=i&as_sitesearch=www.aozora.gr.jp&lr=lang_ja&ie=euc-jp&num=20&as_q=&btng=%B8%A1%BA%F7]]より確実にヒットすることだけは間違いないようです。(^o^) -- [[ゼファー生]] &new{2004-10-13 (水) 01:45:25}; -Namazu2.0.14をインストールして試してみました。 -- [[林檎]] &new{2004-12-27 (月) 01:20:18}; -すみません、間違えて途中で挿入してしまいました。上記に書いてある通りの設定を行いましたが、私の環境では更新時インデックスが作成されていないようです。エラーとかどこをみれば分かりますでしょうか。debug-modeのようなものはありますか?動いているかどうかだけでも知りたいのですが。。。 -- [[林檎]] &new{2004-12-27 (月) 01:25:18}; #comment