VikiWiki-WEBrick お試しパッケージ
はじめに
これは、 mopia さんが作成された Wiki Engine である VikiWiki を WEBrick 上で動作させるためのパッケージです。
これにより、 CGI 対応の HTTP サーバのインストールや設定を行なうことなく、 Ruby だけで VikiWiki サーバを起動することが出来ます。
このパッケージは、例えば次のような方々にお勧めです。
-
VikiWiki を少し試してみたい方
-
自宅等のローカルな環境でメモ書き環境を構築したい方
-
手元の環境で、ちょっとした CMS 環境を構築したい方
-
VikiWiki のプラグインを手元の環境で開発してみたい方
インストール
ここでは、このパッケージのインストール方法について述べます。
インストールに先だって、あらかじめ WEBrick をインストールする必要があります。但し、 1.8 系の ruby を使用する場合は、 WEBrick は既に標準添付されていますので、インストールする必要はありません。
また、もし VikiWiki サーバの入出力用の漢字コードとして euc-jp や shift-jis を使用する場合は、それに加えて uconv をインストールする必要があります。
そして、このパッケージには VikiWiki のソースコードの zip アーカイブである vikiwiki.zip が必要ですが、これはインストール中において自動的にダウンロードされますので、あらかじめ用意する必要はありません。
インストールを行うには、このパッケージの tarball を展開後、展開先のディレクトリに移動して、コマンドラインから次のように入力します。あらかじめ vikiwiki.zip を用意した場合は、前もって vikiwiki.zip を展開先のディレクトリの下の src ディレクトリに置いてください。
$ ruby ./setup.rb config $ ruby ./setup.rb setup $ su # ruby ./setup.rb install
このパッケージはインストーラとして、 青木峰郎さん の setup.rb を使用しています。
実際に setup.rb で指定できるオプション等については、 setup.rb のオンラインマニュアルを参照してください。
また、このパッケージでは setup.rb 標準のオプションの他、以下のオプションが指定できます。
- --wgetprog=[path]
-
インストール時に vikiwiki.zip をダウンロードするための wget プログラムへのパス
- --unzipprog=[path]
-
vikiwiki.zip を展開するための unzip プログラムへのパス
- --nkfprog=[path]
-
漢字コード変換のための nkf プログラムへのパス
- --encoding=[euc-jp|shift-jis|utf-8]
-
VikiWiki で使用する漢字コード。(デフォルトは utf-8)
- --vikiwikiuri=[URI]
-
vikiwiki.zip が置かれている URI (デフォルトは http://vikiwiki.net/vikiwiki.zip)
VikiWiki サーバの起動
ここでは、 VikiWiki サーバを起動する方法について述べます。
デフォルトでの起動方法
コマンドラインから以下のように入力すると、全ての設定がデフォルトの状態で VikiWiki サーバが起動します。
$ ruby -r vikiwiki -e VikiWiki::WEBrickServer.start
すなわち、ライブラリ vikiwiki.rb を require で取り込んだ後に VikiWiki::WEBrickServer クラスのクラスメソッド startを呼び出します。
この時、ホームディレクトリ $HOME に(もし存在しなければ)ディレクトリ VikiWiki/ が作成され、そこに VikiWiki のリポジトリとなるデータファイル群が置かれます。
この状態で、適当な web ブラウザから、 http://localhost:10080/vikiwiki にアクセスすると、 VikiWiki の初期画面が表示されます。
デフォルト以外の設定での起動方法
デフォルト以外の設定で VikiWiki サーバを起動する場合は、 VikiWiki::WEBrickServer.start メソッドの引数に各種設定値をハッシュとして与えます。
設定値は、通常の VikiWiki で指定するものの他、以下のものがが指定できます。
- "PORT"
-
VikiWiki サーバが待ち受けるポート番号を指定します (デフォルトは 10080)。
- "AUTHREALM"
-
VikiWiki サーバの basic 認証で使用する realm を指定します (デフォルトは "VikiWiki User")。
設定値の詳細については、 vikiwiki.zip 同梱の parameter.txt を参照してください。なお、設定値のデフォルト値は、以下の物を除いて parameter.txt で示された値と同様です。
conf["AUTHOR"] = "Administrator" conf["ADMIN"] = "admin" conf["ADRESS"] = "admin@example.com" conf["AUTHTYPE"] = "none" conf["BASEDIR"] = ENV["HOME"] + "/VikiWiki" conf["BASEURI"] = "/" conf["ENCODING"] = $VIKIWIKIENCODE; # インストール時に指定した # --encoding の値によって決まる conf["SCRIPT_NAME"] = "/vikiwiki" conf["STATICDIR"] = ENV["HOME"] + "/VikiWiki/static" conf["STATICURI"] = "/static" conf["WIKIFARM"] = false conf["TITLE"] = "VikiWiki - page" conf["STATICTITLE"] = "alias" conf["AUTHREALM"] = "VikiWiki User"
例えば、 VikiWiki のデータファイル群を /home/zool/Wiki に置き、 VikiWiki サーバが接続をポート番号 20080 で待ち受ける様に設定する場合は、以下のようにします。
$ ruby -r vikiwiki -e 'VikiWiki::WEBrickServer.start("BASEDIR" => "/home/zool/Wiki", "PORT" => 20080)'
スクリプトを用いた起動方法
VikiWiki サーバの起動の際に、より複雑な設定を行う場合は、以下のような Ruby スクリプトを作成します。
require 'vikiwiki' VikiWiki::WEBrickServer.start( "BASEDIR" => "/home/zool/Wiki" "PORT" => 20080 "ADMIN" => "zool" ... )
そして、上記の ruby スクリプトの名前を vikiwiki-webrick.rb とすると、以下のようにして、 VikiWiki サーバを起動します。
$ ruby vikiwiki-webrick.rb >> vikiwiki-webrick.log 2>&1 &
なお、 VikiWiki サーバの起動用スクリプトのサンプルとして、 vikiwiki-webrick.rb をパッケージに同梱しています。必要に応じて修正の上、御利用下さい。
WEBrick サーブレットクラス
また、 WEBrick::HTTPServer オブジェクトに mount するためのサーブレットクラスとして VikiWiki::Servlet クラスを用意しました。
これにより、既存の WEBrick アプリケーションに VikiWiki サーバを組み込むことができます。以下に例を示します。
require "webrick" require "vikiwiki" s = WEBrick::HTTPServer(:Port => 10080) # ... # /home/zool/Wiki にリポジトリを置く VikiWiki サーバを組み込む。 s.mount("/vikiwiki", VikiWiki::Servlet, {"BASEDIR" => "/home/zool/Wiki"}) # ... s.start
なお、 VikiWiki::Servlet.new が取る引数は VikiWiki::WEBrickServer.start と同様ですが、設定値 "PORT" を指定することができません。
また、 VikiWiki::Servlet の mount point と設定値 "SCRIPT_NAME" の値が異なる 場合、 mount point の path が優先され、設定値 "SCRIPT_NAME" の値は無視され ます。
注意点その他
ここでは、このパッケージについての注意点等について述べます。
VikiWiki サーバの制限
このパッケージによる VikiWiki サーバには、以下の制限があります。
-
WikiFarm が使用できません。1個の WEBrick サーバに対して複数個の VikiWiki::Servlet クラスを mount することにより、 WikiFarm と同様の効果が得られます。
-
管理者ページから CGI の設定の変更が出来ません。設定の変更は VikiWiki サーバを起動したスクリプトの修正と再起動により行ってください。
独自プラグイン等の利用
VikiWiki サーバから独自のプラグインや Wiki 記述スタイルのスクリプトを利用するには、以下のようにしてください。
-
サーバの設定値 "BASEDIR" で指定したディレクトリ(以下、 conf["BASEDIR"] と表記します)の下に plugin, style ディレクトリを作成します。
-
conf["BASEDIR"]/{plugin, style} ディレクトリ以下にスクリプトを置いてください。
-
VikiWiki サーバは conf["BASEDIR"]/{plugin, style} ディレクトリ以下に置かれたスクリプトを優先的に読み込みます。
-
スクリプトの修正後などに、再度スクリプトを VikiWiki サーバに読み込ませるには、 VikiWiki サーバの再起動を行なってください。
VikiWiki サーバの認証と運用
VikiWiki サーバの認証に関する扱いは以下の通りです。
-
サーバの設定値 "AUTHTYPE" の値は現在、 "none", "www" のみ有効です。それ以外を指定した場合は "www" を指定したものとみなされます。
-
ユーザの認証には、 conf["BASEDIR"]/etc/passwd の内容が使われます。conf["BASEDIR"]/etc/passwd の内容の変更には、プラグイン #passwd が使用出来ます。
-
もし、 conf["BASEDIR"]/etc/passwd に管理者ユーザ(設定値 "ADMIN" で示されるユーザ)が登録されていない場合は、管理者ユーザが、管理者ユーザ名そのものを初期パスワードとして自動的に登録されます(例えば、管理者ユーザ名が "admin" の場合は、 "admin" が初期パスワードになります)。
-
なお、 VikiWiki のバージョンが 1.9.7.24 以降の場合、インストール時に管理者ユーザとして "admin" が、初期パスワードを "admin" として登録されます。
なお、VikiWiki サーバは、ローカルな環境で CMS モードで運用することを前提としています。外部への公開には適しませんので、御了承下さい。
設定値 "REPLACE_WORDS"
テキスト保存時に特殊な keyword を適当な文字列に置換するための設定値 "REPLACE_WORDS" において、変換対象となる keyword に対する値として Proc オブジェクトを指定すると、置換時に Proc オブジェクトが評価され、その結果を文字列に変換したものが置換後の値として使用されます。
例えば &DATE; や &TIME; などを現在の時刻や日付などに置き換える場合には、設定値 "REPLACE_WORDS" を以下のようにしてください。
... "REPLACE_WORDS" => { "&DATE;" => lambda { Time::now.strftime("%Y-%m-%d") }, "&TIME;" => lambda { Time::now.strftime("%H:%M:%S") }, ... } ## "&DATE;" => Time::now.strftime("%Y-%m-%d") とすると、 &DATE; は、 ## 常に VikiWiki サーバ起動時の日付に置き換わってしまう。 ...
謝辞
このパッケージの作成にあたって、何よりも VikiWiki の作者である mopia さんに心より感謝致します。
また、このパッケージのインストーラである setup.rb の作者の青木峰郎さんにも心より感謝致します。 setup.rb により、インストールの作業を容易にすることが出来ました。
そして、 WEBrick を作成された IPR -- Internet Programming with Rubyの方々に心より感謝致します。
最後に ruby の作者である まつもとゆきひろさんと ruby に関わ っておられるすべての方々に心より感謝致します。
配布条件
-
このパッケージは、Z80-OOLONG (NAKATSUKA, Yukitaka)が著作権を有します。
-
このパッケージは、 VikiWiki のライセンスに準じ、 GPL に基づいて配布されるものとします。