/etc/jupyter/nbgrader_config.py
c = get_config()
c.NbGrader.logfile = "/var/log/nbgrader.log"
c.Exchange.root = '/home/share/nbgrader/exchange'
c.Exchange.timestamp_format = '%Y-%m-%d %H:%M:%S %Z'
c.Exchange.timezone = 'JST'
注)
c.Exchange.timestamp_format'
はデフォルトでは秒が小数になるが,経過時間等の処理の時に困ることがあるので小数部は切り捨て。c.Exchange.timezone = 'JST'
の設定がなぜか有効にならない。。。~/.jupyter/nbgrader_config.py
c = get_config()
c.CourseDirectory.root = '/home/<username>/<course_name>' # 適宜変更する
c.NbGrader.logfile = '/home/<username>/log/nbgrader.log'
~/home/<username>/<course_name>/nbgrader_config.py
nbgrader quickstart <course_name>
で出力されるものをそのまま使っている。まずは,上記の1コースの設定を一通り理解していることが必要。 多コースに拡張するための設定の概要は以下の通り。
/etc/nbgrader_config.py
に各コース用ホームディレクトリ(担当教員のホーム’/home//`等)を指定。
各コース用ホームディレクトリに~/.jupyter/nbgrader_conf.py
を置いて,課題用ルートフォルダ(’/home//<course_name>’)を指定
/etc/nbgrader_config.py
もしくは,学生の~/.jupyter/nbgrader_config.py
に以下を追記
from nbgrader.auth JupyterHubAuthPlugin
c = get_config()
c.Exchange.path_includes_course = True
c.Authenticator.plugin_class = JupyterHubAuthPlugin
/home/<username>/<course_name>/nbgrader_config.py
を準備(1コースの場合と同じ)各コースに対するユーザ登録(whitelist作成)も可能。ただし,jupyterhubの再起動が必要。
[問題点]
jupyterhubとjupyter notebookが同じサーバ上にあると,jupyterhubの再起動時にログインユーザが追い出されてしまい,再ログインが必要になる。
[解決法その1]
proxyサーバを介したアクセスとし,以下の設定をしておく。
Proxy.should_start=False
JupyterHub.cleanup_servers=False
[解決法その2]
jupyterhubとjupyter notebookは別のサーバ(コンテナ)で起動する。
受講生がjupyterにログインした時に,git pullを簡単に実行させるためのjupyter plugin.
jupyterhubにログインしたままコマンド実行がないプロセスは止めるための設定。/etc/jupyterhub/jupyterhub.conf
に以下を追記しておく。
# cull_idle
c.JupyterHub.services = [
{
'name': 'cull_idle',
'admin': True,
# 'command': ['/home/adm/jupyterhub/cull_idle_servers.py'],
'command': '/usr/local/anaconda3/bin/python3 <write path here>/cull_idle_servers.py --timeout=7200'.split(),
}
]
実行コマンドcull_idle_servers.pyを,上記で指定するパスにおいておく。