初心者向けのセットアップガイドになるように書いていきます。 文章は得意じゃないので推敲を重ねていく、という前提で。
CGI環境の確認
以下はVikiWikiを使用する前の環境のチェック内容です。
- Windowsの場合
- パスの区切り記号
Windowsではパスを通常¥(円記号)であらわしますが、 Rubyなどのスクリプト言語ではUNIX互換のために/(スラッシュ)を 使用します。
- Rubyのインストール
Ruby-mswin32 を参考にしてください。
- Rubyが実行できますか?
コマンドプロンプトを開いて ruby -v を入力し Enter を押して Rubyのバージョン情報が出力されることを確認してください。
- パスの区切り記号
- Linuxの場合
- telnet(SSH経由を含む)が使用できますか?
telnetが利用できない場合、クライアント側で解凍+セットアップして サーバにFTPで転送する方法が必要です。 これはちょっとメンドウです。
- FTPが使用できますか?
FTPが使用できない場合、ファイルを設置するための代替手段がありますか?
- Rubyのフルパスはどこですか?
CGIスクリプトにRubyのフルパスを書く必要があります。
telnet等が使える環境であれば、ログインした後 which ruby を実行することでフルパスが表示されます。また、telnet等が使えない環境でもCGIが実行できる環境があれば、次のCGIスクリプトを実行する事でフルパスが表示されます。表示されない場合、大抵はRubyが入っていないか、奥まったところ(パスの通っていないところ)に入っているかですので、必要があればサーバ管理者にお尋ねください。
#!/bin/sh echo "Content-Type: text/plain" echo "" echo `which ruby`
- telnet(SSH経由を含む)が使用できますか?
- Apacheの場合
CGIを実行可能にする必要があります。 私も不勉強で詳しい説明はできません。
- mod_rubyを利用する場合
ほとんどわかりません。 詳しい人に聞いてください。
- mod_rubyを利用する場合
- IISの場合
適当な拡張子(.rbや.rbxが多い)に対する実行プログラムの割り当て というイメージで行います。 Perlを参考に設定するような記述があって、確かこんな感じだったと思います。 利用するコード系にしたがって -Ku、-Ks、-Ke を指定します。
C:\utility\bin\ruby.exe -Ku %s %s
- 簡単なCGIスクリプトを動作させることができますか?
- Apacheの場合
以下をa.cgiという名前でCGIを実行できるディレクトリに作成します。 a.cgiには実行権(chmod +x a.cgi)を付与します。 ブラウザからそのCGIのURLでアクセスし、Hello World!が表示されれば CGIの実行に成功したことになります。 なお、拡張子.cgiは環境によって異なりますが、通常は.cgiで問題ないはずです。
- IISの場合
以下をIISでRubyに割り当てた拡張子でCGIを実行できるディレクトリに作成します。 ブラウザからそのCGIのURLでアクセスし、Hello World!が表示されれば CGIの実行に成功したことになります。
- CGIスクリプト例1(a.cgi や a.rbxなど適切な拡張子で作成)
これがエラーとなる場合はWWWサーバのCGIの設定が誤っています。
#!/usr/bin/ruby -Ku print <<EOS Content-Type: text/plain Hello World! EOS
- CGIスクリプト例2(a.cgi や a.rbxなど適切な拡張子で作成)
これがエラーとなる場合はディレクトリの書き込み権限が誤っています。
#!/usr/bin/ruby -Ku File::open("test.log", "w") do |f| f.print <<EOS Content-Type: text/plain Hello World! EOS end print File::readlines("test.log").join - CGIスクリプト例3(a.cgi や a.rbxなど適切な拡張子で作成)
例2がエラーとなった場合には環境変数の一覧を取得して環境に誤りがないか調べます。
#!/usr/bin/ruby -Ku puts "Content-Type: text/plain" puts "" print ENV.map{|x| x.join("=")}.join("\n")
- Apacheの場合
VikiWikiのセットアップ方法
以下はVikiWikiのセットアップ方法です。
- VikiWikiをダウンロードしてください。
- ZIPファイルが解凍できるツールを用意してください。
- Linuxなどの場合
unzipコマンドやgzipコマンドで解凍します。
- Windowsの場合
WINZIPなどの解凍ツールでもunzipコマンドの移植版でもzipは解凍できます。 XPであればOSの機能であるんではないかと記憶しています?
- ローカルで解凍してサーバにFTP転送する(telnetが使用できない)場合
ローカルで解凍してください。 その後FTPでサーバにアップロードしてください。 アップロードしなければならないファイルはvikiwiki/vikiwikiディレクトリ配下一式です。 setup.rbやmaster、toolディレクトリなどはCGIの実行には不要ですので アップロードする必要はありません。 vikiwiki/vikiwikiディレクトリ配下のファイルはすべてテキストファイルなので アスキーモードで転送してください。 通常は転送後にファイルのパーミッションを変更する必要はありません。 CGIの実効ユーザが各ファイルの読み取り権をもっていれば大丈夫です。
- Linuxなどの場合
- VikiWikiを通常のモードでテストのための仮設置をします。
mod_rubyは使用しないようにしてください。
- VikiWikiを解凍したディレクトリに移動します。
- そのディレクトリにsetup.rbというスクリプトファイルが存在することを確認します。
- 以下のコマンドを実行します。
UNIX系は上、Windows系は下です。 Windows系では/ではなく¥をパス区切りに使用しても動作します。 環境に合わせて以下の部分は変更してください。
- /home/xxx/public_htmlやD:/www/wikiにはCGIを設置するパスを指定します。
- .cgiはCGIスクリプトの拡張子を指定します。
- FTP転送する場合は適当なパスを指定してください。後で書き換えますから。
ruby -Ku setup.rb /home/xxx/public_html/test/test.cgi ruby -Ku setup.rb D:/www/wiki/test/test.cgi
以下はコマンドの入力例です。
Use for 0. Normal 1. CMS 2. StaticWiki 3. DirectEdit (now Normal) > 0 Select authorization type 0. none 1. www 2. vikiwiki 3. form (now form) > 0 Input your name. (now HOGE hogehoge) > Input your mail address. (now hogehoge@hogehoge.hoge) > Input LANG. (now ja) > Input ruby path. (now /usr/bin/ruby) > Input temporary directory. (now /home/xxx/vikiwiki/tmp) > Input top page name. (now FrontPage) > Input local path of CGI. (now /home/xxx/public_html/test/test.cgi) > Input URI of CGI. > /~xxx/test/test.cgi Are you sure? (y/n) (now n) > y - 指定したディレクトリとファイルができていることを確認します。
- FTP転送の場合は以下のFTP転送の場合のアップロード方法を参照してください。
- UNIX系の場合とCygwin版のRubyを使用している場合は、実行権を付与します。
chmod +x test.cgi
- ブラウザからそのCGIのURLでアクセスし、VikiWikiの画面が表示されることを確認してください。
FTP転送の場合のアップロード方法
FTP転送の場合は、ローカルでCGIスクリプトを生成してしまっているので パスを修正していかなくてはなりません。 CGIを動作させるために修正が必要な個所は以下です。
#!/usr/bin/ruby -Ku $VIKIWIKIDIR="/home/mopia/vikiwiki/vikiwiki" $VIKIWIKITMP="/home/mopia/tmp" $VIKIWIKIRUBY="/usr/bin/ruby" "SCRIPT_NAME"=>nil, "STATICDIR"=>nil, "STATICURI"=>nil,
- #!の後ろにはRubyのパスを指定します。(IISの場合は関係ありません)
- $VIKIWIKIDIRにはFTPサーバにアップロードしたVikiWikiのディレクトリを指定します。
- $VIKIWIKITMPは作業用ディレクトリを指定します。存在するパスで書き込み権限のあるパスを指定してください。
- $VIKIWIKIRUBYには#!の後ろのパスと同じものを指定してください。
- SCRIPT_NAME、STATICDIR、STATICURIの値はnilにしておいてください。
次にサーバにFTPでアップロードします。
- 作成したディレクトリごとアップロードしてください。
- UNIX系OSであればtest.cgiに実行権を付与します。
VikiWikiのアクセスでエラーとなってしまった場合
ここから本題です。 以下のことをチェックしてください。
- □ test.cgiの1行目のRubyのパスは正しいですか?(IISの場合は関係ありません)
UNIX系OSの場合、1行目の#!の後ろを以下のように変更してみてください。 この変更によりうまく動作する場合、Rubyのパスが誤っていることになります。
#!/usr/bin/ruby -Ku ↓ #!/usr/bin/env ruby $KCODE='u'
- □ $VIKIWIKIDIRは正しいですか?
- □ $VIKIWIKITMPのディレクトリは存在していますか?
- □ Apacheの場合、.htaccessを削除してみてください。
- vikiwiki.cgiが置いてあるディレクトリのdata/にapacheが書き込みを行えますか?
setuidでapacheがユーザ権限で動いているならば パーミッションは700、 そうでないならば、707にしておく必要があります。
まだ続く...