[ITPASS2009]HikiのCGIを介さずCVSツールから編集1

[ITPASSサーバ構築ドキュメント へ戻る]

ここでは管理者側の作業を記す.

ここでの目的は, ブラウザから CGI を介してページを編集するのではなく, CVS なんだから CVS ユーティリティ越しにファイルを編集できるようにしたい である. 実際には cvsroot/CVSROOT 以下のファイル群の設定により, これを実現している.

以下ではまず, Hiki を用意する側で必要な準備について述べる. ユーザが実際に編集を行う際には, [ITPASS2009]HikiのCGIを介さずCVSツールから編集2 の作業を行う必要がある.

Ruby, Perl のインストール

以下では Ruby スクリプトと Perl スクリプトを使用するため, Ruby と Perl をシステムにインストールしておく.

# apt-get install ruby perl

data 領域以下へのグループ書き込み権限の設定

/home/itpass/hiki/data/ 以下の全てのファイルとディレクトリに グループ書き込み権限を設定する. ディレクトリには sbit を立てる.

$ cd /home/itpass/hiki/
$ sudo -u www-data chmod -R g+w data
$ sudo -u www-data chmod 2775 `find data/ -type d`

CVSROOT 以下の編集

CVSROOT 以下のファイルを編集するには, CVSROOT 以下をチェックアウトし, CVS 越しに編集を行う. ここでは cvsroot が存在するホストにログインして 作業すると仮定する.

$ cd   (ホームディレクトリなり, どこか適当なディレクトリ)
$ cvs -d /home/itpass/hiki/cvsroot/ checkout -d hiki_CVSROOT CVSROOT

以降では cvs コマンドを用いた基本操作は可能として話を進める. よく分からない場合は, 地球流体電脳倶楽部 -- CVS に関するメモ など, Web 上の情報や CVS に関する書籍などを参照せよ.

スクリプトの用意

CVS ユーティリティから CGI 上のデータベースを更新するため, また ページをコミットする際, CGI 上で行われるような処理 (末尾の空白の除去など) のチェックを行うためのスクリプトを用意する. 用意したスクリプトを,

/home/itpass/hiki/cvsroot/CVSROOT/

下に置く.

  • コミット前にファイルをチェックするためのスクリプト群 (commitinfo で使用)
    • commitinfo
      • 下記ファイルの情報を書きこんだ commitinfo (CVSROOT 以下にあるオリジナルの commitinfo を上書きする)
    • kanjichecker.pl (地球流体電脳倶楽部 -- CVS に関するメモ -- euc のファイルのみ登録するには より取得)
      • ファイルの文字コードをチェックするスクリプト
    • commitinfo.sh
      • commitinfo ファイル内で下記の複数のスクリプトを 呼び出すためのラッパー
    • extra_spaces_checker.rb
      • 本来は CGI 側で処理される, ファイルの先頭や末尾の 余計な空行の有無をチェックするスクリプト
    • file_creator_checker.sh
      • CVS 越しからのファイル作成を禁止するためのスクリプト (所有者が Apache の設定ファイルで指定される User と異なる場合, タイムスタンプ更新時にエラーが生じるため, Apache を起動する User 以外がファイルを作成することを禁止する必要がある).
    • user_auth_checker.sh
      • ユーザ認証チェッカ
  • コミット前にコミットメッセージをチェックするためのスクリプト群 (verifymsg で使用)
  • コミット後に Hiki データベースの更新やメールを送信するための スクリプト群 (verifymsg で使用)

これらのファイルをダウンロードする. コミットはまだ行わない.

cvsform.pl の編集

cvsform.pl 冒頭の以下の部分を編集する. $mailto0 はデフォルトのメール送信先, $project はメールのヘッダに 付記される情報である. $envelop_from は, 送信先のメールアドレスが 投稿制限される際などに使用する From のアドレスである.

$mailto0 = 'xxxxxxxx@gfd-dennou.xxx';
$envelop_from = '';
$project = 'hiki-commit';

修正後, コミットを行う.

$ cvs add cvsform.pl
$ cvs commit cvsform.pl

loginfo の編集

上記の loginfo では, CVSROOT 以下の編集時にコミットのメールを送信でき るようになっている. もしもメールの送信が必要な場合, DEFAULT の行の行頭 の '#' を消し, xxxx@xxxx.xxxxx.ac.jp となっているメールアドレスを変更 すること.

cvswrappers の編集

地球流体電脳倶楽部 -- CVS に関するメモ -- バイナリファイルを安全に登録するために を参考に, cvswrappers にバイナリで取り扱いたいファイルを 登録する. とりあえず上記サイトで記載されている全ての 拡張子を追加し, コミットする.

$ cvs commit cvswrappers

ダウンロードしたファイルのコミット

新規にダウンロードしたファイルを先に追加, コミットする.

$ cvs add \
  kanjichecker.pl commitinfo.sh  extra_spaces_checker.rb \
  file_creator_checker.sh user_auth_checker.sh \
  msgchecker.pl cvsform.pl html2cgiform.rb hikidb_update.sh

$ cvs ci \
  kanjichecker.pl commitinfo.sh  extra_spaces_checker.rb \
  file_creator_checker.sh user_auth_checker.sh \
  msgchecker.pl cvsform.pl html2cgiform.rb hikidb_update.sh

checkoutlist の編集

ただコミットしただけではリポジトリ内にファイルが展開されないため, checkoutlist にファイルを記述する.

以下のように記載するとよい.

kanjichecker.pl              unable to check out
commitinfo.sh                unable to check out
extra_spaces_checker.rb      unable to check out
file_creator_checker.sh      unable to check out
user_auth_checker.sh         unable to check out
msgchecker.pl                unable to check out
cvsform.pl                   unable to check out
html2cgiform.rb              unable to check out
hikidb_update.sh             unable to check out

編集後, 追加とコミットを行う.

$ cvs add checkoutlist
$ cvs commit checkoutlist

loginfo, veryfymsg, commitinfo のコミット

$ cvs add loginfo veryfymsg commitinfo
$ cvs commit loginfo veryfymsg commitinfo

CGI からの動作チェック

http://133.30.109.21/~itpass/hiki

へアクセスし, CGI からページの作成や削除, 変更を行ってみる. 「編集履歴」ボタンをクリックし, 過去の編集履歴が残っている ことを確認する.

これで Hiki ディレクトリ管理側の作業は終了である. 実際に利用する際には, 各ユーザ個人が [ITPASS2009]HikiのCGIを介さずCVSツールから編集2 を行う必要がある.

[ITPASSサーバ構築ドキュメント へ戻る]