Solaris 9 上で、confman_1.7, msql-2.0.12 (lite), httpd-2.0.52 をインス トールし、国際会議の論文投稿用の Web を立ち上げます。
【関連する外部ページ】
miniSQL バージョン 2 (リ レーショナルデータベース管理システム)を, Solaris 上にインストールします。 インストール手順とインストール時の注意点は以下の通り。
msql2 のインストールのために gcc-2.95.3 をインストールする (gcc 3系列ではうまくいかないようなので)。
# cd /usr/local/bin # ./gcc -v # cp gcc gcc333
gcc-2.95.3.tar.gz
# cd /tmp # gzip -d gcc-2.95.3.tar.gz # tar -xvf gcc-2.95.3.tar
# cd gcc-2.95.3 # mkdir /usr/local/gcc_2_95_3 (このディレクトリは自分で適当に決める) # cd /usr/local/gcc_2_95_3 # /tmp/gcc-2.95.3/configure --enable-languages="c,c++" # make bootstrap # make install
# /usr/local/bin/gcc -vとした時に表示されるバージョンを確認する
msql2 のインストールのために bison-1.28 をインストールする
% cd /usr/local/bin % cp bison bison1875
bison-1.28.tar.gz
# cd /tmp # gzip -d bison-1.28.tar.gz # tar -xvf bison-1.28.tar
# cd bison-1.28 # ./configure # make # make check # make install
# bison -Vとした時に表示されるバージョンを確認する
# cd /tmp # gzip -d msql-2.0.12.tar.gz # tar -xvf msql-2.0.12.tar
# cd msql-2.0.12 # make target # cd targets/Solaris-2.9-Sparc (OSにあわせてここの名前は変わる) # ./setup # make all # make install
# cd /usr/local/Hughes # vi msql.conf 以下の行を変更する [general] mSQL_User = msql Admin_User = root [system] Remote_Access = True
mSQL_User は、miniSQL サーバを実行するユーザのこと。 Admin_User には、miniSQL のデータベース生成, 削除、サーバシャットダウン等の 権限をもった「管理者用のユーザ名」を設定する。
「Remote_Access = True」の行について。 miniSQL サーバへの接続は、UNIX ドメインソケットによる接続と、TCP ソケッ トによる接続がある。UNIX ドメインソケットによる接続は、ローカルサイト からのみ可能である(UNIX ドメインソケットの性質から)、TCP ソケッ トによる接続は、原理的にどのサイトからでも可能である。 「Remote_Access = ... 」の行を、False に設定すると、 UNIX ドメインソケッ トによる接続のみを許す。 「Remote_Access = ... 」の行を、True に設定すると、UNIX ドメインソケッ ト、TCP ソケットの両方ができるようになる。 Confman では、ローカルサイトへの接続なのに, UNIX ドメインソケッ トソケットでなく、TCP ソケットを使っているようなので、 「Remote_Access = True」と設定する。 また、「Remote_Access = True」に設定すると、セキュリティ上の対 策が必要なので、十分に注意すること。
# vipw で /etc/passwd に以下の行を追加 msql:x:98:98:MSQL SERVER ::/bin/nosh
その後、/usr/local/Hughes ディレクトリのownerをmsqlに変更する
# chown -R msql /usr/local/Hughes
以下は設定例です。
database database read www,msql,root write www,msql,root host localhost access local,remote
database: アクセス制限をかけたいデータベース名
read: SELECT を許すユーザ名
write: INSERT,UPDATE,DELETE を許すユーザ名
host: アクセスを許すホスト名
access: "local" が指定されると local Unix socket, "remote" が指定されると TCP
を使った通信ができる。
# /usr/local/Hughes/bin/msql2d & で起動. # kill `cat /usr/local/Hughes/msql2d.pid` で終了
以下、ツールの説明ですが、ツールのオプション部分は、頻繁に使われるであ ろうパラメタだけを書いている.
SQL コマンドを、サーバに送信し実行させるプログラム。 終了は「\q」, サーバへの送信は「\g」。
scheme viewer
Admin program です。 create db_name, drop_dbname, shutdown などがあります。
Data dumper です。出力は SQL 形式。
Data exporter です。出力は、スプレッドシートでの操作に適した形式。
apacheについて
# cd /tmp # gzip -d httpd-2.0.52.tar.gz # tar -xvf httpd-2.0.52.tar
# cd httpd-2.0.52 # ./configure --prefix=/usr/local/apache2 (prefixのところは適当に決める) # make # make install
httpd.conf を設定します。
# cd /usr/local/apache2/conf # vi httpd.conf
このファイルを環境に合わせて編集する
/usr/local/apache2/bin/apachectl configtest mkdir -p /usr/local/apache2/logs/archive
#!/bin/sh d=`date "+%d"` w=`date "+%w"` y=`date "+%y"` m=`date "+%m"` log_dir=/usr/local/apache2/logs echo "log dir=" ${log_dir}/archive/access_log.${y}.${m}.${d} cp -f ${log_dir}/access_log ${log_dir}/archive/access_log.${y}.${m}.${d} mv -f ${log_dir}/error_log ${log_dir}/archive/error_log.${y}.${m}.${d} /usr/local/apache2/bin/apachectl restart >/dev/null
0 6 * * * /usr/local/apache2/bin/log.sh
# vipwで /etc/passwd に以下の行を追加 www:x:80:80:HTTP SERVER ::/bin/nosh
# /usr/local/apache2/bin/apachectl start(stop,restart)で起動、終了、再起動ができる
confmanについて
# gzip -d ConfMan_1.7.tar.gz # tar -xvf ConfMan_1.7.tar # chmod -R 755 ConfMan_1.7 # chown -R www ConfMan_1.7 # chgrp -R www ConfMan_1.7
$CHomeは、webで公開するディレクトリ。 (例)/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7
# cd $CHome/MSQL-files # msqladmin create test_database # vi $CHome/MSQL-files/database.msql
以下の行を編集
insert into admin_personel values('admin')
"admin"のところを管理者用のユーザ名に書き換える。
(.htaccessで使用する管理ユーザの名前)
#msql test_database < database.msql
$CHome/MSQL-files/config.pl 以下のように書き換える(この5行)
#!/usr/bin/perl //perlのパス $lite = "#!/usr/local/Hughes/bin/lite"; //liteのパス $cman_home = "$CHome"; //ConfManのhome '/'で終わってはいけない $host = "localhost"; //msqlが動作しているホスト名 $dbname = "test_database"; //作成したデータベース名
編集後 ./config.pl を実行
# ./config.pl
次に、lite を使って、confman.lite をコンパイル
# cd $CHome/cgi-bin # lite -l confman.lib confman.lite
$CHome/cgi-bin/PC-ONLY/self_save_review.cgi $CHome/ConfMan_1.7/cgi-bin/PC-ONLY/writereview.cgiでReply_Toを指定する箇所
$mail_cmd = get_cfg($sock,"mail_cmd"); $cc_email = get_cfg($sock,"cc_email"); $mail_footer = get_cfg($sock,"mail_footer");の次に、以下の行を追加する
$reply_to_email = get_cfg($sock,"rep_addr");
#!/bin/csh echo "enter the conference name" set Cname = $< echo "enter the path of ConfMan home like /xx/xx/xx" set Chome = $< foreach file ("SUBMISSIONS/index.html" "PC-online/ballot.html" "PC-online/procedure.html""PC-online/ballotexpl.html" "ADMIN/send_paper_conf.html" "ADMIN/unable_voting.html") cp $Chome/$file $Chome/$file.bk sed s/IDMS\'98/$Cname/ $Chome/$file > spool cp spool $Chome/$file end
sub end { exit 0; }の部分を、以下のように変更する
sub end { print "<hr><p><center>[<A HREF=\"http:/xx/xx\">home</A>] </center></p>"; exit 0; }
Configuration Pageでadmin1などを設定しようとしたときに、フォームの長さが足りないと思ったときは、
このファイルの該当箇所のmaxlengthを変更すればよい。
最大1700までは伸ばせるが、それ以上大きくしたい場合(print_msgなど?)は、データベースの設定を変える。
(database.msqlを変更すればよいはず)
#!/bin/csh echo "enter the path of ConfMan home like /xx/xx/xx" set Chome = $< echo "ADMIN" foreach file ("liste10.cgi" "liste11.cgi" "liste12.cgi" "liste8.cgi" "send_acc_notification.cgi" "send_acc_proc_chair2.cgi" "send_acc_shepherds2.cgi" "send_assign_notif_reviewer.cgi" "send_email.cgi" "send_paper_conf.cgi" "send_paperlist_reviewer.cgi") cp $Chome/cgi-bin/ADMIN/$file $Chome/cgi-bin/ADMIN/$file.bk sed s/Cc:/Bcc:/ $Chome/cgi-bin/ADMIN/$file > spool cp spool $Chome/cgi-bin/ADMIN/$file end echo "OPEN" foreach file ("reg_paper.cgi" "reg_participator.cgi" "upload_update.cgi") cp $Chome/cgi-bin/OPEN/$file $Chome/cgi-bin/OPEN/$file.bk sed s/Cc:/Bcc:/ $Chome/cgi-bin/OPEN/$file > spool cp spool $Chome/cgi-bin/OPEN/$file end echo "PC-ONLY" foreach file ("self_save_review.cgi" "writereview.cgi") cp $Chome/cgi-bin/PC-ONLY/$file $Chome/cgi-bin/PC-ONLY/$file.bk sed s/Cc:/Bcc:/ $Chome/cgi-bin/PC-ONLY/$file > spool cp spool $Chome/cgi-bin/PC-ONLY/$file end
/cgi-bin/OPEN/reg_paper.cgi /cgi-bin/OPEN/reg_participator.cgi /cgi-bin/OPEN/uplocad.cgi /cgi-bin/PC-ONLY/self_edit_review.cgi /cgi-bin/PC-ONLY/self_edit_reviewer.cgi /cgi-bin/PC-ONLY/self_save_reviewer.cgi
アクセス制御について
$CHomeと、その下のディレクトリにおいて CGIが使えるよう、 httpd.confに以下の行を追加する必要がある。 (なお、.htaccess は使わないことにしているので、「AllowOverride None」 になっています)。
<Directory "$CHome"> AllowOverride None Options +ExecCGI AddHandler cgi-script cgi pl Order allow,deny Allow from all </Directory>
現在の httpd.conf の設定は次のようになっています
### EACH DIRECTORY ### <Directory "/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7"> AllowOverride None Order deny,allow Deny from all Allow from localhost </Directory> # Deny all .htpasswd, .htgroup <Files .htpasswd> Order Deny,Allow deny from all </Files> <Files .htgroup> Order Deny,Allow deny from all </Files> # Confman Files <Directory "/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7/PICTURES"> AllowOverride None Order allow,deny Allow from all </Directory> <Directory "/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7/REG-paper"> AllowOverride None Order allow,deny Allow from all </Directory> <Directory "/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7/PC-online"> AllowOverride None AuthUserFile /usr/local/apache2/.bmde_htpasswd AuthGroupFile /usr/local/apache2/.bmde_htgroup AuthName "Members Only" AuthType Basic require group pcmember Order allow,deny Allow from all </Directory> <Directory "/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7/SUBMISSIONS"> AllowOverride None AuthUserFile /usr/local/apache2/.bmde_htpasswd AuthGroupFile /usr/local/apache2/.bmde_htgroup AuthName "Members Only" AuthType Basic require group admin pcmember Order allow,deny Allow from all </Directory> <Directory "/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7/ADMIN"> AllowOverride None AuthUserFile /usr/local/apache2/.bmde_htpasswd AuthGroupFile /usr/local/apache2/.bmde_htgroup AuthName "Members Only" AuthType Basic require group admin Order deny,allow Deny from all Allow from localhost </Directory> <Directory "/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7/cgi-bin/OPEN"> AllowOverride None Options +ExecCGI AddHandler cgi-script cgi pl Order allow,deny Allow from all </Directory> <Directory "/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7/cgi-bin/ADMIN"> AllowOverride None AuthUserFile /usr/local/apache2/.bmde_htpasswd AuthGroupFile /usr/local/apache2/.bmde_htgroup AuthName "Members Only" AuthType Basic require group admin Options +ExecCGI AddHandler cgi-script cgi pl Order deny,allow Deny from all Allow from localhost </Directory> <Directory "/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7/cgi-bin/PC-ONLY"> AllowOverride None AuthUserFile /usr/local/apache2/.bmde_htpasswd AuthGroupFile /usr/local/apache2/.bmde_htgroup AuthName "Members Only" AuthType Basic require group pcmember Options +ExecCGI AddHandler cgi-script cgi pl Order allow,deny Allow from all </Directory>
DocumentRoot に、.htpasswd, htgroup を作成する。
# htpasswd -c /usr/local/apache2/.test_htpasswd test_admin New password: mypassword Re-type new password: mypassword Adding password for user test_admin
(注) 初めて.htpasswdファイルを作成するときのみ-cオプションをつける
普通にエディタで作成する
admin: test_admin
その他の設定について。 必ずしも必要ではありませんが、余分な処理を省くために httpd.conf に次のように設定します。
HostnameLookups off
DirectoryIndex index.html
environmentに MSQL_DEBUG xxx を加えるとデバッグモードで動く
xxx : msql_query (cause the API to print the contents of queries as they are sent to the server.) msql_api (causes internal information, such as connection details, to be printed.) msql_malloc (Details about the memory used by the API library can be obtained)
**MANUALと違うので注意!**
設定法は
% setenv MSQL_DEBUG msql_query
とする。 複数設定する場合は
% setenv MSQL_DEBUG msql_query:msql_api
とする。
他のマシンを NFS マウントしないなど、運用に必要のないサービスは停止し ます。 少し不便になるが、我慢します。
cd /etc/rc2.d echo NFS mv S73nfs.client a_S73nfs.client echo Web-Based Enterprise Management mv S90wbem a_S90wbem echo Power Management mv S85power a_S85power echo cssd mv S90loc.ja.cssd a_S90loc.ja.cssd echo Wnn6 mv S94Wnn6 a_S94Wnn6 cd /etc/rc3.d echo NFS server mv S15nfs.server a_S15nfs.server echo DHCP mv S34dhcp a_S34dhcp echo SNMP mv S76snmpdb a_S76snmpdb echo Solstice Enterprise Manager mv S77dmi a_S77dmi echo vold mv S81volmgt a_S81volmgt echo Samba mv S90samba a_S90samba
/etc/inetd.conf でコメントアウト
echo, discard, daytime, chargen, time, ftp, printer telnet, shell, login, exec, finger
------------------------------------------------------------------------------------------------ > telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 bmde.db.is.kyushu-u.ac.jp ESMTP Sendmail 8.13.1/8.13.1; Tue, 5 Oct 2004 22:08:31 +0900 (JST) ------------------------------------------------------------------------------------------------
miniSQL バージョン 2.0 の README によれば「学校等で使用する場合は別」とい う内容の記載あり。我々の事情を Hughes 社の問い合わせたところ「ライセン ス購入の必要は無い」との回答を得た。
ユーザを作成。パスワードを設定。 これは、Confman が自動配送する各種メールを受け取ることと、 Web ページに書く問い合わせ先メールアドレスのための特別な「ユーザ」として使う。
Solaris で sendmail バージョンアップのWebページを 参考に、作業を行なう。
以下のように、システム起動の手順を定めておく。
--------------------------------------------------------------- #!/bin/sh #msql /usr/local/Hughes/bin/msql2d & echo "msql has started" #apache /usr/local/apache2/bin/apachectl start echo "apache has started" #sendmail /etc/rc2.d/a_S88sendmail start echo "sendmail has started" ---------------------------------------------------------------
バックアップは2重に行なう。 バックアップ用のディスクは2台用意する。それぞれのバックアップは、独立 したタイミングで行なう(一方は10分間隔、もう一方は1時間のように)ことに しています。
アップロードされたファイル、データベースの中身は定期的にバックアップを 実施します。 自動でバックアップしたいので、 自動実行バックアップ用のスクリプトを作成しました。 データベースの中身(著者、PC-member等の情報)と、 投稿された論文についてのバックアップを行なうようにしています。
---------------------------------------------------------------------------------- #!/bin/sh date=`date '+%m%d%H%M'` filename="backup"$date /usr/local/Hughes/bin/msqldump -h localhost bmde_database > /export/$filename.msql Paperfilename="Paperbackup"$date cd /usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7 tar -cpf /export/$Paperfilename.tar ./SUBMISSIONS/* ----------------------------------------------------------------------------------
バックアップはcronを利用して10分間隔と、1時間間隔に行なうよう設定しました。 cron の設定ファイルは次の通り。
ファイル: /var/spool/cron/crontabs/root ---------------------------------------------------------------- #ident "@(#)root 1.20 01/11/06 SMI" # # The root crontab should be used to perform accounting data collection. # # The rtc command is run to adjust the real time clock if and when # daylight savings time changes. # 10 3 * * * /usr/sbin/logadm 15 3 * * 0 /usr/lib/fs/nfs/nfsfind 1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean 0 6 * * * /usr/local/apache2/bin/log.sh 00,10,20,30,40,50 * * * * /usr/local/Hughes/bin/log.sh 08 * * * * /usr/local/Hughes/bin/log2.sh #10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___ ----------------------------------------------------------------
但し、バックアップが10分以内に終わらないと、いろいろ不都合が出るので、適宜、チェックが必要。
また、 「バックアップのディスクがオーバーフローしていないか」を定期的 に見張る必要もあります。
Confman のファイルのバックアップは手動で行うようにしています。 (Confman のファイルは、1度運用を開始したら、間違いが見つからない限り、 書き変わることがないので)
---------------------------------------------------------------- # cd /usr/local/apache2/share/htdocs/ # tar -cpf BMDE.tar ./BMDE/* # cp /usr/local/apache2/share/htdocs/BMDE.tar /export/. ----------------------------------------------------------------
本番運用開始前には、データベースに関して、次の作業を行なう
これで、論文ファイル、Confman 上の「論文データベース」が出来上がります。
PC chair から 「査読者割り当て」を手伝って欲しいと要望があった場合, 査読者割り当てを行なう。
論文投稿締切時点で、論文のタイトルと abstract を、上記の Web ページ reviewersample.html に書き込む
Confman の機能を利用して、査読を開始する。