まず、sourceforge上では、rubyはcgiとしてしか使えない。
なのでcgi-binしたに配置する訳だが、cgi-bin配下はいろいろ制限がある。
- .htaccessが効かない
- .cgiファイル以外はアクセスできない
- なので、cssなどのリソースファイルもアクセスできない
- cgi-bin下で動かすと、出力されるHTML内のリンクがcgi-binからのURLパスになるため、403が発生する。
このため、無理矢理ドメイン直下で動かす必要があり、これにRwriteRuleを使用し実現する。
このとき、hiki.cgiから出力されるリソースファイルは、ドメイン直下からのパスに変換される。
このため、themeなどはhtdocs下に配置する必要がある。
以下にスクリプトをコピー
/home/groups/{GROUP}/cgi-bin
以下、/home/groups/{GROUP}を{ROOT}とする
hiki.cgiの先頭を修正
修正前
#!/usr/local/bin/ruby
修正後
#!/usr/bin/env ruby
hikiconf.cgiを修正
@data_path = '{ROOT}/privates/hiki/data'
@theme_url = '../theme'
@theme_path = '../htdocs/theme'
.htaccessをリネーム(バックアップ)
テーマを移動
cp {ROOT}/cgi-bin/theme {ROOT}/htdocs/theme
データを非公開ディレクトリに移動。ここではprivatesディレクトリを作成
mkdir -p {ROOT}/privates/hiki
mv {ROOT}/cgi-bin/data {ROOT}/privates/hiki/
{ROOT}/htdocsに.htaccessを作成
RewriteEngine on
RewriteRule ^$ /cgi-bin/hiki.cgi
RewriteRule ^index.html /cgi-bin/hiki.cgi
RewriteRule ^hiki.cgi /cgi-bin/hiki.cgi
0 件のコメント:
コメントを投稿