{{toc}}
{{nazo}}

!HikiFarmが動くまで!
長い道のりでした。やっとHikiFarmがまともに動くようになりました。当サイトの場合はAmritaが所定のライブラリにインストールできないので、HikiWiki自体の稼働にも少しコツが要ります。それも含めてHikiFarmが完全稼働するまでのドキュメントです。

!無謀な挑戦
最初はHikiWikiを単体で動かしてみるのが簡単で良いのかも知れません。でもHikiFarmが気に入ったのと、めんどくさがりの性格とが相まって、いきなりHikiFarmのインストールに決めました。

HikiFarmのインストールはご本家の説明通りでインストールできました。新しいWikiを作るまでは順調だったのですが、出来たWikiサイトは500InternalServerErrorが帰ってきました。

!Amritaのインストール
Hikiを動かす為の前提ライブラリがインストールできてないので動くわけがありません。と言うわけでAmritaのインストールに挑戦。まずはSSHを使えるようにしなければなりません。

!!TelnetとSSH
まず最初にTelnetでの接続を許可しているサーバーでなければなりません。ボクが借りているサーバーはSSHでなら接続を許可しています。Telnetの端末には、この世界では超有名な[[TeraTermPro|http://hp.vector.co.jp/authors/VA002416/]]を使います。

生のTelnetで接続するのはセキュリティ面で危険だそうで、SSHを使うらしいのですが詳しいことは知りません。SSHも超有名らしい[[ttssh|http://www.zip.com.au/~roca/ttssh.html]]を使うのですが、ダウンロード後解凍した物をTeraTermProのインストールディレクトリに放り込むだけです。

余り意味がないかも知れないけれど[[日本語版TeraTermPro|http://www.sakurachan.org/soft/teraterm-j/]]もあるので、「やっぱり日本語だ」という方はどうぞ。

!!strscan
Amritaの動作条件としてstrscanがインストールされている必要があるのでまず最初にこちらを試みる。strscanもAmritaも[[RAA|http://raa.ruby-lang.org/list.rhtml?name=]]から入手できる。

Amritaがインストールの前提条件としてstrscanを要求するので、最初にstrscanをインストールしなければならない。あらかじめFTPで適当なディレクトリにstrscanを解凍した物をアップしておく、Amritaも同じことだから適当にアップしておく。

Telnet(SSH)で接続して、strscanのディレクトリまで移動する。
 cd /home/strscan/
 とか
 cd /home/public_html/strscan/ とかになるかな?
で、ここまで来たらインストールのコマンドを順次実行する。
 $ ruby install.rb config
 $ ruby install.rb setup
 # ruby install.rb install
 #はrootのプロンプトらしい。レンタルの場合大抵$だと思う。
で、正常に終了したらdaneを表示されてインストールが終わる。エラーメッセージが出たら別のディレクトリへのインストールに切り替えるしか仕方がない。僕の場合は成功した。

!!Amrita
続いてAmritaのインストールだ。結論から言うとお借りしているサーバーではAmritaはインストールできませんでした。ライブラリのインストールでmkdirしようとしたときに拒否されているようです。仕方がないので別ディレクトリにインストールします。

Amritaの場所はWebから見えなくても良いのでhtdocsやpublic_htmlなどと同じ階層にruby_libなどのディレクトリを作って、ローカルにあるAmrita/lib内のamritaフォルダをそのまますべてアップします。

これだけでは通常とはamritaの場所が違うのでHikiFarmに教えてやる必要があります。HikiFarmインストールディレクトリにあるhikifarm.confの最初の行RubyのPathで在処を-Iで指示してやります。
 # rubyのパス
 ruby = '/usr/bin/env ruby -I/hoge/lib-ruby/'
これでhikifarmディレクトリにブラウザからアクセスすればhikifarmが立ち上がるはずです。新しいWikiを作成してサイト作りが始まるはずでした。

!index.cgiの改造
私の場合これだけでは動きませんでした。hikifarmが生成する新しいWikiスペースやデータディレクトリのパーミッションがサーバーの設定に合わなかったのです。

標準のままのhikifarmが作り出したディレクトリやファイルのパーミッションは全て744で出来上がります。うちのサーバーにはsuEXECが使われているようでHiki作者に依ればそのまま動くはずですとのことでしたが、残念ながら動きませんでした。そこでhikifarmが作り出すディレクトリやファイルのパーミッションを変更する必要が出てきました。

HIKIFARM_VERSION = '0.2.0'では220行目あたりから始まるcreate_wikiのセクションを加工する必要が出てきました。   File.umask()を使ってサーバーに教えてやる必要があります。

 def create_wiki( wiki, data_path )
    File.umask(0)           #この行を追加する。
    Dir.mkdir( wiki )


うちのサーバーは標準で744をはき出すようですので一旦File.umask(0)をセットして新しいWikiを作ってみます。このときのパーミッションを見てindex.cgiを修正しました。うちの場合は777で作成されましたので、実際に設定したいパーミッションになるよう引き算するように設定します。

パーミッション755にしたいときは、File.umask(022)とすれば良いわけで、744の時は当然File.umask(033)となりますから、自分のサーバーに合わせて設定します。最終的に出来上がるのが。
 def create_wiki( wiki, data_path, cvsroot=nil )
 ++ File.umask(022)
    Dir.mkdir( wiki )
    File.open( "#{wiki}/index.cgi", 'w' ) do |f|
      f.puts( index( wiki ) )
 --   f.chmod( 0744 )
 ++   f.chmod( 0701 )
    end
    File::open( "#{wiki}/hikiconf.rb", 'w' ) do |f|
      f.puts( conf( wiki ) )
    end
 
 ++ File.umask(033)
    Dir.mkdir( "#{data_path}/#{wiki}" )
    Dir.mkdir( "#{data_path}/#{wiki}/text" )
    Dir.mkdir( "#{data_path}/#{wiki}/backup" )
    Dir.mkdir( "#{data_path}/#{wiki}/cache" )
    Dir["#{@default_pages}/*"].each do |file|

の様にすると、新しいWikiスペースのディレクトリは755、index.cgiは701、データ領域のディレクトリとファイルは744で出来ることになります。

この設定を終えてHikiFarmは完成します。HikiFarmから新しいWikiを作って出来たWikiに移動してみると、見事に新しいHikiが動き出しました。