[Memo2008][EPA]tako作業メモ(納多)(080731)

ezmlm

ezmlm のテスト

注意: '_at_' は '@' に読み替えること.

メーリングリスト (ML) を作成する. 詳細は ezmlm-make の man (日本語訳) 参照. ここでは, chikuwa1 ユーザで, chikuwa1-testlist というメーリングリストを作成する.

$ mkdir ~chikuwa1/ezmlm-test
$ ezmlm-make /home/chikuwa1/ezmlm-test/testlist /home/chikuwa1/.qmail-testlist chikuwa1-testlist tako.epa.scitec.kobe-u.ac.jp

上記のコマンドの意味は,

  • メーリングリストに関する情報を /home/chikuwa1/ezmlm-test/testlist に格納する
  • /home/chikuwa1/.qmail-testlist を .qmail ファイルとする
  • メーリングリスト名は chikuwa1-testlist とする
  • メーリングリストのドメインは tako.epa.scitec.kobe-u.ac.jp とする

となる. 上記から, メーリングリストのアドレスは chikuwa1-testlist_at_tako.epa.scitec.kobe-u.ac.jp になる.

上記のコマンドにより, ~chikuwa1/ezmlm-test/testlist が作成される.

次に作成した ML に ML 主催者が手動で購読者を追加する. 詳細は ezmlm-sub の man (日本語訳) 参照.

$ ezmlm-sub /home/chikuwa1/ezmlm-test/testlist chikuwa1_at_tako.epa.scitec.kobe-u.ac.jp

上記のコマンドの意味は, 「/home/chikuwa1/ezmlm-test/testlist で管理しているメーリングリストに

chikuwa1_at_tako.epa.scitec.kobe-u.ac.jp を追加する」

となる.

登録されているアドレスは,

$ ezmlm-list /home/chikuwa1/ezmlm-test/testlist

で一覧される. 詳細は ezmlm-list の man (日本語訳) を見よ.

登録が終了したら ML へ投稿してみる. 先程登録したアドレスへ届くか確かめる.

$ echo Subject:Ezmlm_Test | qmail-inject chikuwa1-testlist@tako.epa.scitec.kobe-u.ac.jp

次に ML の自動処理コマンドを確かめる. 自動処理コマンドの詳細は <URL:http://mlm.qmail.jp/ezmlm/chart.html> を参照のこと. 始めに投稿アーカイブから記事を取り出すコマンドを試す. 記事が送られてくるかを確認する.

$ qmail-inject chikuwa1-testlist-get.1_at_tako.epa.scitec.kobe-u.ac.jp < /dev/null

chikuwa1-testlist 宛てに過去記事が送られることを確認.

次に ML 参加者による自動登録抹消を試す. 確認メールが送られてくるのでその指示に従い登録抹消する.

$ qmail-inject chikuwa1-testlist-unsubscribe_at_tako.epa.scitec.kobe-u.ac.jp < /dev/null 

「登録を削除する場合は以下のアドレスに空メールを送れ」という内容のメールが届くので, そのようにする. しばらくすると削除完了のメールが届く.

登録を抹消できたかどうか確認するため, ML 登録アドレス一覧を見る.

$ ezmlm-list /home/chikuwa1/ezmlm-test/testlist

ezmlm-idx のインストール

ezmlm に idx パッチを当てることで, メッセージをまとめて読むのに便利なダイジェスト機能の利用や, Subject の加工ができるようになる.

ezmlm-idx のダウンロード

バージョン 0.40 の ezmlm-idx をダウンロードする. 最新版として既に 7.0.0 まで出ているらしいが ( <URL:http://www.ezmlm.org/archive/> 参照 ), Web にインストールドキュメントがあまり出回っていないため, 0.40 を使ってしまう.

# cd /usr/local/src
# wget http://www.ezmlm.org/archive/0.40/ezmlm-idx-0.40.tar.gz

ezmlm のソースコードへのパッチあて

以下の ezmlm-0.53 は [EPA]ezmlmのインストールと設定#ezmlm のパッチあてとビルド で使用されたディレクトリであることを想定している. 特に conf-bin や conf-man などが変更されているため, 既に ezmlm-0.53 を削除してしまっている場合は上記のビルド前の設定を行うこと.

# tar xfvz ezmlm-idx-0.40.tar.gz
# cp -r ezmlm-0.53 ezmlm-0.53-patched_by_idx
# mv ezmlm-idx-0.40/* ezmlm-0.53-patched_by_idx/
# rmdir ezmlm-idx-0.40
# cd ezmlm-0.53-patched_by_idx/
# patch < idx.patch

crontab のありかを調べる.

$ which crontab
/usr/bin/crontab 

/usr/bin にあれば先へ進む. 違う場所にある場合は conf-cron にありかを書き込む.

MySQL (解説は <URL:http://www.mysql.com/> もしくは 日本語マニュアル ) を使うか否かを決定. ここでは使わないこととして先に進む. 使う場合にはこの段階でやるべき作業がある.

$ make clean
$ make; make man
$ make jp

最後の行は使用言語を選ぶものである. jp は日本語を意味する. これによって自動管理要請に ezmlm が応えてユーザに送るメッセージが日本語になる.

インストール前の ezmlm-idx の動作テスト

一時的にユーザ eztest を作成し (テスト後すぐ削除する), ezmlm-idx のコマンドバイナリ群が実行できるか確かめる (ezmlm-test コマンド). ezmlm-test を実行する前に ezmlm-idx のコマンドバイナリ群にパスが通っているかを確認されたい.

# chmod 755 ezmlm-test
# adduser --uid 50000 eztest
# su eztest

ここで su eztest と行ったが sudo コマンドを用いる場合はデフォルトでは環境変数 $HOME がログインしたユーザとなったままとなり正しく実行されないので -H オプションをつけて実行する.

$ ./ezmlm-test

testing ezmlm-idx:    ezmlm-idx-0.40
Using FQDN host name: tako.epa.scitec.kobe-u.ac.jp
ezmlm-make (1/2):     OK
Using RDBMS support:  No.
testing for qmail:    >=1.02
ezmlm-reject:         OK
ezmlm-[un|is]sub[n]:  OK
ezmlm-send (1/2):     OK
ezmlm-tstdig:         OK
ezmlm-weed:           OK
ezmlm-make (2/2):     OK
ezmlm-clean (1/2):    removed mod queue entry 3 that wasn't due

上記のように正常に実行されることが確認されたら, exit する.

$ exit

ezmlm-idx のリビルド

MySQL を使わない場合は以下を実行する (使う場合には異なる作業が要る).

# make std
# make

以下を実行して ezmlm-idx のコマンドバイナリを /usr/local/ezmlm/bin 以下にコピーする.

# make setup 

インストール後の ezmlm-idx の動作テスト

インストールされた ezmlm-test を実行する. /usr/local/ezmlm/bin/ 以下のコマンドバイナリ群にパスが通っているかも同時に確認する.

# su eztest
$ source /etc/profile  # bash の場合
$ echo $PATH
  .... /usr/local/ezmlm/bin   # <- ここにパスが通っていることを確認
$ cd /usr/local/src/ezmlm-0.53-patched_by_idx
$ ./ezmlm-test

testing ezmlm-idx:    ezmlm-idx-0.40
Using FQDN host name: tako.epa.scitec.kobe-u.ac.jp
ezmlm-make (1/2):     OK
Using RDBMS support:  No.
testing for qmail:    >=1.02
ezmlm-reject:         OK
ezmlm-[un|is]sub[n]:  OK
ezmlm-send (1/2):     OK
ezmlm-tstdig:         OK
ezmlm-weed:           OK
ezmlm-make (2/2):     OK
ezmlm-clean (1/2):    removed mod queue entry 3 that wasn't due

$ exit
# userdel -r eztest

Hiki

Hiki のインストール

Debian package 版を使う.

# aptitude install hiki

バージョン 0.8.6-1etch1 がインストールされた. これは最新版 0.8.7 (0.8.6 の security fix) である.

hikisetup の修正

以降で作成する各 Hiki ディレクトリの初期設定は /usr/bin/hikisetup で行うが, Debian etch の Ruby のバージョンと hikisetup とが整合的でないためかそのままでは動かないので, 少し修正する.

# cp /usr/bin/hikisetup /usr/bin/hikisetup.orig
# vi /usr/bin/hikisetup

変更後のファイルは hikisetup から入手できる. 編集前後のファイルの差分である.

$ diff -u hikisetup.org hikisetup
--- hikisetup   2008-07-31 12:17:02.000000000 +0900
+++ hikisetup.org       2008-07-31 12:15:05.000000000 +0900
@@ -137,7 +137,7 @@
     check_datapath
     check_pluginpath
     check_templatepath
-    makedirs(@hikidir)
+    File.makedirs(@hikidir)
     create_hikicgi
     create_theme
     create_datadir

hikiconf.rb.sample の作成

上記の修正だけでは, 実行時に, 「/usr/share/doc/hiki/examples/hikiconf.rb.sample が無い」ために失敗する. /usr/share/doc/hiki/examples/hikiconf.rb.sample.ja.gz を /usr/share/doc/hiki/examples/ 以下に展開し, し, hikiconf.rb.sample へシンボリックリンクを張る.

# cd /usr/share/doc/hiki/examples/
# gunzip hikiconf.rb.sample.ja.gz
# ln -s hikiconf.rb.sample.ja hikiconf.rb.sample

これでシステムへの Hiki のインストールは完了した.

Hiki の環境設定

以下では各ユーザごとの Hiki の環境設定を記す. ただし, apache の実効権限が www-data であるため, 作業には管理者権限が必要となることに注意.

TABLE を使えるようにするための設定

プラグインとして table_form.rb が公開されているので取得, 適用する.

# cd /usr/share/hiki/misc/plugin
# wget http://gouketsu.net/simm/f/20050721/table_form.rb

また,

  • RD+ style に対応
  • スタイルシートから見た目を変更できるよう, div タグに class="table_form_rd" を含む

ように修正したものを取得する. 修正内容については [EPA]Hikiのインストールと設定#TABLE を使えるようにするための設定 を参照のこと.

# wget http://epa.scitec.kobe-u.ac.jp/~itpass/epa/hiki_system/table_form_rd.rb

後者があれば前者は不要だが, 一応プラグインに含めておく.

タイムアウト時間の延長

デフォルトのタイムアウトは, ログインしてから 1 時間である. 長時間の編集作業の際には強制ログアウトされてしまうため, /usr/share/hiki/hiki/session.rb を直接編集し, タイムアウト時間を 24 時間に延ばす. 以下は差分の内容である.

# cd /usr/share/hiki/hiki
# cp session.rb session.rb.org

session.rb の最初のほうにある

MAX_AGE = 60 * 60

MAX_AGE = 24 * 60 * 60

に書き換える.

admin でのログイン時には注記を表示

運用の際には, admin はあくまで管理用に使用することにし, 一般的なページの書き換えは行わないことが望ましい. しかし現在自身が admin でログインしているのか 一般ユーザでログインしているのか, 一見してよく分からないため, admin でのログインの際にはその旨をページ上部に表示するようにする.

# /usr/share/hiki/plugin
# mv 00default.rb 00default.rb.org
# wget http://epa.scitec.kobe-u.ac.jp/~itpass/epa/hiki_system/00default.rb

html_formatter.rb の修正

以下の 2 点の目的のため, /usr/share/hiki/style/rd+/html_formatter.rb の修正を行う.

  • RD+ スタイルの目次の修飾
  • 目次からのページ内リンク (日本語) を有効に

詳細については [EPA]Hikiのインストールと設定#html_formatter.rb の修正 を参照のこと.

# cd /usr/share/hiki/style/rd+
# mv html_formatter.rb html_formatter.rb.org

修正後のファイルを取得する.

# wget http://epa.scitec.kobe-u.ac.jp/~itpass/epa/hiki_system/html_formatter.rb

rd2html.rb の修正

以下の 2 点の目的のため, /usr/share/hiki/style/rd+/rd2html.rb の修正を行う.

  • RT で作成された表を修飾可能に
  • ページ内リンクを有効に

詳細については [EPA]Hikiのインストールと設定#rd2html.rb の修正 を参照のこと.

# cd /usr/share/hiki/style/rd+
# mv rd2html.rb rd2html.rb.org

修正後のファイルを取得する.

# wget http://epa.scitec.kobe-u.ac.jp/~itpass/epa/hiki_system/rd2html.rb

Hikiのページ毎の基本設定

これまで運用してきた ika から rsync してきたため, 初期設定などの作業は行わない.

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

これまで運用してきた ika から rsync してきたため, 特に作業は行わなくて良い.

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

構築ドキュメントには .htaccess を cgi/ ディレクトリに移動させるよう 書いてある.

しかし, rsync により持ってきた cgi/ 内に .htaccess が存在しない. itpass については閲覧に制限を設けないのでこれでよしとする.

CVS のインストール

CVS をシステムにインストールする.

# aptitude install cvs

既に入っていることを確認.

Apache の設定

ユーザ認証などの設定を各ディレクトリ内の .htaccess で行うため, Apache の設定ファイル /usr/local/apache2/conf/httpd.conf の末尾に以下の設定を追加する. ディレクトリ名は場所に応じて適宜つける. この作業は管理者権限で行うこと.

#
# Settings for Hiki
#
<Directory /home/itpass/public_html/hiki >
    AllowOverride ALL
</Directory>

CGI の基本動作のチェック

Apache を再起動する.

# /etc/init.d/apache2 restart

<URL:http://tako.epa.scitec.kobe-u.ac.jp/~itpass/hiki> へアクセスし, トップページが見えることを確認する.

rdtool が入っていなかったのでインストール.

# aptitude install rdtool

rttool を使った表がちゃんと表示されなかったので rttool を入れる

# aptitude install librttool-ruby

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

既に行われているため, 省略.

ちなみに, 前の管理人から管理者用パスワードを引き継ぐのを忘れずに.

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

data 以下に hiki-passwd-collector.rb が設置されていることを確認する.

以下のコマンドで, www-data ユーザとして CRON の設定を行う. なお, 以下のようにコマンドした際には, 環境変数 EDITOR で設定されるエディタで開かれる.

# su www-data
$ crontab -e

以下のように書き込み, 保存と終了を行う.

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

この設定は,

  • 毎日 03: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) を参照のこと.

HikiのCGIを介さずCVSツールから編集(管理側作業)

rsync してきたディレクトリについて, ほとんどの作業は, 既に行われているので省略.

Ruby, Perl のインストール

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

# aptitude install ruby perl

既にインストールされていることを確認.

導入されている debian パッケージの引き継ぎ

ika に install されている debian パッケージの一覧を取得する

[ika] $ dpkg --get-selections > ika_list.txt

古いカーネルなど, 明らかに不要なものはリストから削除しておくとよい.

[ika] $ scp ika_list.txt chikuwa1@tako:

tako において, ika で導入されているパッケージに対して 「install」を設定する

[tako] $ sudo -s
[tako] # dpkg --set-selections < ika_list.txt

実際に install する

[tako] # apt-get dselect-upgrade