金子邦彦研究室インストールSolarisSolaris で ConfMan(Conference Manager) 立ち上げ

Solaris で ConfMan(Conference Manager) 立ち上げ

Solaris 9 上で、confman_1.7, msql-2.0.12 (lite), httpd-2.0.52 をインス トールし、国際会議の論文投稿用の Web を立ち上げます。

関連する外部ページ

msql-2.0.12

  1. Hughes Technologies 社 Web ページにて、メール登録
  2. メールで送られてくるパスワードにてログイン
  3. ソースを取ってきて、適当なディレクトリに置く (今回は/tmpに置いた。 また、ソースの名前がmsql-2.0.12.tar.gz.tarとなっていたので、msql-2.0.12.tar.gzに変更)
  4. 解凍、展開
        # cd /tmp
        # gzip -d msql-2.0.12.tar.gz
        # tar -xvf msql-2.0.12.tar
    
  5. インストール (/tmp/msql-2.0.12/INSTALLに詳しいインストール方法が書いてある。)
        # cd msql-2.0.12
        # make target
        # cd targets/Solaris-2.9-Sparc (OSにあわせてここの名前は変わる)
        # ./setup
        # make all
        # make install
    
  6. これで/usr/local/Hughesディレクトリができる。 この下に設定ファイルなどがある
  7. 設定. mSQL_User, Admin_User 等を設定します。以下は設定です。
        # 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」に設定すると、セキュリティ上の対 策が必要なので、十分に注意すること。

  8. ユーザの追加
        # vipw
          で /etc/passwd  に以下の行を追加
          msql:x:98:98:MSQL SERVER ::/bin/nosh
    

    その後、/usr/local/Hughes ディレクトリのownerをmsqlに変更する

       # chown -R msql /usr/local/Hughes
    
  9. msql.acl の設定

    以下は設定例です。

    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 を使った通信ができる。

  10. 起動、終了
        # /usr/local/Hughes/bin/msql2d &
          で起動.
        # kill `cat /usr/local/Hughes/msql2d.pid`
          で終了
    

msql2 付属ツール

以下、ツールの説明ですが、ツールのオプション部分は、頻繁に使われるであ ろうパラメタだけを書いている.

apache-2.0.52 インストール

apacheについて

  1. ソースを取ってきて、適当なディレクトリに置く (今回は/tmpに置いた。)
  2. 解凍、展開
        # cd /tmp
        # gzip -d httpd-2.0.52.tar.gz
        # tar -xvf httpd-2.0.52.tar
    
  3. インストール (/tmp/httpd-2.0.52/INSTALL、/tmp/httpd-2.0.52/docs/manual/install.html に詳しい設定方法が書いてある。 今回は、何もオプションをつけずにインストールした。)
        # cd httpd-2.0.52
        # ./configure --prefix=/usr/local/apache2 (prefixのところは適当に決める)
        # make
        # make install
    
  4. これで/usr/local/apache2ディレクトリができる。 この下に設定ファイルなどがある。
  5. 設定

    httpd.conf を設定します。

        # cd /usr/local/apache2/conf
        # vi httpd.conf
    

    このファイルを環境に合わせて編集する

  6. apacheのログ用のファイル,ディレクトリ等の作成
    /usr/local/apache2/bin/apachectl configtest
    mkdir -p /usr/local/apache2/logs/archive
    
  7. apacheログ管理用のスクリプト
    /usr/local/apache/bin/log.shの ファイルの中身は以下の通り
    #!/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
    
  8. apacheのログ移動用のcronの設定
    apacheのログ移動用の設定は以下の通り(ファイル名は/var/spool/cron/crontabs/root)です。
    0 6 * * * /usr/local/apache2/bin/log.sh
    
  9. ユーザの追加
        # vipw
    
    で /etc/passwd に以下の行を追加 www:x:80:80:HTTP SERVER ::/bin/nosh
  10. 起動、終了
        # /usr/local/apache2/bin/apachectl start(stop,restart)
    
    で起動、終了、再起動ができる

confman-1.7 インストール

confmanについて

  1. http://www.ifi.uio.no/confman/downloads/ よりダウンロード (v1.7)。 conference nameを入れないとダウンロードできない。
  2. ConfMan_1.7.tar.gz.tarをwebで公開できるディレクトリに置く (例:/usr/local/apache2/share/htdocs) (Web page からソースを取ってくると、ConfMan_1.7.tar.gz.tarになっているので、 ConfMan_1.7.tar.gzに変更しておく)
         # 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
    

設定とカスタマイズ

ConfMan設定法に関して

$CHomeは、webで公開するディレクトリ。 (例)/usr/local/apache2/share/htdocs/BMDE/ConfMan_1.7

msql関連の設定

    # 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

cgi関連の設定

$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
      

ファイルの書き換え(必須)

ファイルの書き換え (option)

httpd.conf の設定

アクセス制御について

$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>

.htpasswd, htgroup の作成

DocumentRoot に、.htpasswd, htgroup を作成する。

その他の設定について。 必ずしも必要ではありませんが、余分な処理を省くために httpd.conf に次のように設定します。

デバッグについて

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

とする。

運用

Solaris と apache のセキュリティ

miniSQL ライセンス

miniSQL バージョン 2.0 の README によれば「学校等で使用する場合は別」とい う内容の記載あり。我々の事情を Hughes 社の問い合わせたところ「ライセン ス購入の必要は無い」との回答を得た。

専用ユーザの作成

ユーザを作成。パスワードを設定。 これは、Confman が自動配送する各種メールを受け取ることと、 Web ページに書く問い合わせ先メールアドレスのための特別な「ユーザ」として使う。

sendmail の設定とテスト

Solaris で sendmail バージョンアップのWebページを 参考に、作業を行なう。

システム起動用のシェルスクリプト作成

以下のように、システム起動の手順を定めておく。

  1. マシン の電源を入れ、Solarisを立ち上げる
  2. ルートでログイン
  3. 下記のスクリプトを実行
    ---------------------------------------------------------------
    #!/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 のファイルのバックアップは手動で行うようにしています。 (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 から 「査読者割り当て」を手伝って欲しいと要望があった場合, 査読者割り当てを行なう。

査読

Confman の機能を利用して、査読を開始する。