[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
- ユーザ認証チェッカ
- commitinfo
- コミット前にコミットメッセージをチェックするためのスクリプト群
(verifymsg で使用)
- verifymsg
- 下記ファイルの情報を書きこんだ veryfymsg (CVSROOT 以下にあるオリジナルの veryfymsg を上書きする)
- msgchecker.pl
(地球流体電脳倶楽部 -- CVS に関するメモ -- commit メッセージを euc のみに より取得)
- コミットメッセージをチェックするスクリプト
- verifymsg
- コミット後に Hiki データベースの更新やメールを送信するための
スクリプト群
(verifymsg で使用)
- loginfo
- 下記ファイルの情報を書きこんだ loginfo (CVSROOT 以下にあるオリジナルの loginfo を上書きする)
- cvsform.pl
(地球流体電脳倶楽部 -- CVS に関するメモ -- commit をメール通知する設定 より取得)
- コミットログの送信メールを整形するスクリプト
- html2cgiform.rb
- CGI から受け取った HTML ファイルから CGI に渡す情報を 抽出するためのスクリプト
- hikidb_update.sh
- オフラインで CGI スクリプトを呼び出し, Hiki ディレクトリ内で CVS の更新と Hiki データベースの更新を行う.
- loginfo
これらのファイルをダウンロードする. コミットはまだ行わない.
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サーバ構築ドキュメント へ戻る]
Keyword(s):
References:[[ITPASS2009]2009年度サーバ構築ログ] [[ITPASS2009]HikiのCGIを介さずCVSツールから編集2]