IT pass HikiWiki - [EPA2008b]gate-toroku-systemのインストールと設定 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
{{toc}}
[((<EPAサーバ構築ドキュメント|EPAサーバ構築ドキュメント#gate-toroku-system>))へ戻る]
= 概要
以下は EPA サーバに gate-toroku-system をインストールするための
作業ログである. EPA サーバに固有な記述を含んでいる.
gate-toroku-system そのものに関しては
((<EPA サーバ版 gate-toroku-system|URL:/~gate>))
を参照のこと.
= gate-toroku-system のソースを取得
gate-toroku-system のソースは EPA サーバの以下のパスに置かれている.
(公開はしていません). ここからソースを入手し, /home/gate 以下に
置くこと.
/home/gate/gate-toroku-system.tar.gz
= 必要なソフトウェアのインストール
まず, gate に必要なパッケージをインストールする.
以下の 2 行を /etc/apt/sources.list に加えること.
deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou stable/
deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou stable/
その後, 以下のコマンドで, 必要なパッケージをインストールされていることを確認する.
確認されていなければ以下のインストール作業を行う.
なお, 以下の perl 関連のパッケージ名は Debian GNU/Linux 4.0
(コードネーム etch) の場合のものなので, Debian のバージョンによって
変更される可能性が高いので注意すること.
# apt-get update
# apt-get install perl-suid rsync wget htroff cvs
# apt-get install libjcode-pm-perl
# apt-get install libcrypt-passwdmd5-perl
# apt-get install libdatetime-perl
# apt-get install libdatetime-format-strptime-perl
インストール時, cvs のリポジトリの位置を問われるが, 空文字を与える.
= 作業用アカウントの作成
今回は既に gate-toroku-system ソースの置き場として作成済みだが,
本来はこの段階で, gate-toroku-system 管理アカウント gate を作成する.
ユーザ ID は 1 -- 999 の間(システムユーザ領域)に設定する.
# adduser --uid 500 --disabled-password gate
この時, フルネームを入力しなくてはならない.
「Administrator of gate-toroku-system」など, gate の管理用ユーザだとい
うことが分かるものがよいだろう.
gate グループに gate 管理者とスタッフ数名を加える.
gate 管理者については,
((<[EPA2008b]gate-toroku-systemの開発とメンテナンス#開発メンバー>))
のユーザ名および, gate のインストールを行った
メンバーのユーザ名を並べること.
スタッフ数名については, 年度替り等の際に適宜スタッフと相談して決めること.
以下は書き方の例である.
# vigr
gate:x:500:morikawa,murashin,uwabami,noda,seiya,yot,shosuke
# vigr -s
gate:!::500:morikawa,murashin,uwabami,noda,seiya,yot,shosuke
= gate ユーザへのメールの転送
/home/gate/.qmail に gate 管理者およびスタッフ数名のメールアドレスを
書き込む. メンバーは上記の ((<URL:#作業用アカウントの作成>)) でグループ
に加えたものと同じにしておくこと.
* 注意
* 電子メールアドレスの前に & をつける.
* 空白, 空行をいれない.
以下は書き方の例である.
# vi /home/gate/.qmail
&morikawa
&murashin
&uwabami
&noda
&tnyorai
&seiya
&yot
&shosuke
= gate-toroku-system ソースの展開
((<URL:#gate-toroku-system のソースを取得>)) で取得した
ソースを展開する.
$ cd /home/gate
$ tar xvfz gate-toroku-system.tar.gz
$ cd gate-toroku-system
= gate-toroku-system の設定ファイルを編集
gate-toroku-system はいくつかの設定ファイルに記述された
内容に沿って動作する. 上記のように gate-toroku-system.tar.gz
を入手した場合, 変更すべき部分は
* include/gate.conf
の ((*$DBSERVER*)) となる. ここを, ホスト名 (ドメイン含む)
すること. これは
$ hostname -f
で調べることができる. これを元に, gate.conf の中身を編集せよ.
以下は例である.
# データベースサーバ (CGI が動作するホスト)
#
# 個々のマシンが、「自身がデータベースサーバであるか」といったことにも
# 使用するため、データベースサーバ内で "hostname -f" で得られる
# 結果と同じになっている必要があります。
$DBSERVER = "tako.epa.scitec.kobe-u.ac.jp";
なお, 設定後の各種設定ファイルは以下の通り.
* gate-sys.conf [((<設定後|URL:../epa/gate-conf_2008/gate-sys.conf>))]
* include/gate.conf [((<設定後|URL:../epa/gate-conf_2008/gate.conf>))]
* include/gate-user.conf [((<設定後|URL:../epa/gate-conf_2008/gate-sys.conf>))]
* include/gate-ip.conf (IP 管理をする場合のみ)
* include/gate-local.pl [((<設定後|URL:../epa/gate-conf_2008/gate-sys.conf>))]
= gate-toroku-system CGI を動作させるための apache2 設定
以下では CGI の動作に関して, apache2 の設定について確認すべき点を挙げ
る. 場合によっては gate-sys.conf や gate.conf ファイルを編集せねばなら
ない. 今回は apache2 をソースからコンパイルしたので, apache2 の設定ファ
イルは /usr/local/apache2/conf/httpd.conf である.
* apache を動作させるユーザ, グループ
httpd.conf においては apache がどのユーザ, グループの権限で動作する
かは「 User 」 および「 Group 」で指定される.
User www-data
Group www-data
この「 User 」, 「 Group 」に指定されているユーザ, グループが
gate.conf における $CGIUSER に指定されているユーザと 一致しなくてはな
らない. 相違している場合はどちらかを変更すること.
$CGIUSER = "www-data";
* gate システム用 CGI 置き場
httpd.conf 内の「 ScriptAlias 」において以下のように指定されると,
/usr/local/apache2/cgi-bin/ に置かれた CGI が HTTP 的に /cgi-bin/ と
することで呼び出されることを示す.
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
本来は, この「 ScriptAlias 」の下線部分と gate-sys.conf における
$CGIBINDIR にて指定されるディレクトリが一致しなければならない. ただ
し, 今回はインストール先は /usr/local/gate/lib/cgi-bin とし,
そこに置かれたファイルのシンボリックリンクを
/usr/local/apache2/cgi-bin/ に置くこととする.
$BASEDIR = '/usr/local/gate'; # Debian 化されたら /usr
$CGIBINDIR = "$BASEDIR/lib/cgi-bin";
* /usr/local/apache2/cgi-bin/ の CGI が動作するために
/usr/local/apache2/cgi-bin/ 以下の CGI が動作するために, httpd.conf
で以下のように記述する.
<Directory "/usr/local/apache2/cgi-bin/">
AllowOverride AuthConfig Limit
Options ExecCGI FollowSymLinks IncludesNoExec
</Directory>
設定後に apache2 を再起動する. 再起動の手順については,
((<[EPA2008b]apache2のインストールと設定>))を参照のこと.
#= デバッグ用ディレクトリの作成
#
#gate-toroku-system でデバッグを行うためのディレクトリとして
#~gate/gate_test_dir を作成しておく.
#
# # su gate
# $ mkdir ~gate/gate_test_dir
= make とインストール
# su gate
$ cd ~gate/gate-toroku-system/
$ perl ./config.pl
$ make
$ exit
$ sudo -s
# cd ~gate/gate-toroku-system
# make install
実行ファイルや man 用ファイル, HTML ファイルは
/usr/local/gate 以下にインストールされる.
#一方, デバッグモードのため, 設定ファイル群は
#/home/gate/gate_test_dir/etc/gate/ にインストールされる.
(今回は使用しないが IP 管理用の設定ファイルも同様の場所に gate-ip.conf
としてインストールされる).
== cgi のシンボリックリンク作成
/usr/local/gate/lib/cgi-bin 以下にインストールされた cgi の
シンボリックリンクを /usr/local/apache2/cgi-bin 以下に作成する.
# cd /usr/local/apache2/cgi-bin
# ln -s ../../gate/lib/cgi-bin/gate-*.cgi .
= インストールした実行ファイルへのパスの設定
インストールした gate-toroku-system の実行ファイル群へパスを通す.
((<[EPA2008b]パスの設定>)) の((* <一般ユーザ用コマンドのパス> *))
に ((*/usr/local/gate/bin*)) を,
((* <システム管理用コマンドのパス> *))
に ((*/usr/local/gate/sbin*)) を追加する.
= インストールしたマニュアルへのパスの設定
/etc/manpath.config に以下の行を追加する.
詳しくは ((<[EPA2008b]パスの設定#man 関連のパスの設定>)) を参照のこと.
MANDATORY_MANPATH /usr/local/gate/man/ja
MANPATH_MAP /usr/local/gate/bin /usr/local/gate/man/ja
MANPATH_MAP /usr/local/gate/sbin /usr/local/gate/man/ja
MANDB_MAP /usr/local/gate/man/ja /usr/local/gate/man/ja
= Web インターフェースのチェック
((<URL:https://epa.scitec.kobe-u.ac.jp/~gate/>)) にアクセスし,
gate 登録システムのインデックスページが見えるかチェックする.
また, そのページからリンクされている
[((<個人申請|URL:https://epa.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi>))]
などに移動し, CGI が動作していることをチェックする.
= ユーザの作成
登録によってユーザを登録し, 動作をチェックする.
この場合, 以下の 2 通りが考えられる.
(1) ((<ユーザデータベースを他の計算機からコピーする|URL:#(1) ユーザデータベースのコピー>))
(2) ((<新たに作成する|URL:#(2) 最初の保証人ユーザ作成>))
EPA サーバを ika⇔tako で移行する場合には ((*(1)*)) を,
全く新しくサーバを立ち上げた場合には ((*(2)*)) を行うこと.
== (1) ユーザデータベースのコピー
今回は, これまで使用していたホスト (oldhost) から新たに構築している
ホスト (newhost) へユーザデータベースをコピーする方法を記す.
なお, ここで gate-toroku-system をインストール中の計算機が newhost
に該当する.
=== 認証の設定
oldhost から newhost へのコピーの際には, oldhost から newhost へ
認証が許可されている必要がある. EPA サーバは公開鍵認証によるログインのみ
許可するため, oldhost で作成した公開鍵を newhost に登録しなければならない.
((<[EPA2008b]サーバと予備サーバでのバックアップの設定>)) が既に
行われていれば, root による oldhost から newhost へのログインが
可能となっているはずである. ただし, ログインの際には /home ディレクトリ
自体の rsync を行うように oldhost に設定されているはずであるため,
それを一時的に解除する.
そのためには, まず oldhost:/root/.ssh/authorized_keys 内の,
command="rsync --server -vlogDtpr --delete . /home/",no-pty,from=....
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
この部分 (「^」で指し示した, "command=" から "no-pty," まで) を一旦削除する.
ただし, 後で元に戻す必要があるため, 削除した内容をどこかに保存しておくこと.
つぎに, /etc/ssh/sshd_config 内の
PermitRootLogin forced-commands-only
を
PermitRootLogin yes
に書き換え, その後
# /etc/init.d/ssh restart
として設定を反映させる.
=== /home/gate/userdb 以下のコピー
oldhost 内の /home/gate/userdb を newhost 内の /home/gate/userdb に
コピーする. コマンドでコピーが可能である.
oldhost# rsync -n -av --delete /home/gate/userdb/ ika:/home/gate/userdb/
で動作チェックの後,
oldhost# rsync -av --delete /home/gate/userdb/ newhost:/home/gate/userdb/
=== 認証を元に戻す
((<URL:#認証の設定>)) にて行った設定を元に戻す.
=== /etc/shadow のコピー
gate-toroku-system では, /etc/shadow に存在しないユーザが
データベース内に居た場合, 初めてユーザを作成したと認識して
メールを送信するようになっている. 移行作業の際に大量のメールが
送信されないよう, 先に oldhost の /etc/shadow の一部を
newhost の /etc/shadow にコピーする.
oldhost 内の /etc/shadow を開き, gate-toroku-system で管理される
ユーザのエントリのみ newhost 内の /etc/shadow にコピーする.
gate-toroku-system で管理されるユーザは UID 1000 〜 29999 までであるため,
oldhost の /etc/passwd 内でユーザ名と UID とを比較することで
コピーすべきユーザが分かるはずである.
== (2) 最初の保証人ユーザ作成
[((<個人申請|URL:https://epa.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi>))]
を参照し, 管理グループの代表者のユーザ登録申請を行なう.
保証人は先につくったユーザ"gate"として登録すること.
/home/gate/userdb/pending の下に登録者のデータベースファイル (申請ログ
イン名がついたファイル) が生成されているか確認せよ.
申請が受け付けられた後, 承認を経てはじめてアカウントが生成される. そこ
で今回行った申請にも承認を行おう. そのために保証人"gate"の登録システム
用パスワードを設定する. gate ユーザの権限で以下のコマンドを実行せよ.
# su gate
$ cd
$ htpasswd -c ~gate/.gate gate
ここで投入したパスワードを用いてユーザ "gate" として保証人の
( [((<ユーザ登録承認|URL:https://epa.scitec.kobe-u.ac.jp/cgi-bin/gate-user-accept.cgi>))] を用いる )
を行なう. /home/gate/userdb/stable に承認されたユーザのデータベースファ
イルが移動しているか確認せよ.
ただし, gate-sys.conf の $USE_DAEMON が以下のように設定されている場合,
$USE_DAEMON = 1; # 1 がデーモンモード, 0 がクロン
承認時に以下のような警告メッセージが表示される. これは下記の
((<URL:#デーモンモードでの運用>)) で解消されるはずなのでとりあえず
ほおっておく.
/usr/local/gate/bin/gate-user-accept: To localhost, connect failed:
Connection refused at /usr/local/gate/lib/gate-common.pl line ....
= アカウント生成
/home/gate/userdb の中にあるデータベースファイルをシステムに反映させる
には ルートで /usr/local/gate/lib/gate-daily を起動する.
# perl /usr/local/gate/lib/gate-daily
/etc 内に存在する passwd, group, shadow,
sudoers ファイルが更新され, それぞれ .bk を付加した名前の バックアップ
ファイルが生成されるはずである. これらの変更点を確認し, 登録した
ユーザの情報が新たに書き込まれていることを確認せよ.
また /home には /home/gate/userdb 以下に存在するユーザのディレクトリが
できているはずなので確認する.
= デーモンモードでの運用
ユーザ, ホストのデータベースをシステムに反映させる方法として デーモン
モードとクロンモードがある. 以下ではデーモンモードで運用する方法を考え
る.
* gate-sys.conf の設定
/etc/gate/gate-sys.conf 中の $USE_DAEMON 変数が 1 というのを確かめる.
$USE_DAEMON = 1;
* gate-toroku-system 用のポートの作成
/etc/inetd.conf に以下の一行 (長いけど) を付け足す.
gate stream tcp nowait root /usr/sbin/tcpd /usr/local/gate/lib/gate-daily -N
* ポート番号の設定
/etc/services に以下の行を付け足す.
gate 8888/tcp # gate-toroku-system
* TCP wrapper によるセキュリティ強化
gate ポートは, 登録サーバにせよその他のサーバにせよ, 登録サーバから
のアクセスさえ受け付けられればその役目を果たすので 登録サーバからの
みアクセスを受けるのが理想的である. TCP wrapper を使用して, アクセ
スを登録サーバからのものに限定する.
特に EPA サーバは 1 台での運用なので, 自身からのアクセスのみ許容する.
* /etc/hosts.deny の編集
/etc/hosts.deny に以下の一行を追加し, まずは全てのホストからの
gate ポートへのアクセスを拒否する.
gate-daily: ALL
* /etc/hosts.allow の編集
/etc/hosts.allow に以下の一行を追加し, 登録サーバ自身からの
アクセスのみは受け付けるようにする.
gate-daily: 127.0.0.1
/etc/hosts.deny と /etc/hosts.allow の設定に間違いがないことを確認す
る.
# tcpdmatch gate-daily <登録サーバ以外のホスト>
結果, access: denied と表示されればアクセスが正常に拒否されている.
次に, 登録サーバ自身からのアクセスは受け付けられているか確認する.
# tcpdmatch gate-daily localhost
結果, access: granted と表示されれば OK.
* inetd を再起動
# /etc/init.d/openbsd-inetd restart
* 確認
CGI からユーザの申請および認証を行う. 認証して数分後に
/etc 以下のシステムファイルが更新されていれば OK.
#= 本気モードで動かす
#
#本気モードで動かす際には, 一度ソースで make しなおす必要がある.
#
# $ cd ~gate/gate-toroku-system
# $ make clean
#
# $ vi gate-sys.conf
#
# $DEBUG_CONFIG = 1;
#
# を
#
# $DEBUG_CONFIG = 0;
#
# $ perl ./config.pl
# $ make
#
# $ sudo -s
# # cd ~gate/gate-toroku-system
# # make install
= gate-toroku-system の動作確認
ika にて以下のコマンドを実行する
# perl /usr/local/gate/lib/gate-daily
以下のファイルが生成されているか確認
* /etc/passwd
* /etc/shadow
* /etc/group
* /etc/sudoers
= gate-toroku-system ソースの移動
インストールが完了したら, ソースを移動すること.
(本来なら不要なのだが, 一応バックアップとして).
$ cd /home/gate
$ mv gate-toroku-system gate-toroku-system_2008-04-25
^^^^^^^^^^
インストールした日付
= ezmlm を使う場合の設定
== gate-db-to-ezmlm の設定
この作業は, ezmlm のインストール後に行うこと.
/usr/local/gate/bin/gate-db-to-ezmlm の
「0. 実行ファイル, ドメインの指定」の項目を以下のように変更する.
変更前
$domainname='gfd-dennou.org';
$ezmlmlist='/usr/bin/ezmlm-list';
$ezmlmsub='/usr/bin/ezmlm-sub';
$ezmlmunsub='/usr/bin/ezmlm-unsub';
変更後
$domainname='epa.scitec.kobe-u.ac.jp';
$ezmlmlist='/usr/local/ezmlm/bin/ezmlm-list';
$ezmlmsub='/usr/local/ezmlm/bin/ezmlm-sub';
$ezmlmunsub='/usr/local/ezmlm/bin/ezmlm-unsub';
= gate ユーザのパスワードの継承
サーバ交代などで前の gate からデータベースを引き継ぐ場合は
前 gate 管理者から gate ユーザのパスワードを引き継いでおくこと.
[((<EPAサーバ構築ドキュメント|EPAサーバ構築ドキュメント#gate-toroku-system>))へ戻る]
[((<EPAサーバ構築ドキュメント|EPAサーバ構築ドキュメント#gate-toroku-system>))へ戻る]
= 概要
以下は EPA サーバに gate-toroku-system をインストールするための
作業ログである. EPA サーバに固有な記述を含んでいる.
gate-toroku-system そのものに関しては
((<EPA サーバ版 gate-toroku-system|URL:/~gate>))
を参照のこと.
= gate-toroku-system のソースを取得
gate-toroku-system のソースは EPA サーバの以下のパスに置かれている.
(公開はしていません). ここからソースを入手し, /home/gate 以下に
置くこと.
/home/gate/gate-toroku-system.tar.gz
= 必要なソフトウェアのインストール
まず, gate に必要なパッケージをインストールする.
以下の 2 行を /etc/apt/sources.list に加えること.
deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou stable/
deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou stable/
その後, 以下のコマンドで, 必要なパッケージをインストールされていることを確認する.
確認されていなければ以下のインストール作業を行う.
なお, 以下の perl 関連のパッケージ名は Debian GNU/Linux 4.0
(コードネーム etch) の場合のものなので, Debian のバージョンによって
変更される可能性が高いので注意すること.
# apt-get update
# apt-get install perl-suid rsync wget htroff cvs
# apt-get install libjcode-pm-perl
# apt-get install libcrypt-passwdmd5-perl
# apt-get install libdatetime-perl
# apt-get install libdatetime-format-strptime-perl
インストール時, cvs のリポジトリの位置を問われるが, 空文字を与える.
= 作業用アカウントの作成
今回は既に gate-toroku-system ソースの置き場として作成済みだが,
本来はこの段階で, gate-toroku-system 管理アカウント gate を作成する.
ユーザ ID は 1 -- 999 の間(システムユーザ領域)に設定する.
# adduser --uid 500 --disabled-password gate
この時, フルネームを入力しなくてはならない.
「Administrator of gate-toroku-system」など, gate の管理用ユーザだとい
うことが分かるものがよいだろう.
gate グループに gate 管理者とスタッフ数名を加える.
gate 管理者については,
((<[EPA2008b]gate-toroku-systemの開発とメンテナンス#開発メンバー>))
のユーザ名および, gate のインストールを行った
メンバーのユーザ名を並べること.
スタッフ数名については, 年度替り等の際に適宜スタッフと相談して決めること.
以下は書き方の例である.
# vigr
gate:x:500:morikawa,murashin,uwabami,noda,seiya,yot,shosuke
# vigr -s
gate:!::500:morikawa,murashin,uwabami,noda,seiya,yot,shosuke
= gate ユーザへのメールの転送
/home/gate/.qmail に gate 管理者およびスタッフ数名のメールアドレスを
書き込む. メンバーは上記の ((<URL:#作業用アカウントの作成>)) でグループ
に加えたものと同じにしておくこと.
* 注意
* 電子メールアドレスの前に & をつける.
* 空白, 空行をいれない.
以下は書き方の例である.
# vi /home/gate/.qmail
&morikawa
&murashin
&uwabami
&noda
&tnyorai
&seiya
&yot
&shosuke
= gate-toroku-system ソースの展開
((<URL:#gate-toroku-system のソースを取得>)) で取得した
ソースを展開する.
$ cd /home/gate
$ tar xvfz gate-toroku-system.tar.gz
$ cd gate-toroku-system
= gate-toroku-system の設定ファイルを編集
gate-toroku-system はいくつかの設定ファイルに記述された
内容に沿って動作する. 上記のように gate-toroku-system.tar.gz
を入手した場合, 変更すべき部分は
* include/gate.conf
の ((*$DBSERVER*)) となる. ここを, ホスト名 (ドメイン含む)
すること. これは
$ hostname -f
で調べることができる. これを元に, gate.conf の中身を編集せよ.
以下は例である.
# データベースサーバ (CGI が動作するホスト)
#
# 個々のマシンが、「自身がデータベースサーバであるか」といったことにも
# 使用するため、データベースサーバ内で "hostname -f" で得られる
# 結果と同じになっている必要があります。
$DBSERVER = "tako.epa.scitec.kobe-u.ac.jp";
なお, 設定後の各種設定ファイルは以下の通り.
* gate-sys.conf [((<設定後|URL:../epa/gate-conf_2008/gate-sys.conf>))]
* include/gate.conf [((<設定後|URL:../epa/gate-conf_2008/gate.conf>))]
* include/gate-user.conf [((<設定後|URL:../epa/gate-conf_2008/gate-sys.conf>))]
* include/gate-ip.conf (IP 管理をする場合のみ)
* include/gate-local.pl [((<設定後|URL:../epa/gate-conf_2008/gate-sys.conf>))]
= gate-toroku-system CGI を動作させるための apache2 設定
以下では CGI の動作に関して, apache2 の設定について確認すべき点を挙げ
る. 場合によっては gate-sys.conf や gate.conf ファイルを編集せねばなら
ない. 今回は apache2 をソースからコンパイルしたので, apache2 の設定ファ
イルは /usr/local/apache2/conf/httpd.conf である.
* apache を動作させるユーザ, グループ
httpd.conf においては apache がどのユーザ, グループの権限で動作する
かは「 User 」 および「 Group 」で指定される.
User www-data
Group www-data
この「 User 」, 「 Group 」に指定されているユーザ, グループが
gate.conf における $CGIUSER に指定されているユーザと 一致しなくてはな
らない. 相違している場合はどちらかを変更すること.
$CGIUSER = "www-data";
* gate システム用 CGI 置き場
httpd.conf 内の「 ScriptAlias 」において以下のように指定されると,
/usr/local/apache2/cgi-bin/ に置かれた CGI が HTTP 的に /cgi-bin/ と
することで呼び出されることを示す.
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
本来は, この「 ScriptAlias 」の下線部分と gate-sys.conf における
$CGIBINDIR にて指定されるディレクトリが一致しなければならない. ただ
し, 今回はインストール先は /usr/local/gate/lib/cgi-bin とし,
そこに置かれたファイルのシンボリックリンクを
/usr/local/apache2/cgi-bin/ に置くこととする.
$BASEDIR = '/usr/local/gate'; # Debian 化されたら /usr
$CGIBINDIR = "$BASEDIR/lib/cgi-bin";
* /usr/local/apache2/cgi-bin/ の CGI が動作するために
/usr/local/apache2/cgi-bin/ 以下の CGI が動作するために, httpd.conf
で以下のように記述する.
<Directory "/usr/local/apache2/cgi-bin/">
AllowOverride AuthConfig Limit
Options ExecCGI FollowSymLinks IncludesNoExec
</Directory>
設定後に apache2 を再起動する. 再起動の手順については,
((<[EPA2008b]apache2のインストールと設定>))を参照のこと.
#= デバッグ用ディレクトリの作成
#
#gate-toroku-system でデバッグを行うためのディレクトリとして
#~gate/gate_test_dir を作成しておく.
#
# # su gate
# $ mkdir ~gate/gate_test_dir
= make とインストール
# su gate
$ cd ~gate/gate-toroku-system/
$ perl ./config.pl
$ make
$ exit
$ sudo -s
# cd ~gate/gate-toroku-system
# make install
実行ファイルや man 用ファイル, HTML ファイルは
/usr/local/gate 以下にインストールされる.
#一方, デバッグモードのため, 設定ファイル群は
#/home/gate/gate_test_dir/etc/gate/ にインストールされる.
(今回は使用しないが IP 管理用の設定ファイルも同様の場所に gate-ip.conf
としてインストールされる).
== cgi のシンボリックリンク作成
/usr/local/gate/lib/cgi-bin 以下にインストールされた cgi の
シンボリックリンクを /usr/local/apache2/cgi-bin 以下に作成する.
# cd /usr/local/apache2/cgi-bin
# ln -s ../../gate/lib/cgi-bin/gate-*.cgi .
= インストールした実行ファイルへのパスの設定
インストールした gate-toroku-system の実行ファイル群へパスを通す.
((<[EPA2008b]パスの設定>)) の((* <一般ユーザ用コマンドのパス> *))
に ((*/usr/local/gate/bin*)) を,
((* <システム管理用コマンドのパス> *))
に ((*/usr/local/gate/sbin*)) を追加する.
= インストールしたマニュアルへのパスの設定
/etc/manpath.config に以下の行を追加する.
詳しくは ((<[EPA2008b]パスの設定#man 関連のパスの設定>)) を参照のこと.
MANDATORY_MANPATH /usr/local/gate/man/ja
MANPATH_MAP /usr/local/gate/bin /usr/local/gate/man/ja
MANPATH_MAP /usr/local/gate/sbin /usr/local/gate/man/ja
MANDB_MAP /usr/local/gate/man/ja /usr/local/gate/man/ja
= Web インターフェースのチェック
((<URL:https://epa.scitec.kobe-u.ac.jp/~gate/>)) にアクセスし,
gate 登録システムのインデックスページが見えるかチェックする.
また, そのページからリンクされている
[((<個人申請|URL:https://epa.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi>))]
などに移動し, CGI が動作していることをチェックする.
= ユーザの作成
登録によってユーザを登録し, 動作をチェックする.
この場合, 以下の 2 通りが考えられる.
(1) ((<ユーザデータベースを他の計算機からコピーする|URL:#(1) ユーザデータベースのコピー>))
(2) ((<新たに作成する|URL:#(2) 最初の保証人ユーザ作成>))
EPA サーバを ika⇔tako で移行する場合には ((*(1)*)) を,
全く新しくサーバを立ち上げた場合には ((*(2)*)) を行うこと.
== (1) ユーザデータベースのコピー
今回は, これまで使用していたホスト (oldhost) から新たに構築している
ホスト (newhost) へユーザデータベースをコピーする方法を記す.
なお, ここで gate-toroku-system をインストール中の計算機が newhost
に該当する.
=== 認証の設定
oldhost から newhost へのコピーの際には, oldhost から newhost へ
認証が許可されている必要がある. EPA サーバは公開鍵認証によるログインのみ
許可するため, oldhost で作成した公開鍵を newhost に登録しなければならない.
((<[EPA2008b]サーバと予備サーバでのバックアップの設定>)) が既に
行われていれば, root による oldhost から newhost へのログインが
可能となっているはずである. ただし, ログインの際には /home ディレクトリ
自体の rsync を行うように oldhost に設定されているはずであるため,
それを一時的に解除する.
そのためには, まず oldhost:/root/.ssh/authorized_keys 内の,
command="rsync --server -vlogDtpr --delete . /home/",no-pty,from=....
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
この部分 (「^」で指し示した, "command=" から "no-pty," まで) を一旦削除する.
ただし, 後で元に戻す必要があるため, 削除した内容をどこかに保存しておくこと.
つぎに, /etc/ssh/sshd_config 内の
PermitRootLogin forced-commands-only
を
PermitRootLogin yes
に書き換え, その後
# /etc/init.d/ssh restart
として設定を反映させる.
=== /home/gate/userdb 以下のコピー
oldhost 内の /home/gate/userdb を newhost 内の /home/gate/userdb に
コピーする. コマンドでコピーが可能である.
oldhost# rsync -n -av --delete /home/gate/userdb/ ika:/home/gate/userdb/
で動作チェックの後,
oldhost# rsync -av --delete /home/gate/userdb/ newhost:/home/gate/userdb/
=== 認証を元に戻す
((<URL:#認証の設定>)) にて行った設定を元に戻す.
=== /etc/shadow のコピー
gate-toroku-system では, /etc/shadow に存在しないユーザが
データベース内に居た場合, 初めてユーザを作成したと認識して
メールを送信するようになっている. 移行作業の際に大量のメールが
送信されないよう, 先に oldhost の /etc/shadow の一部を
newhost の /etc/shadow にコピーする.
oldhost 内の /etc/shadow を開き, gate-toroku-system で管理される
ユーザのエントリのみ newhost 内の /etc/shadow にコピーする.
gate-toroku-system で管理されるユーザは UID 1000 〜 29999 までであるため,
oldhost の /etc/passwd 内でユーザ名と UID とを比較することで
コピーすべきユーザが分かるはずである.
== (2) 最初の保証人ユーザ作成
[((<個人申請|URL:https://epa.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi>))]
を参照し, 管理グループの代表者のユーザ登録申請を行なう.
保証人は先につくったユーザ"gate"として登録すること.
/home/gate/userdb/pending の下に登録者のデータベースファイル (申請ログ
イン名がついたファイル) が生成されているか確認せよ.
申請が受け付けられた後, 承認を経てはじめてアカウントが生成される. そこ
で今回行った申請にも承認を行おう. そのために保証人"gate"の登録システム
用パスワードを設定する. gate ユーザの権限で以下のコマンドを実行せよ.
# su gate
$ cd
$ htpasswd -c ~gate/.gate gate
ここで投入したパスワードを用いてユーザ "gate" として保証人の
( [((<ユーザ登録承認|URL:https://epa.scitec.kobe-u.ac.jp/cgi-bin/gate-user-accept.cgi>))] を用いる )
を行なう. /home/gate/userdb/stable に承認されたユーザのデータベースファ
イルが移動しているか確認せよ.
ただし, gate-sys.conf の $USE_DAEMON が以下のように設定されている場合,
$USE_DAEMON = 1; # 1 がデーモンモード, 0 がクロン
承認時に以下のような警告メッセージが表示される. これは下記の
((<URL:#デーモンモードでの運用>)) で解消されるはずなのでとりあえず
ほおっておく.
/usr/local/gate/bin/gate-user-accept: To localhost, connect failed:
Connection refused at /usr/local/gate/lib/gate-common.pl line ....
= アカウント生成
/home/gate/userdb の中にあるデータベースファイルをシステムに反映させる
には ルートで /usr/local/gate/lib/gate-daily を起動する.
# perl /usr/local/gate/lib/gate-daily
/etc 内に存在する passwd, group, shadow,
sudoers ファイルが更新され, それぞれ .bk を付加した名前の バックアップ
ファイルが生成されるはずである. これらの変更点を確認し, 登録した
ユーザの情報が新たに書き込まれていることを確認せよ.
また /home には /home/gate/userdb 以下に存在するユーザのディレクトリが
できているはずなので確認する.
= デーモンモードでの運用
ユーザ, ホストのデータベースをシステムに反映させる方法として デーモン
モードとクロンモードがある. 以下ではデーモンモードで運用する方法を考え
る.
* gate-sys.conf の設定
/etc/gate/gate-sys.conf 中の $USE_DAEMON 変数が 1 というのを確かめる.
$USE_DAEMON = 1;
* gate-toroku-system 用のポートの作成
/etc/inetd.conf に以下の一行 (長いけど) を付け足す.
gate stream tcp nowait root /usr/sbin/tcpd /usr/local/gate/lib/gate-daily -N
* ポート番号の設定
/etc/services に以下の行を付け足す.
gate 8888/tcp # gate-toroku-system
* TCP wrapper によるセキュリティ強化
gate ポートは, 登録サーバにせよその他のサーバにせよ, 登録サーバから
のアクセスさえ受け付けられればその役目を果たすので 登録サーバからの
みアクセスを受けるのが理想的である. TCP wrapper を使用して, アクセ
スを登録サーバからのものに限定する.
特に EPA サーバは 1 台での運用なので, 自身からのアクセスのみ許容する.
* /etc/hosts.deny の編集
/etc/hosts.deny に以下の一行を追加し, まずは全てのホストからの
gate ポートへのアクセスを拒否する.
gate-daily: ALL
* /etc/hosts.allow の編集
/etc/hosts.allow に以下の一行を追加し, 登録サーバ自身からの
アクセスのみは受け付けるようにする.
gate-daily: 127.0.0.1
/etc/hosts.deny と /etc/hosts.allow の設定に間違いがないことを確認す
る.
# tcpdmatch gate-daily <登録サーバ以外のホスト>
結果, access: denied と表示されればアクセスが正常に拒否されている.
次に, 登録サーバ自身からのアクセスは受け付けられているか確認する.
# tcpdmatch gate-daily localhost
結果, access: granted と表示されれば OK.
* inetd を再起動
# /etc/init.d/openbsd-inetd restart
* 確認
CGI からユーザの申請および認証を行う. 認証して数分後に
/etc 以下のシステムファイルが更新されていれば OK.
#= 本気モードで動かす
#
#本気モードで動かす際には, 一度ソースで make しなおす必要がある.
#
# $ cd ~gate/gate-toroku-system
# $ make clean
#
# $ vi gate-sys.conf
#
# $DEBUG_CONFIG = 1;
#
# を
#
# $DEBUG_CONFIG = 0;
#
# $ perl ./config.pl
# $ make
#
# $ sudo -s
# # cd ~gate/gate-toroku-system
# # make install
= gate-toroku-system の動作確認
ika にて以下のコマンドを実行する
# perl /usr/local/gate/lib/gate-daily
以下のファイルが生成されているか確認
* /etc/passwd
* /etc/shadow
* /etc/group
* /etc/sudoers
= gate-toroku-system ソースの移動
インストールが完了したら, ソースを移動すること.
(本来なら不要なのだが, 一応バックアップとして).
$ cd /home/gate
$ mv gate-toroku-system gate-toroku-system_2008-04-25
^^^^^^^^^^
インストールした日付
= ezmlm を使う場合の設定
== gate-db-to-ezmlm の設定
この作業は, ezmlm のインストール後に行うこと.
/usr/local/gate/bin/gate-db-to-ezmlm の
「0. 実行ファイル, ドメインの指定」の項目を以下のように変更する.
変更前
$domainname='gfd-dennou.org';
$ezmlmlist='/usr/bin/ezmlm-list';
$ezmlmsub='/usr/bin/ezmlm-sub';
$ezmlmunsub='/usr/bin/ezmlm-unsub';
変更後
$domainname='epa.scitec.kobe-u.ac.jp';
$ezmlmlist='/usr/local/ezmlm/bin/ezmlm-list';
$ezmlmsub='/usr/local/ezmlm/bin/ezmlm-sub';
$ezmlmunsub='/usr/local/ezmlm/bin/ezmlm-unsub';
= gate ユーザのパスワードの継承
サーバ交代などで前の gate からデータベースを引き継ぐ場合は
前 gate 管理者から gate ユーザのパスワードを引き継いでおくこと.
[((<EPAサーバ構築ドキュメント|EPAサーバ構築ドキュメント#gate-toroku-system>))へ戻る]