[Memo2012][ITPASS]Hikiのページ毎の基本設定
[ITPASSサーバ構築・運用ドキュメント へ戻る]
12/10/16 に Hiki のページ毎の基本設定を柏本が行った.
Hikiのページ毎の基本設定
実行ユーザー
このページでは, ユーザは itpass だと仮定しての作業を書いている.
itpass に成り代わって作業するためには, 以下のコマンドを実行すればよい.
$ sudo -s -u itpass
ただし, サーバ構築作業の手順を変更したことにより itpass アカウントが存在しなかったため, ika から passwd, shadow, group ファイルの itpass の行をコピーして tako に追加した.
Hiki用ディレクトリの作成
まず, /home/itpass/ の所有者が root となっていたため, 以下のコマンドを実行した.
# chown -R itpass:itpass itpass
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`
ただし, 現時点で itpass の root としてコマンドを実行することができないため, tako に戻り作業を行った. 以下にも, sudo を用いた作業がいくつかあるが, それらは全て tako に戻り作業を行っている.
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>
という記述があるかどうか確認したが, 末尾以外に
<Directory "/home/itpass/public_html/hiki">
AllowOverride ALL Options -MultiViews
</Directory>
という記述があったため, 上記のように書き直した.
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 以外のファイルやディレクトリを消す) という作業を行おうとしたが, 誤って cgi や cvsrootも消してしまったため, これまでの cgi と cvsroot に関する作業をやり直した. その後, data 領域以下について正しく作業を行い, ページを閲覧することができた.
管理者用パスワードの設定
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 にはユーザ名 cassy を与えた. その後, 以下のコマンドで パスワードファイルを作成した. コマンド入力後にパスワードを 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'
を追加した.
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 を選択した.
必要なユーザを「ユーザの追加」から追加し, 「編集の制限」で「登録ユーザのみ編集できるように制限しますか?」で「はい」を選択した
(ここはテストページなので, 適当にわかりやすいユーザ itpasspass を作成し, 適当なパスワードを設定した).
編集ユーザのパスワードを各自で設定可能にする
上記の 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 のそのユーザの 欄を上書きする. 中身が同じ場合は何もしない.
- 各 Hiki ページでスクリプト (下記参照) が 定期的実行されるように CRON を設定する.
各ユーザが行う作業に関しては [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
ただし,
$ wget http://itpass.scitec.kobe-u.ac.jp/~itpass/epa/hiki_pagesetup/hiki-passwd-collector.rb
コマンドが正常に起動しなかったため,
$ wget http://epa.scitec.kobe-u.ac.jp/~itpass/server/2011/hiki_pagesetup/hiki-passwd-collector.txt $ mv hiki-passwd-collector.txt hiki-passwd-collector.rb
とし,
$ cp hiki-passwd-collector.rb /home/itpass/hiki/data $ chmod 755 /home/itpass/hiki/data/hiki-passwd-collector.rb
は権限がないため実行できなかったので, root で実行した.
以下のコマンドで, 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
このとき, E138: viminfoファイル /var/www/.viminfo を保存できません! というエラーがでたが, 書き込み自体はできていたため問題ないと判断した.
この設定は,
- 毎日 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
へアクセスし, admin でないアカウント itpasspass で CGI からページの作成や削除, 変更を行ってみた. 「更新履歴」ボタンをクリックし, 過去の更新履歴が残っていることを確認した.
Keyword(s):
References:[[ITPASS2012]2012年度サーバ構築ログ]