IT pass HikiWiki - [EPA]HikiのCGIを介さずCVSツールから編集(管理側作業) Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

[((<EPAサーバ構築ドキュメント>)) へ戻る]

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

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

== Ruby, Perl のインストール

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

  # apt-get install ruby perl


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

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

  $ cd /home/epalab/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/epalab/hiki/cvsroot/ checkout -d hiki_CVSROOT CVSROOT

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


=== スクリプトの用意

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

* コミット前にファイルをチェックするためのスクリプト群
  (commitinfo で使用)

  * ((<commitinfo|URL:../epa/hiki_cvsroot/commitinfo>))
    * 下記ファイルの情報を書きこんだ commitinfo
      (CVSROOT 以下にあるオリジナルの commitinfo を上書きする)

  * kanjichecker.pl
    (((<地球流体電脳倶楽部 -- CVS に関するメモ -- euc のファイルのみ登録するには|URL:http://www.gfd-dennou.org/library/cc-env/cvs/customize/cvs-eucfile.htm>)) より取得)
    * ファイルの文字コードをチェックするスクリプト

  * ((<commitinfo.sh|URL:../epa/hiki_cvsroot/commitinfo.sh>))
    * commitinfo ファイル内で下記の複数のスクリプトを
      呼び出すためのラッパー

  * ((<extra_spaces_checker.rb|URL:../epa/hiki_cvsroot/extra_spaces_checker.rb>))
    * 本来は CGI 側で処理される, ファイルの先頭や末尾の
      余計な空行の有無をチェックするスクリプト

  * ((<file_creator_checker.sh|URL:../epa/hiki_cvsroot/file_creator_checker.sh>))
    * CVS 越しからのファイル作成を禁止するためのスクリプト
      (所有者が Apache の設定ファイルで指定される User と異なる場合,
      タイムスタンプ更新時にエラーが生じるため, Apache を起動する User
      以外がファイルを作成することを禁止する必要がある).

  * ((<user_auth_checker.sh|URL:../epa/hiki_cvsroot/user_auth_checker.sh>))
    * ユーザ認証チェッカ

* コミット前にコミットメッセージをチェックするためのスクリプト群
  (verifymsg で使用)

  * ((<veryfymsg|URL:../epa/hiki_cvsroot/veryfymsg>))
    * 下記ファイルの情報を書きこんだ veryfymsg
      (CVSROOT 以下にあるオリジナルの veryfymsg を上書きする)

  * msgchecker.pl
    (((<地球流体電脳倶楽部 -- CVS に関するメモ -- commit メッセージを euc のみに|URL:http://www.gfd-dennou.org/library/cc-env/cvs/customize/cvs-eucmsg.htm>)) より取得)
    * コミットメッセージをチェックするスクリプト

* コミット後に Hiki データベースの更新やメールを送信するための
  スクリプト群
  (verifymsg で使用)

  * ((<loginfo|URL:../epa/hiki_cvsroot/loginfo>))
    * 下記ファイルの情報を書きこんだ loginfo
      (CVSROOT 以下にあるオリジナルの loginfo を上書きする)

  * cvsform.pl
    (((<地球流体電脳倶楽部 -- CVS に関するメモ -- commit をメール通知する設定|URL:http://www.gfd-dennou.org/library/cc-env/cvs/customize/cvs-commitmail.htm>)) より取得)
    * コミットログの送信メールを整形するスクリプト

  * ((<html2cgiform.rb|URL:../epa/hiki_cvsroot/html2cgiform.rb>))
    * CGI から受け取った HTML ファイルから CGI に渡す情報を
      抽出するためのスクリプト

  * ((<hikidb_update.sh|URL:../epa/hiki_cvsroot/hikidb_update.sh>))
    * オフラインで CGI スクリプトを呼び出し, Hiki ディレクトリ内で
      CVS の更新と Hiki データベースの更新を行う.

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


=== 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 に関するメモ -- バイナリファイルを安全に登録するために|URL:http://www.gfd-dennou.org/library/cc-env/cvs/customize/cvs-binary.htm>))
を参考に, 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://epa.scitec.kobe-u.ac.jp/~epalab/hiki

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


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

[((<EPAサーバ構築ドキュメント>)) へ戻る]