1: 2022-02-14 (月) 11:32:50 iseki |
2: 2022-02-14 (月) 14:52:25 iseki |
- | ** Ltictr_Proxy [#o2f0e6b3] | + | ** 概要 [#k3dd6a2c] |
- | - [[mod_lticontainer]] と連携させるための,configurable-http-proxy 代替えとなる リバースプロキシサーバ | + | - JupyterHub の [[''configurable-http-proxy''>https://github.com/jupyterhub/configurable-http-proxy]] の代用となるリバースプロキシサーバ |
- | - | + | - [[''configurable-http-proxy''>https://github.com/jupyterhub/configurable-http-proxy]] との併用も可. |
| + | - [[''mod_lticontainer''>https://gitlab.nsl.tuis.ac.jp/iseki/mod_lticontainer]] で Charts機能を使用する場合に必要. |
| + | #br |
| + | |
| + | ** 機能 [#d15259a5] |
| + | - JupyterHub から通知を受けて動作する通信経路制御のための ''ltictr_api_server'' と,実際に通信を中継して WebSocketデータを解析する ''ltictr_proxy_server'' から成る. |
| + | - 通常は ''ltictr_proxy_server'' からチャイルドプロセスとして ''ltictr_api_server'' が起動される. |
| + | -- ''ltictr_proxy_server'' と ''ltictr_api_server'' はそれぞれ独立に起動することも可能. |
| + | - ''ltictr_proxy_server'' は単体で普通のWeb用リバースプロキシサーバとしても使用可能. |
| + | - 機能詳細 |
| + | -- JupyterHub の通信経路制御に対応 |
| + | -- 通信の中継 |
| + | -- WebSocket 通信の解析. |
| + | --- ''ユーザの学習状況に関するデータを収集''. |
| + | -- HTTP(S)通信の解析. |
| + | -- Cookie の挿入.(Moodle のコース識別を行うため) |
| + | -- ''収集したデータを Moodle へXML-RPC 通信で渡す''.(MoodleのWebサービスを使用) |
| + | |
| + | ** コマンド引数 [#r702c13c] |
| + | **** ltictr_proxy_server [#m85cd09d] |
| + | Usage... %s -p client_side_port [-c] [-h host_url[:port]] [-a [api_url:]port] [-u user] [-d] |
| + | [--noexecapi] [--chunked] [--conf config_file] |
| + | [--cert cert_file] [--key key_file] [--pid pid_file] |
| + | - ''-p'' : Webブラウザの通信を受けるローカルサーバポート番号.必須. |
| + | - ''-c'' : Webブラウザに対してSSL/TLS接続になる. |
| + | - ''-h'' : WWWサーバを明示的に指定するためのURL.ltictr_api_server を使用する場合は省略可. |
| + | - ''-a'' : ltictr_api_server を指定するためのURL.ポート番号のみの場合,URL部分は http://127.0.0.1 となる. |
| + | - ''-u'' : 実効ユーザ名. |
| + | - ''-d'' : デバッグモード. |
| + | - ''-n'', ''--noexecapi'' : ltictr_api_server を起動しない. |
| + | - ''--chunked'' : chunkデータをchunkデータとして扱う.通常動作では chunkデータは,一旦全部受信されてから転送される. |
| + | - ''--conf'' : 設定ファイルを指定する(''コマンドラインと競合する場合は,設定ファイル優先'') |
| + | - ''--cert'' : -c を指定した場合のサーバ証明書:PEM形式.設定ファイル内でも指定可能. |
| + | -- デフォルトは /etc/pki/tls/certs/server.pem |
| + | - ''--key'' : -c を指定した場合のサーバの秘密鍵:PEM形式.設定ファイル内でも指定可能. |
| + | -- デフォルトは /etc/pki/tls/private/key.pem |
| + | - ''--pid'' : pid ファイルを指定する. |
| + | -- デフォルトは /var/run/ltictr_proxy.pid |
| + | |
| + | **** ltictr_api_server [#j067bff8] |
| + | Usage... %s -a [api_url:]port [-u user] [-d] |
| + | [--conf config_file] [--cert cert_file] [--key key_file] [--apid pid_file] |
| + | - ''-a'' : サーバポートのURL.必須.FQDNの部分は無視する.TLS通信を行う場合は https://:8001 のように記述する. |
| + | - ''-u'' : 実効ユーザ名. |
| + | - ''-d'' : デバッグモード. |
| + | - ''--conf'' : 設定ファイルを指定する(''コマンドラインと競合する場合は,設定ファイル優先'') |
| + | - ''--cert'' : -c を指定した場合のサーバ証明書:PEM形式.設定ファイル内でも指定可能. |
| + | -- デフォルトは /etc/pki/tls/certs/server.pem |
| + | - ''--key'' : -c を指定した場合のサーバの秘密鍵:PEM形式.設定ファイル内でも指定可能. |
| + | -- デフォルトは /etc/pki/tls/private/key.pem |
| + | - ''--pid'' : pid ファイルを指定する. |
| + | -- デフォルトは /var/run/ltictr_proxy.pid |
| + | |
| + | ** 起動 [#x7ca0f56] |
| + | *** systemd を使用する. [#w2040826] |
| + | # vi /usr/local/etc/ltictr_proxy.conf |
| + | # vi /usr/lib/systemd/system/ltictr_proxy.service |
| + | # systemctl enable ltictr_proxy.service |
| + | # systemctl start ltictr_proxy.service |
| + | |
| + | *** 手動起動 [#s4d0923a] |
| + | **** 1. 通常の起動 [#l6ce9541] |
| + | # ltictr_proxy_server -p 8100 -c -a 8001 --conf /usr/local/etc/ltictr_proxy.conf |
| + | # jupyterhub -f jupyterhub_XXX_config.py |
| + | **** 2. ltictr_api_server と ltictr_proxy_server を別々に起動する場合 [#g32fa414] |
| + | # ltictr_api_server -a 8001 --conf ./ltictr_proxy.conf |
| + | # ltictr_proxy_server -p 8100 -c -a 8001 -n --conf /usr/local/etc/ltictr_proxy.conf |
| + | # jupyterhub -f jupyterhub_XXX_config.py |
| + | **** 3. configarable-http-proxy と併用する場合.または通常の Webリバースプロキシとして使用する場合 [#o68a35a8] |
| + | # ltictr_proxy_server -p 8100 -c -n -h http://202.26.150.55:8000 --conf /usr/local/etc/ltictr_proxy.conf |
| + | # jupyterhub -f jupyterhub_XXX_config.py |
| + | |
| + | ** 設定 [#ea3a901b] |
| + | *** JupyterHub の設定 [#nffb03c1] |
| + | - 上記 ''手動起動'' で,''1, 2の場合'',JupyterHubで自動的に configurable-http-proxy が起動しないようにしなければならない. |
| + | - JupyterHub の設定ファイル(jupyterhub_XXX_config.py) |
| + | c.JupyterHub.cleanup_proxy = False |
| + | c.ConfigurableHTTPProxy.should_start = False |
| + | c.ConfigurableHTTPProxy.api_url = 'http://localhost:8001' |
| + | c.ConfigurableHTTPProxy.auth_token = "ABCDEFG" # 任意の文字例.下記参照. |
| + | |
| + | *** 設定ファイル (/usr/local/etc/ltictr_proxy.conf) [#l6c34358] |
| + | - ''Moodle_Host'' = XML-RPC を行うホスト名(FQDNまたはIPアドレス). |
| + | -- デフォルトは localhost |
| + | - ''Moodle_Port'' = XML-RPC を行うホストのポート番号. |
| + | -- デフォルトは 80 |
| + | - ''Moodle_TLS'' = XML-RPC を行う際に HTTPS を使用するかどうか. |
| + | -- デフォルトは FALSE. |
| + | -- 注:HTTPS通信を行う場合,相手(Moodleホスト)のサーバ証明書は検証しない. |
| + | - ''Moodle_URL'' = XML-RPC を行うURLのディレクトリ情報. |
| + | -- デフォルトは /webservice/xmlrpc/server.php |
| + | - ''Moodle_Token'' = Moodle から発行されたトークン.下記参照.必須. |
| + | - ''Moodle_DBAns'' = XML-RPC を行った場合の返答を表示するかどうか. |
| + | -- デバッグ用.デフォルトは FALSE |
| + | - ''Moodle_Servide'' = XML-RPC のサービス名. |
| + | -- デフォルトから変更する必要はない.変更すると動かなくなる. |
| + | -- デバッグ用.デフォルトは ''mod_mdlds_write_nbdata'' |
| + | - ''Moodle_HTTP'' = XML-RPC を行う際の HTTPのプロトコルバージョン.1.1 か 1.0 を指定. |
| + | -- 多分 1.1 で問題ない.デフォルトは 1.1 |
| + | - ''LTICTR_PID_File'' = ltictr_proxy_server の pidファイル. |
| + | - ''LTICTR_API_PID_File'' = ltictr_api_server の pidファイル. |
| + | - ''LTICTR_API_Token'' = APIサーバの接続用トークン.任意の文字列.JupyterHub の設定ファイルのc.ConfigurableHTTPProxy.auth_token と同じ値にする.ltictr_proxy_server でも必要. |
| + | - ''LTICTR_Server_Cert'' = HTTPS通信を行う場合のサーバ証明書(PEM形式) |
| + | -- デフォルトは /etc/pki/tls/certs/server.pem |
| + | - ''LTICTR_Private_Key'' = HTTPS通信を行う場合の秘密鍵ファイル(PEM形式) |
| + | -- デフォルトは /etc/pki/tls/private/key.pem |
| + | |
| + | *** Moodle 側の設定 (Webサービスを利用するためのトークンの取得) [#zf05af7f] |
| + | + 管理者IDで「サイト設定」 -> 「プラグイン」 -> 「ウェブサービス」 -> 「外部サービス」 |
| + | ++ 「''Jupyter Notebook Data''」の項目を確認 |
| + | ++ 「''Jupyter Notebook Data''」の 「許可ユーザ」をクリック |
| + | + 適当なユーザ(教師ロールのユーザ)を選択し,許可ユーザとする |
| + | + ウェブサービスのメニューまで戻って,「トークンを管理する」を選択. |
| + | + 「追加」をクリック. |
| + | ++ ユーザ名に先程選択したユーザ名を入れる. |
| + | ++ サービスは「''Jupyter Notebook Data''」を選択 |
| + | ++ 「変更を保存する」をクリック |
| + | + 「トークンを管理する」まで戻ると,ユーザ用のトークンができているので,それをコピーする. |
| + | + トークンを設定ファイル(ltictr_proxy.conf)の ''Moodle_Token'' に設定する. |
| #br | | #br |