Changes between Version 27 and Version 28 of misc/botlog_pas


Ignore:
Timestamp:
08/30/18 19:07:45 (7 years ago)
Author:
Tetsuya Michikawa
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