flagflag  If you want to see English page, please click "English" Button at Left.
12: 2021-10-16 (土) 19:16:33 iseki ソース 現: 2024-04-17 (水) 20:19:46 iseki ソース
Line 1: Line 1:
 +* This page is out of date. [#fb9d7b14]
 +* Please see https://polaris.star-dust.jp/pukiwiki/?M​oodle%2BJupyterHub [#m22e2071]
 +
 +
* Moodle & JupyterHub 連携 [#t72c88ce] * Moodle & JupyterHub 連携 [#t72c88ce]
-- LTI カスタムパラメータを使用した Moodle + JupyterHub 連携を研究中 +- %%''現行システムは JupyterHub-2.3.1, 3.1.1 では動作するが,4.0.0 では動作しない''%% 
-- iseki@rsch.tuis.ac.jp+-- 動くようになりました.
 +- LTI カスタムパラメータを使用した Moodle + JupyterHub 連携を研究中
- [[Moodle]] - [[Moodle]]
- [[JupyterHub]] - [[JupyterHub]]
Line 14: Line 19:
-- [[mod_ltids]] +- [[mod_lticontainer]] 
-- [[feserver]]+- %%[[feserver]]%% 
 +- [[Ltictr_Proxy]] 
 +#br 
 + 
 +*** 最新メモ [#k8d9209c] 
 +**** 2023/05/07 [#mc229461] 
 +- JupyterHub v3 で Podman も Docker 同様に扱えるようになった模様. 
 +-- JupyterHub v3 では jupyterhub_podman_config.py と最新の Dockerイメージ(ltids)の組み合わせは使用できない.(パーミッションエラーが出る) 
 +-- JupyterHub v3 で最新の Dockerイメージ(ltids)を使用したい場合は,Podmanであっても jupyterhub_docker_config.py を使用すること. 
 +- JupyterHub v4 では XSRFクッキー関連で,[[ltiauthenticator>LTI#o7520050]] が使用できない.[[JupyterHub>JupyterHub#s373921d]] 
 +-- site-packages/jupyterhub/handlers/base.p​y の関数 check_xsrf_cookie(self) でそまま True を返させる. 
 + --- base.py-    2023-05-07 01:44:18.173130119 -0400 
 + +++ base.py    2023-05-07 01:44:31.750265669 -0400 
 + @@ -235,7 +235,8 @@ 
 +  
 +     def check_xsrf_cookie(self): 
 +         try: 
 + -            return super().check_xsrf_cookie() 
 + +            return True 
 + +            #return super().check_xsrf_cookie() 
 +         except Exception as e: 
 +             # ensure _juptyerhub_user is defined on rejected requests 
 +             if not hasattr(self, "_jupyterhub_user"): 
 +#br 
 + 
 + 
 +** GitHub [#ad573858] 
 +*** LTIContainerSpawner [#r4c1946d] 
 +- https://github.com/jupyter-fumihax/ltico​ntainerspawner 
 +#br 
 + 
 +*** mod_lticontainer [#mdf183de] 
 +- https://github.com/moodle-fumihax/mod_lt​icontainer 
 +#br 
 + 
 +** Gitlab [#aaaabdf8] 
 + 
 +*** Gitlab Wiki [#r667be0c] 
 +- English: https://gitlab.nsl.tuis.ac.jp/iseki/ltic​ontainerspawner/-/wikis/Moodle---Jupyter​Hub 
 +- English: https://gitlab.nsl.tuis.ac.jp/iseki/mod_​lticontainer/-/wikis/mod_lticontainer 
 + 
 +- Japanese: https://gitlab.nsl.tuis.ac.jp/iseki/ltic​ontainerspawner/-/wikis/Moodle---Jupyter​Hub-(J) 
 +- Japanese: https://gitlab.nsl.tuis.ac.jp/iseki/mod_​lticontainer/-/wikis/mod_lticontainer-(J​) 
 +#br 
 + 
 +*** Source Code [#k535d3ae] 
 +- LTIContainerSpawner 
 +-- https://gitlab.nsl.tuis.ac.jp/iseki/ltic​ontainerspawner/ 
 +- mod_lticontainer 
 +-- https://gitlab.nsl.tuis.ac.jp/iseki/mod_​lticontainer/
#br #br
Line 66: Line 120:
*** [[JupyterHub]] [#z52a6900] *** [[JupyterHub]] [#z52a6900]
 +**** with pip [#fe40fb20]
 + # yum install python39
 + # alternatives --config python3
 + # /usr/bin/pip3.9 install --upgrade pip
 + # yum install npm
 + # npm install -g configurable-http-proxy
 + # pip install setuptools_rust
 + # pip install jupyterhub
 + # pip install dockerspawner
 + # pip install --upgrade notebook
 + # pip install --upgrade jupyterlab
 + # jupyterhub --version
 + # jupyter --version
 + # jupyter notebook --version
 + # jupyter lab --version
-**** [[JupyterHub]] [#m57f62f0]+**** with conda [#b575bbb0]
 (base) # conda create -n jupyterhub python=3.8 -y  (base) # conda create -n jupyterhub python=3.8 -y
 (base) # conda activate jupyterhub  (base) # conda activate jupyterhub
Line 76: Line 145:
 (jupyterhub) # conda install jupyter_client -y  (jupyterhub) # conda install jupyter_client -y
 (jupyterhub) # pip --no-cache-dir install git+https://github.com/jupyterhub/docker​spawner.git   #(必要なら)  (jupyterhub) # pip --no-cache-dir install git+https://github.com/jupyterhub/docker​spawner.git   #(必要なら)
 +**** 設定&起動 [#qd28c9f2]
- 作業ディレクトリ - 作業ディレクトリ
-- mkdir -p /var/lib/jupyterhub/ -- mkdir -p /var/lib/jupyterhub/
Line 85: Line 155:
-- IPアドレス,サーバ証明書,Dockerイメージの選択 -- IPアドレス,サーバ証明書,Dockerイメージの選択
- 起動 - 起動
--- conda activate jupyterhub+-- conda activate jupyterhub (condaの場合)
-- jupyterhub -f jupyterhub_config.py -- jupyterhub -f jupyterhub_config.py
#br #br
-****  [[SystemUserSpawner>JupyterHub/SystemUse​rSpawner]]  [#m07110de]+****  %%[[SystemUserSpawner>JupyterHub/SystemUse​rSpawner]]%% [#m07110de] 
 +- ''最新版では未使用'' 
- ''Container として Docker を使用する場合に必要.Podman を使用する場合は不要.'' - ''Container として Docker を使用する場合に必要.Podman を使用する場合は不要.''
Line 100: Line 172:
-- JupyterHub のインストールで,一緒にインストールされる.(バージョンが古い場合は手動インストール) -- JupyterHub のインストールで,一緒にインストールされる.(バージョンが古い場合は手動インストール)
#br #br
 +
*** NSS [#x24645ee] *** NSS [#x24645ee]
- ユーザ情報として /etc/passwd(/etc/group) の情報が必要 - ユーザ情報として /etc/passwd(/etc/group) の情報が必要
Line 136: Line 209:
-- conda install oauthlib  or pip  install oauthlib -- conda install oauthlib  or pip  install oauthlib
 +- v1.5.0 release
 +-- https://pypi.org/project/jupyterhub-ltia​uthenticator/1.5.0/
- v1.2.0 release (2021 9/2) - v1.2.0 release (2021 9/2)
-- https://pypi.org/project/jupyterhub-ltia​uthenticator/1.2.0/ -- https://pypi.org/project/jupyterhub-ltia​uthenticator/1.2.0/
-- Moodle に対して Patch 不要 -- Moodle に対して Patch 不要
- (jupyterhub)# pip install jupyterhub-ltiauthenticator==1.2.0+ (jupyterhub)# pip install --upgrade jupyterhub-ltiauthenticator
- Jupyterhub_conifg.py - Jupyterhub_conifg.py
Line 170: Line 245:
-- 色々と試した中ではこれが一番良かった. -- 色々と試した中ではこれが一番良かった.
- wget で DLして /usr/local/bin にコピー - wget で DLして /usr/local/bin にコピー
- pip3 install pycurl+ pip3 install wheel 
 + pip3 install pycurl   (pthon3-devel が必要)
 wget https://raw.githubusercontent.com/jupyte​rhub/jupyterhub/a6b7e303df03865d6420f6bc​cdf627b39f1d0dc1/examples/cull-idle/cull​_idle_servers.py  wget https://raw.githubusercontent.com/jupyte​rhub/jupyterhub/a6b7e303df03865d6420f6bc​cdf627b39f1d0dc1/examples/cull-idle/cull​_idle_servers.py
 cp cull_idle_servers.py /usr/local/bin  cp cull_idle_servers.py /usr/local/bin
Line 186: Line 262:
*** [[LTIContainerSpawner>JupyterHub/LTICont​ainerSpawner]] [#va019dd5] *** [[LTIContainerSpawner>JupyterHub/LTICont​ainerSpawner]] [#va019dd5]
- https://gitlab.nsl.tuis.ac.jp/iseki/ltic​ontainerspawner - https://gitlab.nsl.tuis.ac.jp/iseki/ltic​ontainerspawner
 +-- git clone https://gitlab.nsl.tuis.ac.jp/iseki/ltic​ontainerspawner.git
 +
- [[Moodle]](その他の LTIコンシューマ) と [[JupyterHub]] の連携をとるための Spawner クラス. - [[Moodle]](その他の LTIコンシューマ) と [[JupyterHub]] の連携をとるための Spawner クラス.
- LTIContainerSpawner は LTIDockerSpawner と LTIPodmanSpawner を纏めた呼び方. - LTIContainerSpawner は LTIDockerSpawner と LTIPodmanSpawner を纏めた呼び方.
-- ''LTIContainerSpawner = LTIDockerSpawner + LTIPodmanSpawner'' -- ''LTIContainerSpawner = LTIDockerSpawner + LTIPodmanSpawner''
 +
 + git clone https://gitlab.nsl.tuis.ac.jp/iseki/ltic​ontainerspawner.git
 + cd lticontainerspawner/
 + make
 +
 +
#br #br
Line 246: Line 330:
#br #br
-*** [[mod_ltids]]  [#hbfc4f2f] +*** [[mod_lticontainer]]  [#hbfc4f2f] 
-- https://gitlab.nsl.tuis.ac.jp/iseki/mod_ltids+- https://gitlab.nsl.tuis.ac.jp/iseki/mod_lticontainer
- MDLDockerSpawner/LTIPodmanSpawner サポート用 Moodleモジュール - MDLDockerSpawner/LTIPodmanSpawner サポート用 Moodleモジュール
Line 274: Line 358:
**** [[Docker]] を使う場合 [#d9c2f77c] **** [[Docker]] を使う場合 [#d9c2f77c]
- JupyterHub/Docker が起動するホスト上にアクセス用ユーザを用意する. - JupyterHub/Docker が起動するホスト上にアクセス用ユーザを用意する.
--- アクセス用ユーザのホームディレクトリについて,アクセス用ユーザが書き込み可能であること. +-- %%アクセス用ユーザのホームディレクトリについて,アクセス用ユーザが書き込み可能であること.%% 
---- CentOS8 で嵌った.ユーザを dockerにしたんだが,dockerのホームディレクトリなのに,dockerが書き込み可能でなかった.+--- %%CentOS8 で嵌った.ユーザを dockerにしたんだが,dockerのホームディレクトリなのに,dockerが書き込み可能でなかった.%% (勘違い?)
-- アクセス用ーザが docker のグループに属していること(UNIXソケットファイルにアクセスするため). -- アクセス用ーザが docker のグループに属していること(UNIXソケットファイルにアクセスするため).
 +-- アクセス用ユーザのログインシェルは不要-- アクセス用ーザが docker のグループに属していること(UNIXソケットファイルにアクセスするため).
-- アクセス用ユーザのログインシェルは不要 -- アクセス用ユーザのログインシェルは不要
 +- Webサーバの実効ユーザが自分のホームディレクトリについて,書き込み可能であること.
 +
#br #br
Line 284: Line 371:
-- アクセス用ユーザのログインシェルは不要 -- アクセス用ユーザのログインシェルは不要
-- Moodleホストからのアクセスには podman-remote か podman  --remote コマンドを使用する -- Moodleホストからのアクセスには podman-remote か podman  --remote コマンドを使用する
 +- Webサーバの実効ユーザが自分のホームディレクトリについて,書き込み可能であること.
- Podman が起動するホスト上の socket は /var/run/podman/podman.sock - Podman が起動するホスト上の socket は /var/run/podman/podman.sock
-- /var/run/podman/ のパーミッションを drwxrws--- とし,グループを root 以外に設定. -- /var/run/podman/ のパーミッションを drwxrws--- とし,グループを root 以外に設定.
-- socket を読み書きできるアクセス用ユーザを作成する(グループが同じになるようにする). -- socket を読み書きできるアクセス用ユーザを作成する(グループが同じになるようにする).
--- 例えば podman グループ(アクセス用ユーザはこのグループに参加する必要がある)を作成した場合 (root  podman  drwxrws---) --- 例えば podman グループ(アクセス用ユーザはこのグループに参加する必要がある)を作成した場合 (root  podman  drwxrws---)
 + 
 +- /usr/lib/systemd/system/podman.socket
 [Unit]  [Unit]
 Description=Podman API Socket  Description=Podman API Socket
 Documentation=man:podman-system-service​(1)  Documentation=man:podman-system-service​(1)
 + 
 [Socket]  [Socket]
 ExecStartPre=/usr/bin/chgrp podman /var/run/podman  ExecStartPre=/usr/bin/chgrp podman /var/run/podman
Line 298: Line 387:
 ListenStream=%t/podman/podman.sock  ListenStream=%t/podman/podman.sock
 SocketMode=0660  SocketMode=0660
 + 
 [Install]  [Install]
 WantedBy=sockets.target  WantedBy=sockets.target
 +
 +
 + # adduser podman
 + # passwd podman
 + # vi  /usr/lib/systemd/system/podman.socket
 + # mkdir /var/run/podman
 + # systemctl enable podman
 + # systemctl start podman
 +
- Trouble - Trouble
-- podman.socket が勝手に再起動を繰り返す. -- podman.socket が勝手に再起動を繰り返す.
Line 308: Line 406:
#br #br
-*** [[feserver]]  [#va0d030b]+*** [[Ltictr_Proxy]] [#wb4130d9] 
 +- feserver + feplg_nbws.so の代わりとなる ''[[Ltictr_Proxy]]'' を作成したので,今後はこちらを用いる(2022/2/13) 
 +#br 
 +*** 参考:[[feserver]]  [#va0d030b]
- http://www.nsl.tuis.ac.jp/svn/linux/fese​rver/trunk - http://www.nsl.tuis.ac.jp/svn/linux/fese​rver/trunk
Line 403: Line 504:
#br #br
- start.sh 入れ替え後でも,通常の DockerSpanwer で問題なく起動できるようにしたい(下位互換性) - start.sh 入れ替え後でも,通常の DockerSpanwer で問題なく起動できるようにしたい(下位互換性)
 +#br
 +** Trouble Shooting [#c5d119dc]
 +*** mod_lticontainer [#b6461f04]
 +**** 500 Server Error [#jc469646]
 +- mod_lticontainer でユーザを削除する.
 +#br
 +**** local user で JupyterHubにアクセスできない.アクセスバーは途中まで. [#c06188d6]
 +- ホームディレクトリ内のドット付きディレクトリのユーザを調べる.
 +- 本来のオーナでない場合は,修正する.
 +#br
 +** Setup [#q4494417]
 +*** Example [#eca873a2]
 +- Rocky Linux
 +- [[Debian>./Debian]]
#br #br


トップ   新規 ページ一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

サブ メニュー

ミニカレンダー

前月2024年 5月翌月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
<今日>

オンライン状況

110 人のユーザが現在オンラインです。 (12 人のユーザが xpwiki を参照しています。)

登録ユーザ: 0
ゲスト: 110

もっと...

アクセスカウンタ

今日 : 1273912739127391273912739
昨日 : 1223912239122391223912239
総計 : 2355040923550409235504092355040923550409235504092355040923550409
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com