[TEBIKI]Hikiのページ毎の基本設定

概要

以下では, /home/itpass/hiki に Hiki 用の資源を置き, 実行ユーザが itpass であると仮定している. また, Hiki によって作成・変更される資源は CVS によって管理するようにする.

以下ではサーバ構築中を想定して, アドレスを tako の IP アドレス (133.30.109.21) で指定するようにしているが, サーバ構築完了後に新たに Hiki を作成する場合では ホスト名 (itpass.scitec.kobe-u.ac.jp) に読み替えて良い.

実行ユーザー

実行ユーザになりかわる.

例えば ユーザ itpass に成り代わって作業するためには, 以下のコマンドを実行すればよい.

$ sudo -s -u itpass

Hiki用ディレクトリの作成

Hiki 用のディレクトリを作成する.

$ cd /home/itpass
$ mkdir hiki
$ chmod 2775 hiki

hikisetup による初期設定

hikisetup コマンドを用いて, 必要なファイルを /home/itpass/hiki 以下にインストールする. データパスはデフォルト のものを選ぶ.

$ cd /home/itpass/hiki
$ hikisetup --lang ja

INFO: hiki basedir is /home/itpass/hiki
Please input data_path [/home/itpass/hiki/data]:

すると, 以下のようなファイル群が作成される.

$ tree -a
.
├── .htaccess
├── data
│     └── text
│            ├── FrontPage
│            ├── InterWikiName
│            ├── SideMenu
│            └── TextFormattingRules
├── hiki.cgi
├── hikiconf.rb
└── theme
       ├── hiki
       │     ├── README
       │     └── hiki.css
       └── hiki_base.css

ディレクトリ構成の変更とパーミッション設定

下に述べる作業を行うことにより, 大まかには次の三点を行う.

  • ディレクトリ構成を以下のようにする.

    /home/itpass/hiki/cgi/      cgi 本体や設定ファイル, テーマを格納
                      data/     hiki のデータ (展開される場所)
                      cvsroot/  hiki のデータのリポジトリ
  • パーミッション, 所有者, 所有グループを以下のようにする.

    /home/itpass/hiki/       rwxrwsr-x itpass   itpass
                 cgi/       rwxrwsr-x itpass   itpass
                 data/       rwxrwsr-x www-data www-data
                 cvsroot/    rwxrwsr-x www-data www-data
  • 公開に際して, /home/itpass/public_html/hiki から /home/itpass/hiki/cgi にシンボリックリンクをはる.
    • Web からは https://133.30.109.21/~itpass/hiki へアクセスすることで Hiki ページを見ることが出来るようになる.

具体的な作業例を以下に述べる. ただし, cvsroot に関しては別途 cvs コマンド から作成するため, 下記の #cvsroot の作成 を参照のこと.

hikisetup で作成されたファイルの移動

$ cd /home/itpass/hiki
$ mkdir cgi

$ mv .htaccess hiki.cgi hikiconf.rb theme cgi/

$ chmod -R g+w cgi
$ chmod 2775 `find cgi/ -type d`

data ディレクトリのパーミッション設定

www-data に書き込み/読み込み権限を渡す.

$ sudo chown -R www-data:www-data data
$ sudo chmod -R g+w data
$ sudo chmod 2775 `find data/ -type d`

public_html 以下からのシンボリックリンクの作成

$ cd /home/itpass/public_html
$ ln -s ../hiki/cgi hiki

CVS 管理の準備

CVS のインストール

Hiki のデータを CVS で管理する. そのために, CVS をシステムにインストールする. Debian の場合には cvs パッケージをインストールすればよい.

# apt-get install cvs

リポジトリの場所を問われた場合は作成しないと答える (後で別途作成するため).

cvsroot の作成

CVS データを管理するための CVS レポジトリの作成を行う.

$ sudo cvs -d /home/itpass/hiki/cvsroot init

作成後, cvsroot ディレクトリに関しても権限を www-data に渡す.

$ cd /home/itpass/hiki
$ sudo chown -R www-data:www-data cvsroot
$ sudo chmod 2775 `find cvsroot/ -type d`

cvsroot の中にあるファイルに関してはグループ書き込み権限は不要である. (ディレクトリに対しては, 上記のようにグループ書き込み権限が必要である).

ファイルへのアクセス制御の設定

/usr/local/apache2/conf/httpd.conf の末尾に

<Directory "/home/itpass/public_html/hiki">
     AllowOverride FileInfo AuthConfig Limit Indexes Options=ExecCGI,FollowSymlinks
</Directory>

という記述があるかどうか確認し, なければ付け足す. (itpassの場合は既に [ITPASS2011a]apache2のインストールと設定#設定ファイルの編集 で作業したはずなので確認するだけでよい)

CGI の基本動作のチェック

Apache を再起動 ([ITPASS2011a]apache2のインストールと設定#動作チェック を参照)して

https://133.30.109.21/~itpass/hiki

へアクセスし, Hiki のトップページが見えることを確認する. もしパーミッションに関するエラーが表示されるようならば, 下の作業を行ってからもう一度アクセスする.

なお, この初回アクセス時に /home/itpass/hiki/data/ 以下に, cache, info.db, text 等のファイルが自動的に 作成されるはずである. これらに関するパーミッションも再度設定する.

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

RD 形式で記述するための作業

/home/itpass/hiki/cgi/hikiconf.rb の末尾に

# RD 形式で記述するための設定
#   header_depth では '=' を <h2> にするよう設定
@style = 'rd+'
@options['rd.header_depth'] = 2

を追加する. 上記により, header_depth では = を <h2> にするように設定できる.

ファイルの書き換えが終われば作業完了である. 確認のため,

https://133.30.109.21/~itpass/hiki

へアクセスしてみる. この際, 「Error! Please edit this page again.」 のようなメッセージが表示される場合には, 一度 data 領域以下を #hikisetup による初期設定 の状態に戻す (data および data/backup 以外のファイルやディレクトリを消す) と良い.

当然ながら, まだ CVS 管理していないため消したデータは戻らない. したがってデータを書き溜めた後にこれを行う際には注意せよ.

管理者用パスワードの設定

https://133.30.109.21/~itpass/hiki

へアクセスし, 右上の「管理」から環境設定ページへ移動し, 左側の「パスワード」から管理者用パスワードを設定する. なお, 管理者のアカウント名は admin である.

ここでパスワードを設定すると, 以後管理ページに移動するには右上の「ログイン」ボタンからログインする必要がある. その際にはアカウント名 (admin) と設定したパスワードが必要になる.

htaccess ファイルによるパスワード制限

これは, ページ全体の閲覧にパスワード制限を設けるための設定である. この IT pass HikiWiki には設定していないが, 閲覧自体に制限をする際には以下を参照せよ.

ここでは, /~itpass/hiki へパスワード制限を掛けることにする.

まず, /home/itpass/hiki/cgi/.htaccess を編集する.

$ cd /home/itpass/hiki/cgi
$ vi .htaccess

以下を追加する.

AuthType Basic
AuthName "IT pass Hikiwiki"
AuthUserFile /home/itpass/.htpasswd-hiki
Require user XXXXXXXX

XXXXXXXX にはユーザ名を与える. その後, 以下のコマンドで パスワードファイルを作成する. コマンド入力後にパスワードを 2 回聞かれるのでパスワードを入力する.

$ htpasswd -c /home/itpass/.htpasswd-hiki XXXXXXXX

パスワードの設定が完了したら再度

https://133.30.109.21/~itpass/hiki

へアクセスし, パスワード制限がかかっているかを確認する.

シンボリックリンクファイルの公開許可

シンボリックファイルを公開可能にするため, .htaccess の編集を行う.

$ cd /home/itpass/hiki/cgi
$ vi .htaccess

以下の一行を .htaccess に追加する.

Options +FollowSymLinks

なお, 元ファイルとシンボリックリンクとで所有者が異なる場合に 公開を許可しないようにしたければ,

Options +SymLinksifOwnerMatch

とすればよい.

文字コードの設定

ページのキャラクタセットを EUC-JP にセットする. /home/itpass/hiki/cgi/hikiconf.rb に元から以下のような 記述があるので, @charset のコメントアウトを外して (前のシャープマークを削除して), 設定を有効にする.

変更前

# ページのキャラクタセット【オプション】
#@charset         = 'EUC-JP'

変更後

# ページのキャラクタセット【オプション】
@charset         = 'EUC-JP'

CVS によるページ管理

#cvsroot の作成 で作成した cvsroot 以下で, Hiki ページを管理するための手引きを以下に記す.

hiki/data/text の import

現在 /home/itpass/hiki/data/text 以下に存在するデータを cvsroot 以下に格納する.

$ cd /home/itpass/hiki/data/text
$ sudo -u www-data cvs -d /home/itpass/hiki/cvsroot import -m 'Initial import' hiki v_tag r_tag

格納後, そのデータをチェックアウトしておくこと. (次回の編集時に競合を起こすため).

$ cd ../
$ sudo -u www-data cvs -d /home/itpass/hiki/cvsroot co -d text hiki

hikiconf.rb の編集

/home/itpass/hiki/cgi/hikiconf.rb の末尾に

#
# CVS によるページの管理
#
@repos_type = 'cvs'
@repos_root = '/home/itpass/hiki/cvsroot'

を追加する. cvsroot の場所は #cvsroot の作成 で作成した ディレクトリを指定すること.

history.rb の有効化

編集履歴を表示するために, 管理画面の左側の「プラグイン選択」を選び, "history.rb" にチェックをつけて OK ボタンを押す.

動作テスト

CGI からページの作成や編集を行ってみよう.

history.rb プラグインを導入したため, ページを選択すると右上に「更新履歴」というボタンが追加されているはずである. これを選ぶと, 更新履歴や差分を見ること可能である.

ページの基本情報の設定

Hiki の Top から admin でログインし, 「管理」メニューから 基本情報を設定する. 以下は設定例である.

基本:
  サイト名:
    IT pass Hikiwiki
  著者名:
    IT pass members
  メールアドレス
    xxxx@xxxxxxx.xx.xx (適当に設定)
  更新をメールで通知
    非通知

CGI からの環境設定

Hiki の Top から admin でログインし, 「管理」メニュー へ移動後, 「表示設定」へ移動し, 以下の設定を行う.

  • サイドバーの設定: 使用する
  • オートリンクの利用: 使用する
  • WikiName によるリンク機能の利用: 使用する

スタイルシートの変更

Hiki のテーマとして佐々木氏作成の graph-paper を改変した epa-itpass を使う. スタイルシート本体と関連する画像は <URL:/~itpass/hiki/theme/epa-itpass/> から入手できる.

/home/itpass/hiki/cgi/theme/epa-itpass を作成し, 上記から入手できるファイル群をこのディレクトリ以下に置く.

$ mkdir ~itpass/hiki/cgi/theme/epa-itpass

これが完了したら, ブラウザから hiki のページを開き, admin でログインして [管理] メニューの [表示設定] でテーマとして Epa-itpass を選択し, 「OK」ボタンをクリックする.

編集ユーザ制限

プラグインとして edit_user.rb を使用する.

まず, Hiki のトップページから admin でログイン後「管理」を選択する. その後, 左の「プラグイン選択」から edit_user.rb を選択する.

必要なユーザを「ユーザの追加」から追加し, 「編集の制限」で「登録ユーザのみ編集できるように制限しますか?」で「はい」を選択する

(ここはテストページなので, 適当にわかりやすいユーザを作成し, 適当なパスワードを設定する).

編集ユーザのパスワードを各自で設定可能にする

上記の edit_user.rb では, 管理者アカウント admin になって「ユーザ編集」からアカウントとパスワードの設定を行う. しかしこれでは, 各ユーザが自分のパスワードの変更などを行うために管理者アカウントのパスワードを知っていなければならず, つまるところ全てのユーザが管理者アカウントのパスワードを知っていなければならない. これはアカウント管理上よろしくない.

そこで, 各ユーザが自身の編集ユーザ作成やパスワード設定を可能にできるようにする. そのためには, ユーザと管理者でそれぞれ次のような準備が必要である.

  • 各ユーザが行う作業
    • Hiki を所有するグループへ追加してもらう
    • Hiki 編集用のパスワードを設定する
      • 自分のホームディレクトリ以下にパスワードファイル ~/.hiki-passwd を作成する.
  • 管理者が行う作業
    • 各 Hiki ページでスクリプト (下記参照) が 定期的実行されるように CRON を設定する.
      • これにより, Hiki ページを所有するグループに含まれるユーザのホームディレクトリ以下にある ~/.hiki-passwd を読み込み, パスワードが集積しされる. そしてパスワードの管理ファイルである data/hiki.conf のパスワードエントリを上書きする.
      • data/hiki.conf へのパスワードエントリ上書きルールは以下の通り. なお, 以下での「編集ユーザ」は data/hiki.conf 内のパスワード エントリに含まれる (= CGI を編集できる) ユーザのことを指す. また, ここでの「ユーザ」は, Hiki ページの管理グループ (例えば itpass) のメンバーと仮定する. (メンバーか否かは, /etc/group の itpass のエントリにメンバーとして含まれているか否かで判断する).
        • 個々のユーザの ~/.hiki-passwd の有無に関わらず, 既存の編集ユーザの削除は行わない. (削除は管理者が CGI 上から手動で行う).
        • あるユーザがまだ編集ユーザには含まれておらず, かつそのユーザのホームディレクトリに ~/.hiki-passwd ファイルが 作成されている場合, そのユーザを data/hiki.conf の パスワードエントリに追加する.
        • あるユーザはすでに編集ユーザに含まれており, そのユーザの ~/.hiki-passwd の内容と data/hiki.conf の パスワードエントリが異なる場合, data/hiki.conf のそのユーザの 欄を上書きする. 中身が同じ場合は何もしない.

各ユーザが行う作業に関しては [TEBIKI]Hikiの編集ユーザのパスワード設定 にまとめてあるのでそちらを参照のこと. ここでは, 管理者が行う作業を記す.

上記の「スクリプト」には, このために作成した hiki-passwd-collector.rb を用いる. これを data ディレクトリ以下に置く. data ディレクトリ以下は www-data ユーザの管理下なので, 所有者及びグループは www-data とする.

$ wget http://itpass.scitec.kobe-u.ac.jp/~itpass/epa/hiki_pagesetup/hiki-passwd-collector.rb
$ cp hiki-passwd-collector.rb /home/itpass/hiki/data
$ chmod 755 /home/itpass/hiki/data/hiki-passwd-collector.rb
$ sudo chown www-data:www-data /home/itpass/hiki/data/hiki-passwd-collector.rb

以下のコマンドで, www-data ユーザとして CRON の設定を行う. なお, 以下のようにコマンドした際には, 環境変数 EDITOR で設定されるエディタで開かれるため, エディタにこだわりがある場合は この環境変数を設定してからこのコマンドを実行すること. ここでは, EDITOR として vi を使用する場合を記す.

ユーザ www-data になってから

$ export EDITOR=vi

を実行する. その後 crontab を編集モードで開く.

$ crontab -e

crontab に以下のように書き込み, 保存する.

25 3 * * *     umask 002; cd /home/itpass/hiki/data && /usr/bin/ruby ./hiki-passwd-collector.rb -b -q -o hiki.conf -g itpass

この設定は,

  • 毎日 3:25 に
  • umask 002 を設定 (作成されるファイルにグループ書き込み権限をつける)
  • /home/itpass/hiki/data へ移動後
  • ruby で hiki-passwd-collector.rb を実行する (オプションの詳細は, このコマンドに -h をつけた際に表示される ヘルプを参照のこと).
    • -b: バックアップファイルを作る
    • -q: メッセージを表示しない
    • -o hiki.conf: hiki.conf ファイルの変更を行う
    • -g itpass: itpass グループに含まれるユーザのパスワードファイルを探査

を意味する. crontab ファイルの書き方に関しては, crontab (5), [TEBIKI]cron の設定 を参照のこと.

CGI からの動作チェック

https://133.30.109.21/~itpass/hiki

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