FrontPage 新規 編集 検索 一覧 ヘルプ

FSWikiLite

[カテゴリ:Wiki]

FreeStyleWikiの軽量版である。

FSWikiLite0.0.9だと導入は簡単

FSWikiLite0.0.9以降は@niftyでもスクリプトの修正なしでそのまま使えるようになったとのこと。

スクリプトの修正は不要になったけど、Perlのパスとかthemeのパスだけは、サーバ毎に違うものだから、@niftyでのカスタマイズは必須です。その辺誤解なきよう。

FSWikiLiteを@niftyで動かす

フルセット版に比べるとカナリの軽量化が図られているとはいえ、さすがは@nifty。これでさえ動かすのに苦労させてくれるとは、参りますた(;´Д⊂)。

ちなみに後で分かったFSWikiLiteの制限(というか仕様)としては、

  1. 添付ファイルの上限は128KBがデフォルト。lib/cgi-lib.plで上限サイズを変更可能。まぁあまりでかくしても意味ないし。
  2. 添付ファイルはあくまでインライン表示専用として割り切る。単独ファイルのうぷろーだとして使おうなんて思ってはいけない。ダウンロード時のファイル名が無条件で"download"になるからファイル名はダウン時にちゃんと指定しなくてはならない。(この問題はFSWikiLite0.0.9以降で直っています。

具体的にはどうやんの?

FSWikiLite 0.0.7〜0.0.8での実績なんで、別の版ではうまくいかなかったり、そもそもこんなことしなくても大丈夫かもしれない。責任持てないんでそこんとこヨロシク。

手順にはサーバへのファイルのUPとかまで細かく書かないので、読んで自分で判断するべし。

ただ、とりあえず言えること。

  1. アーカイブ内の*.cgiも含めたテキスト系ファイルは改行がLFのみ(UNIX/Linux向け)になっているので、Windows環境からUNIX/Linux系のサーバにアップロードするときにはバイナリモードで転送すること。アスキーモードにすると動かなくてハマリます、はい。
  2. でも手元の環境がUNIX/Linux系で、逆にサーバがWindows系だった場合は、アスキーモードにして転送するべし。

Perlのパスを修正

@niftyのPerlのパスはFSWikiLite標準と違う。よって*.cgiのファイルすべての先頭行を修正すべし。

↑これらの先頭行を↓とする。

 #!/usr/local/bin/perl

足りないPerlモジュールの追加

Perlのディストリビューションから以下のファイルを抜き出す。

 lib/Carp.pm
 lib/Exporter.pm
 lib/CGI/Carp.pm

これをcgi-binディレクトリ以下に入れてこんな感じにする。

 cgi-bin/lib/Carp.pm
 cgi-bin/lib/Exporter.pm
 cgi-bin/lib/CGI/Carp.pm

あるいはwiki.cgiやedit.cgiのあるディレクトリに入れてこんな感じにする(cgi-bin/wikiにwiki.cgiが入っている場合)。

 cgi-bin/wiki/Carp.pm
 cgi-bin/wiki/Exporter.pm
 cgi-bin/wiki/CGI/Carp.pm

Perlモジュールの検索パス追加(ファイルの配置によっては不要)

Perlモジュールの検索パスをどうするのかって問題。Perlモジュールをwiki.cgiやedit.cgiと同じディレクトリに置くならいらない作業。

FSWikiLiteのファイルと混ざるとややこしくなるってんで、あえて分けてみたらこういう手順が発生する。

修正するのはedit.cgiだけなんだけど、

 BEGIN {
         push(@INC, "../lib");
 }
 
 require "./lib/common.pl";

こんな感じで、require "./lib/common.pl";の行の前に少し追加する。"../lib"ってのはPerlモジュールを突っ込んだディレクトリへのedit.cgiのディレクトリからの相対パスね。

common.plで一覧機能が動作しないのを直す(@niftyのせいなんだろうが)

この項、0.0.9以降では不要なので読み飛ばしてちょ。

common.plで一部を書き換え。下を参照のこと。glob関数呼んでいるところを置き換えるわけですな。@niftyのサーバの仕様がなんか関係しているのだろうけど、わけわかんねぇ。

 sub get_page_list {
 #       my @files = glob("$main::DATA_DIR/*.wiki");
 #       ↓追加部分
         opendir(DIR, $main::DATA_DIR);
         my ($fileentry, @files);
         while($fileentry = readdir(DIR)){
                 my $type = substr($fileentry,rindex($fileentry,"."));
                 if($type eq ".wiki"){
                         push(@files, "$main::DATA_DIR/$fileentry");
                 }
         }
         closedir(DIR);
 #       ↑追加部分

edit.cgiで添付ファイル一覧表示できないのを直す(原因は上と同じ)

この項、0.0.9以降では不要なので読み飛ばしてちょ。

上と同じ理由でglob関数がちゃんと動かないので、edit.cgiのedit_pageの中も少し直す。foreach文付近をこんな感じで書き換える。コメントにしてあるforeach文が元の処理だ。

 #       ↓改造部分
         opendir(DIR, $main::ATTACH_DIR);
         my ($attachentry, @attachfiles);
         while($attachentry = readdir(DIR)){
                 my $type = rindex($attachentry,&Util::url_encode($page).".");
                 if($type eq 0){
                         push(@attachfiles, "$main::ATTACH_DIR/$attachentry");
                 }
         }
         closedir(DIR);
 #       foreach my $attach (glob("$main::ATTACH_DIR/".&Util::url_encode($page).".*")){
         foreach my $attach (@attachfiles) {
 #       ↑改造部分

themeはhomepageディレクトリの方に移動しないとダメ

theme(テーマ)にはスタイルシートがあるわけなんだけど、これはWikiが生成したHTMLテキストから参照する形でリンクが張られる。だけどご存じの通り、@niftyはcgi-binディレクトリ以下のファイルをWebブラウザから参照することができないので、結果スタイルはブラウザデフォルトのままになっちゃう。

だから、theme以下のファイルをhomepageディレクトリ以下のどこかにおいて、lib/setup.plを

 $THEME_URL = 'http://homepage1.nifty.com/j_some/wiki/theme/default/default.css';

のように(これはうちの例)書き換える必要がある。

よし、これで終わりだ

乙カレー。あとは思う存分Wikiしてくれたまえ。


FSWikiLiteとは?

FSWikiLiteの元になっているFreeStyleWikiはPerlによるmodulableなWikiクローンです。プラグインによって様々な機能を追加することができます。ただし、高機能な分、通常のCGIスクリプトと比較すると動作が重いという欠点がありました。

FSWikiLiteはFSWikiほど高機能ではありませんが、機能を限定することで軽快に動作します。プラグインは一部しか使用できませんが、文法はFSWikiと完全互換です。また、FSWikiと比べると構造がシンプルな分、設置も用意です。

その他にFSWikiLiteは以下のような特徴があります。

 最終更新時間:2005年04月07日 00時42分54秒