Changes between Version 27 and Version 28 of misc/botlog_pas


Ignore:
Timestamp:
08/30/18 19:07:45 (15 months ago)
Author:
michkawa
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • misc/botlog_pas

    v27 v28  
    2020ソースパッケージはプログラムソースと実行環境をまとめてあり、設定パッケージは、プログラムを実行するために必要な環境設定をまとめてある。 
    2121 
    22 == インストール環境 == 
     22== 検証環境 == 
     23 
     24=== サーバー側 === 
    2325 
    2426今回のインストールに使用したシステムは、 
     
    4446 
    4547 
    46 == Webクライアント == 
     48=== Webクライアント側 === 
    4749 
    4850現在開発に使用しているのは、主にWindows版chromeなので、これを推奨する。[[br]] 
     
    167169[[Image(2018_08_24_13_55_40.png,300)]][[Image(2018_08_24_13_56_17.png,300)]] 
    168170 
    169 画面を確認したら、PrintAnyServerは一旦{{{CTRL+C}}}で終了しておく。 
    170  
    171  
    172 = 設定 = 
    173  
    174 この状態でも一般的な使用は可能なので、そのまま使っても問題はない。[[br]] 
    175 botlog,PrintAnyServer共に設定を変更した際には、必ずhttpdを再起動する必要がある。 
    176  
    177 {{{ 
    178 [root@localhost ~]# service httpd restart 
    179 Stopping httpd:                                            [  OK  ] 
    180 Starting httpd:                                            [  OK  ] 
    181 }}} 
    182  
    183 == botlog == 
    184  
    185 === DB === 
    186  
    187 デフォルトでは、sqlite3が動作確認用DBとして設定されている。[[br]] 
    188 sqlite3のDBは単一ファイルなので、ファイルの保存ディレクトリを変更すればいい。[[br]] 
    189  
    190 {{{ 
    191     # sqlite3用DB設定 
    192     def getSqlite3Cfg(self): 
    193         # file: db file 
    194         #       dbファイルのフルパスを設定 
    195         #       * 作成したファイルとファイルのあるディレクトリのパーミッションは"777"にしておくか 
    196         #         Webサーバーのユーザー(通常はapache/apache)が読み書きできるようにしておくこと 
    197         return {'file':'/opt/OperationLog/data/botlog/db/sqlite3/botlog.sqlite3'} 
    198 }}} 
    199  
    200 コメントにも書いてあるように、DBファイルとディレクトリのパーミッションは"777"にしないと動作しなくなるので注意。[[br]] 
    201  
    202 DBをPostgreSQLに変更する場合には、 
    203  
    204 {{{ 
    205     # DB種別設定 
    206     def getDbCfg(self): 
    207         # type: [ sqlite3 | postgresql ] 
    208         #return {'type':'sqlite3'} 
    209         return {'type':'postgresql'} 
    210  
    211  
    212     # postgresql用設定 
    213     # userは設定しないとhttpd user(apache)で書き込むので、 
    214     # DB管理用ユーザー(作成ユーザー)を設定すること 
    215     def getPostgresqlCfg(self): 
    216         return {'host':'localhost',  <-- DBホスト 
    217                 'port':5432,         <-- 接続ポート番号 
    218                 'db':'botlog',       <-- DB名(これは変えなくてもいい) 
    219                 'user':'logoper',    <-- DB接続ユーザー名 
    220                 'passwd':''}         <-- DB接続パスワード 
    221  
    222 }}} 
    223  
    224 の設定を変更する。[[br]] 
    225 PostgreSQL自体の設定はここでは説明しない。 
    226  
    227 === セクション(グルーブ)設定 === 
    228  
    229 セクション名の設定は、SQLを直接実行するか、{{{/opt/OperationLog/botlog/sql/[sqlite3|PostgreSQL]/section.sql}}}を編集したデータを各DB用のコンソールから設定する。[[br]] 
    230 但し、idが0,1は特別な意味を持っているので、設定は変更しないこと。[[br]] 
    231  
    232 データがない初期状態ならば、テーブルを一括で作成するスクリプトを作成しているので、それを利用すると一括でテーブルを再構築する。[[br]] 
    233 '''このスクリプトは一度全てのテーブルを削除するので、消してもいいデータしかない場合以外は実行しないこと。'''[[br]] 
    234  
    235  * sqlite3 の場合 
    236 {{{ 
    237 [user@localhost ~]$ /opt/OperationLog/botlog/sql/sqlite3/createTable.sh /opt/OperationLog/data/botlog/db/sqlite3/botlog.sqlite3 
    238 }}} 
    239  
    240  * PostgreSQLの場合 
    241  
    242  PostgreSQLの場合には、DBへ接続するための設定をシェルスクリプト内に記述してから実行すること。 
    243  
    244  {{{ 
    245 [user@localhost ~]$ /opt/OperationLog/botlog/sql/PostgreSQL/createTable.sh 
    246  }}} 
    247  
    248 テーブルがない状態でこれらのスクリプトを起動すると、いくつかエラーが表示されるが、無視してもいい。 
    249  
    250  
    251 == !PrintAnyServer == 
    252  
    253 === 動作確認 === 
     171botlogの動作確認は、"運転内容"に何かメッセージを入力し、"現在時刻で登録"を押下してログが表示されればOK。[[br]] 
    254172 
    255173PrintAnyServerは、サーバー起動後にWeb画面から画像を登録して動作を確認する。[[br]] 
    256174 
    257 まずは、rootになってから、'''apacheユーザー'''でPrintAnyServerを再起動する。 
    258  
    259 {{{ 
    260 [root@localhost ~]# su -s /bin/bash apache 
    261 bash-4.1$ cd /opt/OperationLog/PrintAnyServer 
    262 bash-4.1$ source /opt/OperationLog/etc/env.sh 
    263 bash-4.1$ python2.7 printAnyServer.py conf/test.cfg 
    264 Bottle v0.12.13 server starting up (using PasteServer())... 
    265 Listening on http://0.0.0.0:9000/ 
    266 Hit Ctrl-C to quit. 
    267  
    268 serving on 0.0.0.0:9000 view at http://127.0.0.1:9000 
    269 }}} 
    270  
    271 Web画面を起動し、クリップボードに画像を読み込んでから、"Paste clipboard image or Drop image file"上で右クリックして、"Paste"を選択する。[[br]] 
     175Web画面を起動し、クリップボードに画像を読み込んでから、"Paste clipboard image or Drop image file"上で右クリックして、"貼り付け(Paste)"を選択する。[[br]] 
    272176画像のサムネイルとキャプションが入力できるダイアログボックスが表示されるので、"登録"ボタンを押下する。[[br]] 
    273177正常に動作すれば画像が表示され、{{{/opt/OperationLog/data/pas}}}に日付ディレクトリとindex_list.txtというファイルが作成される。[[br]] 
    274178 
    275  
    276 === 起動スクリプト === 
     179画像が保存されたことを確認したら、一旦 {{{CTRL+C}}}でPrintAnyServerを終了する。 
     180 
     181 
     182= 運用 = 
     183 
     184このままでも運用は可能なので、特に修正する必要がない場合には、このままPrintAnyServerを起動しても問題はない。[[br]] 
     185修正が必要なら[wiki:/misc/botlog_pas/modify 詳細設定]を参照して、修正を行う。[[br]] 
     186 
     187 
     188== PrintAnyServer起動スクリプト == 
    277189 
    278190PrintAnyServerをprocServで起動するためのスクリプト"{{{/opt/OperationLog/PrintAnyServer/bootPas.sh}}}"を作成してあるので、通常運用時に使用して欲しい。[[br]] 
     
    316228 
    317229 
    318 === その他の設定 === 
    319  
    320 基本的な設定以外にも、[wiki:misc/botlog_pas/client_download クライアント用プログラムのダウンロード機能]と[wiki:misc/botlog_pas/printer 同時印刷機能]があるが、これらは別ページで解説する。 
    321  
    322  
    323 == EPICS record monitor == 
    324  
    325 EPICS record monitor は、botlog用Web APIを使用した外部プログラムで、登録されているEPICSレコードに変化があった場合、botlogに自動的にメッセージを登録する。[[br]] 
    326 監視するレコードとメッセージの関連付けは、pythonで記述し、1メッセージにつき、1ファイルを作成する必要がある。[[br]] 
    327  
    328 プログラム本体は、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor}}}の{{{epicsRecordMonitor.py}}}で、各設定は{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/Modules}}}に設定する。 
    329  
    330 === 設定ファイル === 
    331  
    332 設定ファイルは、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/test_ermi.py}}}をひな型にして作成し、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/Modules}}}に保存すれば、{{{epicsRecordMonitor.py}}}を起動した際に読み込まれ、実行される。 
    333  
    334 {{{ 
    335 # -*- coding: utf-8 -*- 
    336 # 
    337  
    338 """ 
    339 このプログラムを EPICS Record Monitor 定義のひな型として使用すること 
    340  
    341 各設定に使用する場合に変更する箇所は、pvs変数とexecFunc関数 
    342 クラス名は変更しないこと 
    343  
    344 """ 
    345  
    346 from epicsRecordMonitorItem import * 
    347  
    348 # 
    349 # 
    350 # 
    351 class ermi(epicsRecordMonitorItemIF): 
    352     # 
    353     # クラスコンストラクタ 
    354     # ここで使用するレコード名を設定 
    355     # 
    356     def __init__(self): 
    357         pvs = ['jane', 'fred']    # ここに使用するレコード名をリスト形式で設定 
    358         self.setPvs(pvs) 
    359  
    360     # 
    361     # メッセージ出力条件を記述 
    362     # 関数の引き数 pvs に関数実行時のデータが渡される 
    363     # データの形式は辞書型を含んだリストで、構造は以下のようになっている 
    364     # 
    365     # [ 
    366     #   { 
    367     #     'name'   : record name, 
    368     #     'prevVal': previos value, 
    369     #     'val'    : current value, 
    370     #     'time'   : record process time 
    371     #   }, 
    372     #     : 
    373     # ] 
    374     # 
    375     # リストの順番はコンストラクタで設定した順番 
    376     # 
    377     # 戻り値はメッセージのみを返すようにして、メッセージがない場合には None を返すこと 
    378     # 
    379     def execFunc(self, pvs): 
    380         janePv = pvs[0] 
    381         fredPv = pvs[1] 
    382  
    383         rtn = None 
    384         if janePv['val'] < fredPv['val'] and fredPv['prevVal'] != fredPv['val']: 
    385             rtn = "fred is over jane!!!" 
    386  
    387         return rtn 
    388  
    389 }}} 
    390  
    391 設定ファイルのチェック機能はまだ作成していないので、動作チェックは実際に動かしてみるしか方法が無い。[[br]] 
    392  
    393 === 動作確認 === 
    394  
    395 動作テストは、{{{/opt/OperationLog/botlog/tools/epicsRecordMonitor/test_ermi.py}}}を{{{Modules}}}にコピーして、プログラムを実行することで行う。 
    396  
    397 {{{ 
    398 [user@localhost ~]$ source /opt/OperationLog/etc/env.sh 
    399 [user@localhost ~]$ cd /opt/OperationLog/botlog/tools/epicsRecordMonitor 
    400 [user@localhost epicsRecordMonitor]$ cp test_ermi.py Modules 
    401 [user@localhost epicsRecordMonitor]$ python2.7 epicsRecordMonitor.py 
    402 }}} 
    403  
    404 プログラムを実行すると、botlogに{{{Initial Disconnect Pvs:jane, fred}}}というメッセージが表示される。[[br]] 
    405 一旦プログラムを終了し、{{{excas}}}を別画面で起動する。[[br]] 
    406 再度プログラムを起動し、{{{test_ermi.py}}}に設定してある条件が満たされると、{{{fred is over jane!!!}}}というメッセージが追加される。[[br]] 
    407  
    408 後は、{{{Modules/test_ermi.py}}}を削除してから、設定ファイルを作成後にプログラムを実行すれば、メッセージが自動的にbotlogに追加される。[[br]] 
    409 このプログラム用の起動スクリプトは作成していないので、ユーザーが作成すること。 
    410  
    411  
     230 
     231