現在位置: Top/XreaのPukiwikiでNamazu検索

XreaのPukiwikiでNamazu検索

ファイルを準備

  • pukiwiki.plを入手
    http://www.pukiwiki.org/index.php?PukiWiki%2FNamazu
    からpukiwiki.plを入手する
  • namazu.cgi
    xreaのサーバーから
    /virtual/namazu/namazu.cgi
    を一度ダウンロードしておく
    【注意】namazu.cgiは常にバイナリーで扱ってください。
  • make_index.cgiを作成
    #!/bin/sh
    
    echo "Content-type: text/html
    
    <HTML><BODY>
    Make index...<HR>
    
    <TEXTAREA COLS=80 ROWS=50>
    "
    /usr/local/bin/mknmz -f /virtual/xxx/public_html/wiki/namazu/mknmzrc -t text/pukiwiki -O /virtual/xxx/public_html/wiki/namazu/index/ --media-type='text/pukiwiki' --indexing-lang=ja /virtual/xxx/public_html/wiki/wiki/ > /virtual/xxx/public_html/wiki/namazu/make_index.log
    cat /virtual/xxx/public_html/wiki/namazu/make_index.log
    echo "</TEXTAREA><HR>Finished!! </BODY></HTML>"
    exit
  • mknmzrcを作成
    package conf;  # Don't remove this line!
    $ADDRESS = '';
    $HTML_SUFFIX = "html?|[ps]html|php[34s]?";
    $ALLOW_FILE = ".*\\.txt";  # plain text
    $DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*|3A.*";
    $FILTERDIR = "/virtual/xxx/public_html/wiki/namazu/filter";
  • .namazurcを作成
    Index /virtual/xxx/public_html/wiki/namazu/index
    Template /virtual/xxx/public_html/wiki/namazu/index
    Replace /virtual/xxx/public_html/wiki/wiki/ http://xxx.s151.xrea.com/wiki/\?
    Logging on
    Lang ja
    MaxHit 10000
    MaxMatch 1000

サーバーにディレクトリを作成

/virtual/xxx/public_html/wiki/

/virtual/xxx/public_html/wiki/namazu/
というディレクトリを用意

さらに
/virtual/xxx/public_html/wiki/namazu/filter/
/virtual/xxx/public_html/wiki/namazu/index/
も用意しておく

ファイルをサーバーに転送

/virtual/xxx/public_html/wiki/namazu/

make_index.cgi
mknmzrc
.namazurc
namazu.cgi
を入れる

/virtual/xxx/public_html/wiki/namazu/filter/

pukiwiki.pl
を入れる

インデックスを作成

http://xxx.s151.xrea.com/wiki/namazu/make_index.cgi

を実行

完成!!

http://xxx.s151.xrea.com/wiki/namazu/namazu.cgi

で検索可能に

インデックスを自動で更新

調べてわかったのですが、PHPをセーフモードで動かしているので、xreaはsystem関数が動作しない。
lib/files.phpの

system($update_exec . ' > /dev/null &');

という部分が機能していません。
pukiwiki.ini.phpの

$update_exec

を設定しても動きません。これに結構な時間を費やしてしまいました。

あと手段としては、ページの更新をしたあとにCGIとして呼び出し、その後に元のページを呼び出すという方法が考えられます。

  • make_index.cgiを改造
    #!/bin/sh
    
    echo "Content-type: text/html
    
    <HTML>
    <head>
    <meta http-equiv='Content-Type' content='text/html; charset=EUC-JP'>
    <META HTTP-EQUIV='refresh' CONTENT='0; url=http://xxx.s151.xrea.com/wiki/?$1'>
    </head>
    <BODY>
    Make index...<HR>
    
    <TEXTAREA COLS=80 ROWS=30>
    "
    /usr/local/bin/mknmz -f /virtual/xxx/public_html/wiki/namazu/mknmzrc -t text/pukiwiki -O /virtual/xxx/public_html/wiki/namazu/index/ --media-type='text/pukiwiki' --indexing-lang=ja /virtual/xxx/public_html/wiki/wiki/ > /virtual/xxx/public_html/wiki/namazu/make_index.log
    cat /virtual/xxx/public_html/wiki/namazu/make_index.log
    echo "</TEXTAREA><HR>Finished!!<br>
    <a href='http://xxx.s151.xrea.com/wiki/?$1'>Back</a>
    </BODY></HTML>"
    exit
  • plugin/edit.inc.phpを改造
    header('Location: ' . get_script_uri() . '?' . rawurlencode($page));
    header('Location: ' . '/wiki/namazu/make_index.cgi?' . rawurlencode($page));
    にする