Pushkin Lemmatized Concordance Web サービスのコーパス構築プログラムの改訂に伴い,サービス開始・終了方法を変更した。運用備忘録。
システム開始・Web サーバ起動後,以下のシェルスクリプト corpusbuild.
#!/bin/sh # Corpus Shared Memory Building Manager # 2014(c) isao yasuda. # $Id: corpusbuild.sh 50 2014-06-09 07:18:37Z isao $ # programms CLD=/usr/local/bin/CorpusLoaderDaemon WLD=/usr/local/bin/WordTreeBuilderDaemon # Corpus files COR=/usr/local/etc/pushkin/pushkin.txt TDB=/usr/local/etc/pushkin/titledb.txt # admin directroy VDR=/var/pushkin_concordance # pid files CPID=$VDR/CorpusLoader.pid WPID=$VDR/WordTreeBuilder.pid # log file LOGF=$VDR/daemon.log # shared memory handle configuration file CONF=$VDR/concordance.conf ARGC=$# OSN=`uname -s` apache=/usr/local/sbin/apachectl if [ "$OSN" = "Darwin" ]; then apache=/usr/sbin/apachectl fi # functions usage () { if [ $ARGC -ne 1 ]; then echo "Usage: `basename $0` [start(-s)|stop(-t)|restart(-r)|log(-l)]" exit fi } start () { # CorpusLoaderDaemon 起動 $CLD $COR $TDB sleep 15 # pid ファイルが "STARTING" の間は次に行かない。 if [ -f $CPID ]; then PN=`cat $CPID` while [ "$PN" = "STARTING" ] do sleep 3 PN=`cat $CPID` done fi echo '* CorpusLoader daemon started.' # WordTreeBuilderDaemon 起動 $WLD $COR sleep 15 # pid ファイルが "STARTING" の間は次に行かない。 if [ -f $WPID ]; then PN=`cat $WPID` while [ "$PN" = "STARTING" ] do sleep 3 PN=`cat $WPID` done fi echo '* WordTreeBuilder daemon started.' echo '* Concordance Configuration:' cat $CONF # Apache 再起動 $apache restart echo '* Apache restarted.' } stop () { kill -TERM `cat $CPID` echo '* CorpusLoader daemon terminated.' kill -TERM `cat $WPID` echo '* WordTreeBuilder daemon terminated.' } # main procedure usage echo \* Pushkin Concordance Corpus Building started at \ `date +%Y-%m-%d\ %H:%M:%S` case "$1" in start | -s) start ;; stop | -t) stop ;; restart | -r) stop start ;; log | -l) tail -100 -f $LOGF ;; *) echo "$1: operand invalid." usage ;; esac echo \* Pushkin Concordance Corpus Building ended at \ `date +%Y-%m-%d\ %H:%M:%S`
停止するときは corpushbuild.
/usr/local/etc/apache22/Includes に以下の FastCGI 構成ファイルを格納して,apache を再起動する。これにより,Wt C++ Toolkit ベースの Web アプリケーション concordance が初期化されサービスを開始する。初期化のタイミングでコーパス構築プログラムが出力した共有メモリハンドル構成ファイル concordance.
# -*- coding: utf-8; mode: conf; -*- # fastcgi for FreeBSD <Directory "/usr/local/www/pushkin"> order allow,deny allow from all </Directory> <IfModule mod_fastcgi.c> Alias /pushkin/lemmatized/ /usr/local/www/pushkin/ FastCgiConfig -idle-timeout 600 -maxClassProcesses 20 -maxProcesses 60 -killInterval 1200 -autoUpdate -initial-env WT_AP_ROOT=/etc/wt Fastcgiserver /usr/local/www/pushkin/concordance </IfModule>
concordance プログラムがきちんと起動したかを apache22 のエラーログで確認する。
[2014-Jun-21 21:52:21.038255] 30326 - [info] "WServer/wtfcgi: initializing relay server" [2014-Jun-21 21:52:21.053918] 30326 - [info] "config: reading Wt config file: /etc/wt/wt_config.xml (location = '/usr/local/www/pushkin/concordance')" [2014-Jun-21 21:52:21.055063] 30326 - [info] "wtfcgi: spawned session process: pid = 30327" [2014-Jun-21 21:52:21.055459] 30326 - [info] "wtfcgi: reading FastCGI stream from stdin" Concordance config: /var/pushkin_concordance/concordance.conf Concordance Configuration parameters: - CORPUSHDL:116 - TITLDBHDL:14611988 - WORDTAHDL:23004796 - WORDTLHDL:96 Concordance Shared Memory Construction. [2014-Jun-21 21:52:21.138627] 30327 - [info] "config: reading Wt config file: /etc/wt/wt_config.xml (location = '/usr/local/www/pushkin/concordance')" [2014-Jun-21 21:52:21.139269] 30327 - [info] "WServer/wtfcgi: initializing shared wtfcgi session process" [Sat Jun 21 21:52:21 2014] [notice] Apache/2.2.xx (FreeBSD) SVN/x.x.x mod_fastcgi/mod_fastcgi-SNAP-xxxxxxxxxx mod_ssl/x.x.x OpenSSL/x.x.x DAV/2 configured -- resuming normal operations Concordance Shared Memory Deconstruction.
もしデーモン起動後,コンコーダンスサービスが 500 サーバエラーとなり,apache22 のエラーログに以下のようなエラーが出ていた場合は,前回きちんと停止されずにサーバが再起動され PID ファイルが残っていたため,Shared Memory 構築がなされなかったことが考えられる。
[Mon Jun 21 19:35:50 2014] [warn] FastCGI: server "/Library/WebServer/pushkin/c oncordance" started (pid 5457) libc++abi.dylib: terminating with uncaught exception of type boost::interproces s::interprocess_exception: No such file or directory [Mon Jun 21 19:35:50 2014] [warn] FastCGI: server "/Library/WebServer/pushkin/c oncordance" (pid 5457) terminated due to uncaught signal '6' (Abort trap)
このようなときは,PID ファイルを削除して,再度 corpusbuild.