
! VikiWikiのセットアップ

!! 1.8.7.x以前から移行する方へ
readme.1.8.8.txtをご参照ください。

!! すぐに動かすには
- Rubyを使用できる必要があります。
- WWWサーバが使用できる必要があります。
- CGIの設定ができる必要があります。

setupを実行します。
パスは環境に合わせて指定します。

{{{
ruby -Ku setup.rb /home/mopia/public_html/folder/index.cgi
ruby -Ku setup.rb D:\home\mopia\public_html\folder\index.rb
}}}

index.cgiには実行権をつけてください。
Webブラウザからアクセスできることを確認したら、
「認証と設定」にしたがってセキュリティ設定してください。

!! 動作環境

Ruby 1.6.4以降が必要です。
Ruby 1.8系でも動作します。

OSはWindows系、Linux系で動作確認をしていますが、
Ruby 1.6.4以降が動作する環境であれば動作するように設計しています。

WWWサーバはIIS、Apache、AN HTTP Serverで動作確認をしていますが、
CGIが使用できるWWWサーバであれば動作するように設計しています。
- mod_rubyでも動作します。
- スクリプトをリロードしないCGIでも動作します。

!! インストール

!!! Rubyのインストール

VikiWikiはRubyというスクリプト言語で記述されています。
VikiWikiを使用するにはRubyをインストールする必要があります。

VikiWikiはプラットフォーム非互換のインタフェースは使用していないので
Rubyをサポートしているどのプラットフォームでも動作します。
Windowsの場合、mswin32版、cygwin版、migwin版が存在します。

VikiWikiの開発はmswin32版を使用しています。

!!! WWWサーバのインストール

VikiWikiはCGIによるアプリケーションです。
CGIを使用するにはWWWサーバが必要です。

- Apache
  もっともポピュラーなWWWサーバです。
  mod_rubyでの処理の高速化も図れます。
  Windowsにも移植されていて簡単にインストールできますが、
  初心者にはhttpd.confを編集するのが難しいかもしれません。

- IIS
  Windows Serverに標準で添付されているWWWサーバです。
  Windowsしか選択できない（しなければならない？）環境に適しています(笑)。
  初心者でもCGIの設定は比較的簡単にできると思います。
  VikiWikiはIISでも問題なく動作します。

- AN HTTP Server
  個人が開発しているWindowsで動作するシンプルなWWWサーバです。
  VikiWikiの開発はノートなので動作が軽いこのAN HTTP Serverを使用しています。

!!! CGIの設定

CGIの設定はWWWサーバごとに異なります。
IISの場合、rubyのオプションに -Ku (utf-8を使用する場合)を忘れないようにしてください。

!!! VikiWikiの設置

このファイルのあるディレクトリvikiwikiを任意の場所に置きます。
VikiWikiはCGIスクリプトに{{$VIKIWIKIDIR}}変数でVikiWikiのディレクトリを指定する方式のため
バージョンやコードが異なる複数のVikiWikiを設置することもできます。

!! エンコーディング

VikiWikiのデフォルトで使用可能なエンコーディングはUTF-8だけです。
SJISまたはEUCを使用したい場合は、Uconvを入手してください。
mswin32版のUconvはRuby 1.6用のものとRuby 1.8用のものがあります。

デフォルトのエンコーディングを変更したい場合、ここの
ディレクトリで以下のように実行します。
:SJISの場合:{{ruby tool/unkf.rb -Us "**/*.txt" "**/*.r*"}}
:EUCの場合:{{ruby tool/unkf.rb -Ue "**/*.txt" "**/*.r*"}}

!! セットアップ

ここでは新規にセットアップするための説明をします。

setup.rbスクリプトにより、VikiWikiのCGIスクリプトとデータを格納するディレクトリを作成します。
細かい設定を指定するには、-vオプションを指定してください。
:UTF-8(通常)の場合:{{ruby -Ku setup.rb}}
:SJISの場合:{{ruby -Ks setup.rb}}
:EUCの場合:{{ruby -Ke setup.rb}}

実行結果は以下のようになります。
Windowsパスにも対応していますので、\のまま入力しても大丈夫です。
- LinuxでNormalを選択した例（ホスティングサービス利用など）
  {{{
%ruby -Ku setup.rb
Setup for
0. This Machine
1. FTP (now 0. This Machine) > 0
Input your home path on WWW. (now /~mopia) > /~mopia
Input your directory for /~mopia. (now /home/mopia/public_html) > /home/mopia/html
Input path for VikiWiki. (now /home/mopia/vikiwiki) > /home/mopia/vikiwiki
Use for
0. Normal
1. CMS
2. StaticWiki
3. DirectEdit (now 0. Normal) > 0
Select authorization type
0. none
1. www
2. vikiwiki
3. form (now 3. form) > 3
Input administrator account. (now mopia) > mopia
Input your name. (now mopia) > MOPIA
Input your mail address. (now hogehoge@hogehoge.hoge) > mopia@tk14.org1.com
Input LANG. (now ja) > ja
Input ruby path. (now /usr/bin/ruby) > /usr/bin/ruby
Input top page name. (now FrontPage) > FrontPage
Input wiki folder name. (now newfolder) > test
Input `local' path of CGI. (now /home/mopia/html/test/vikiwiki.cgi) > /home/mopia/html/test/vikiwiki.cgi
Input URI of CGI. (now /~mopia/test/vikiwiki.cgi) > /~mopia/test/vikiwiki.cgi
Input temporary directory. (now /home/mopia/vikiwiki/tmp) > /home/mopia/tmp
Are you sure? (y/n) (now n) > y
Generating folder '/home/mopia/html/test'...
AdminPage.VikiWikiStyle.txt
：
WikiFarm.VikiWikiStyle.txt
Finished.
Generating CGI script '/home/mopia/html/test/vikiwiki.cgi'...Finished.
ruby -Ku tool/chgdiffcvs.rb /home/mopia/html/test/text txt

======== END ========
Please edit CGI script '/home/mopia/html/test/vikiwiki.cgi' if you want to setup particuraly.
  }}}

- WindowsでDirectEditを選択した例（グループ内でのWiki利用）
  {{{
D:\www\mygroup\vikiwiki>ruby -Ku setup.rb
Setup for
0. This Machine
1. FTP (now 0. This Machine) > 0
0
=> You selected This Machine.
Input your home path on WWW. (now /~mopia) > /mygroup/wiki
Input your directory for /mygroup/wiki. (now C:/home/mopia/public_html) > D:\www\mygroup
Input path for VikiWiki. (now D:/www/mygroup/vikiwiki) >
Use for
0. Normal
1. CMS
2. StaticWiki
3. DirectEdit (now 0. Normal) > 3
=> You selected DirectEdit.
Select authorization type
0. none
1. www
2. vikiwiki
3. form (now 3. form) > 1
=> You selected www.
Input administrator account. (now mopia) > administrator
Input your name. (now mopia) > Administrator
Input your mail address. (now hogehoge@hogehoge.hoge) > webmaster
Input LANG. (now ja) > ja
Input ruby path. (now c:/usr/bin/ruby.exe) > d:\ruby\bin\ruby.exe
Input top page name. (now FrontPage) > MyTop
Input wiki folder name. (now newfolder) > project_x
Input `local' path of CGI. (now D:/www/mygroup/project_x/vikiwiki.cgi) >
Input URI of CGI. (now /mygroup/wiki/project_x/vikiwiki.cgi) >
Input temporary directory. (now D:/www/mygroup/vikiwiki/tmp) >
Input static directory(full path). (now D:/www/mygroup/project_x/static) >
Input URI of static directory(full path). (now /mygroup/wiki/project_x/static) >
Input path browsable from client for D:/www/mygroup/project_x. (now file://hogehoge.hoge/www/mygroup/project_x) > file://myserver.xxx.co.jp/mygroup/project_x
Input file extension. (now wiki) >
Are you sure? (y/n) (now n) > y
Generating folder 'D:/www/mygroup/project_x'...
AdminPage.VikiWikiStyle.wiki
：
WikiFarm.VikiWikiStyle.wiki
Finished.
Making static directory 'D:/www/mygroup/project_x/static'...Finished.
Generating CGI script 'D:/www/mygroup/project_x/vikiwiki.cgi'...Finished.
ruby -Ku tool/static.rb -qxd D:/www/mygroup/project_x/vikiwiki.cgi /mygroup/wiki
/project_x/vikiwiki.cgi
Start time 2004-12-24 08:04:41
Delete all static HTMLs ... finished.
Generate index.html ... finished.
：
Generate WikiFarm...Finished.
End time 2004-12-24 08:05:03
ruby -Ku tool/chgdiffcvs.rb D:/www/mygroup/project_x/text wiki

======== END ========
Please edit CGI script 'D:/www/mygroup/project_x/vikiwiki.cgi' if you want to setup particuraly.
}}}

!!! Use for
4つのセットアップタイプから選択します。

:DirectEdit     :Wikiファイルの直接編集
  履歴管理を必要としない場合で、自分用やグループ内のごく限られた
  環境で利用する場合、参照は静的HTML、更新は使い慣れたエディタを
  利用するDirectEditを選択します。

:StaticWiki     :静的Wiki
  ページを参照するごとにCGIが動作していたのでは遅すぎて使い物にならない
  ようなサーバでWikiを構築する場合、StaticWikiを選択します。
  参照は静的HTMLを使用し、更新だけCGIを使用するようになります。

:CMS            :コンテンツ管理
  Wikiのブラウザから即時に更新できる特徴を活かし、
  静的HTMLを公開用にし更新はWikiで行うようなCMS的利用方法をする場合に
  CMSを選択します。

:Normal         :通常のWiki
  静的HTMLを一切作成しない通常のWikiとして利用する場合、Normalを選択します。

!!! Select authorization type
認証方式を選択します。
* none
  noneを指定している場合、認証設定の操作は不要です。
  AdminPageも利用できないのでCGIスクリプトを直接編集して設定してください。
* form認証
  VikiWikiの独自方式によるフォーム＋セッション管理による認証方式です。
  セキュリティ強度はあまり高くありません。
  Wikiのためにユーザを登録したくない場合などに簡易的な認証として使用できます。
  ユーザの登録はSecurityPageから誰でも登録することができます。
* vikiwiki認証
  form認証の方式をBasic認証にしたものです。
* www認証
  WWWサーバが提供する認証方式です。
  簡単なところではWWWサーバのBasic認証を利用する方法があります。
  CGIのREMOTE_USERにユーザ名が渡される方式であれば動作します。
  通常はこれを選択してください。

!!! Input administrator account
管理者のアカウントを指定します。
* www認証の場合、WWWサーバに登録済のアカウントを指定します。
* from認証およびvikiwiki認証の場合、任意の管理者アカウントを指定します。

--------------------------------------------------------------------------------

!! ApacheでsuEXECを使用していない場合

ApacheでsuEXECを使用していない場合、CGIをセットアップしたユーザと
CGIを実行するユーザが異なります。
この場合、ディレクトリのアクセス権を変更する必要があります。

:telnet、sshの場合 :chmodコマンドで権限を変更します。
                    CGIスクリプトのあるディレクトリで以下のコマンドを実行します。
                    {{{
                    chmod o+rwx .
                    find . -type d -exec chmod o+rwx {} \;
                    }}}

:ftpの場合         :FTPツールで権限を変更します。
                    CGIスクリプトのディレクトリとその配下のディレクトリに対し、
                    その他(other)にすべての権限(0777)をつけてください。

--------------------------------------------------------------------------------

!! 動作確認

作成されたCGIスクリプトをエディタで開き、設定されたパラメタを確認してください。
特に''SAFE''の値は使用する環境にしたがって変更するようにしてください。
各パラメタの説明はparameter.txtに記載されています。

Linuxの場合、作成されたCGIスクリプトに実行権をつける必要があります。
WWWサーバの設定が完了していればブラウザからアクセスできます。
TopPageが表示されるので編集リンクをクリックし、内容を更新してください。

DirectEditの場合、指定した拡張子に対応するアプリケーションで開きます。
更新し保存したら最新リンクをクリックするとHTMLが更新されます。

--------------------------------------------------------------------------------

!! アクセス制限

WWWサーバによってアクセス制限の方法が異なります。
VikiWikiでアクセス制限（読み取り禁止）をすべき
ディレクトリおよびファイルは以下のようになります。
ディレクトリかファイルのどちらかで制限をかければいいです。

||拒否ディレクトリ ||data、etc、text
||拒否ファイル     ||passwd、session、*.txt（ページの拡張子）、*.diff、*~

または、許可するファイルを指定する方法もあります。

||許可ファイル     ||*.cgi（CGIの拡張子）、*.html、*.xml、*.css、画像ファイルの拡張子

代表的なWWWサーバは以下のように制限をかけてください。
なお、.htaccessはApache以外は不要なので削除してかまいません。

- Apache
  masterディレクトリに.htaccessを用意しました。
  setup.rbを実行するとコピーされます。
  拡張子をデフォルトの.txt以外にした場合、.htaccessの内容を修正してください。
  WikiFarmにもこの.htaccessは適用されるのでアクセス制限を個別にかける必要はありません。
- IIS
  data、etc、textのプロパティでアクセス許可の読み取りのチェックボックスを外します。
  WikiFarmを作成した場合、アクセス制限を引き継がないためWikiFarmごとに
  アクセス制限をかける必要があります。

--------------------------------------------------------------------------------

!! ユーザ登録

form認証およびvikiwiki認証では管理者アカウントを登録する必要があります。
その他の認証ではこの操作は不要です。
1. SecurityPageを開きます。
2. setup.rbで指定した管理者アカウントを登録します。

--------------------------------------------------------------------------------

!! CGI設定

認証がnone以外の場合、AdminPageでCGI設定を変更することができます。
項目のないパラメタはCGIスクリプトファイルを直接変更する必要があります。
1. AdminPageを開きます。
2. 認証が必要な場合は認証します。
   認証がnoneになっている場合、認証を要求されずアクセス拒否されます。
3. ''CGIの設定を変更する''を選択します。
4. パラメタを変更し設定の登録をします。

--------------------------------------------------------------------------------

!! 注意事項

* ファイルのアップロードをするには、以下のどちらかの対処が必要です。
  + /tmpディレクトリを作成する
  + Tempfile添付ライブラリを修正する
    以下のデフォルトのtmpdirの処理を変更する。
    {{{
    def initialize(basename, tmpdir=ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp')
        if $SAFE > 0 and tmpdir.tainted?
          tmpdir = '/tmp'
        end
    }}}
    ↓
    {{{
    def initialize(basename, tmpdir=ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp')
        if $SAFE == 1 and tmpdir.tainted?
          tmpdir.untaint
        elsif $SAFE > 0 and tmpdir.tainted?
          tmpdir = '/tmp'
        end
        umask = File.umask(0177)
    }}}

--------------------------------------------------------------------------------

!! リンク

* VikiWiki
  http://vikiwiki.net/
* Ruby
  http://www.ruby-lang.org/
* Ruby - mswin32
  http://www.dm4lab.to/~usa/ruby/
* Uconv
  http://www.yoshidam.net/Ruby_ja.html#uconv
* Apache
  http://www.apache.jp/
* AN HTTP Server
  http://www.st.rim.or.jp/~nakata/

