【JupyterHub】JupyterHubを複数ユーザーで使用するための環境構築方法
JupyterHub
こんにちは
今日はJupyter notebook/lab をグループ開発で使うためのJupyterHubを複数ユーザーで使えるようにするための設定方法についてまとめます。
最終ゴールは
- 複数ユーザーでログイン
- 各ユーザーが自由に仮想環境を作成することができる
- 各ユーザーが作成した仮想環境を共有できる
とういところを目指して設定方法を説明していきます。
大まかに流れを説明すると
- Jupyter Hubへログインするユーザーの作成
- Anacondaを特定のユーザーグループが使えるようにインストール
- JupyterHubのインストールと設定
- Anaconda仮想環境の作成とJupyterのkernelへ追加
といった流れになります。
おまけでJupyter Labを使用する際に便利な拡張機能を紹介します。
導入環境
- Ubuntu 16.04
- Anaconda(4.6.12)
目次
1. Jupyter Hubへログインするユーザーの作成
ユーザーの作成
Jupyter Hubにおけるユーザー認証の方法は様々に用意されていますが、今回はデフォルトの認証方法を利用していきます。
デフォルトではUbuntuのシステムユーザーおよびそのパスワードを用いて認証を行うため、Ubuntuシステムへユーザーを作成します。
# rootとしてログイン # 以降はrootユーザーとして操作 sudo su - # ユーザーを追加 adduser myuser
ユーザーグループへの追加
後ほどインストールするAnacondaを使えるようにするユーザーグループを作成します。
# ユーザーグループの作成 groupadd jupyterhub # ユーザーグループへの追加 gpasswd -a myuser jupyterhub
2. Anacondaを特定のユーザーグループが使えるようにインストール
複数のユーザーが同一のAnaconda環境を使用できるようにインストールしていきます。
Anacondaインストール
まずはAnacondaのインストールの準備を行います。
# Anacondaのダウンロード wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh # インストール bash Anaconda3-2019.03-Linux-x86_64.sh
ここで注意点が一つ。
インストールするフォルダを/opt/anaconda3/など全ユーザーがアクセスできる場所にします。
デフォルトではrootユーザーでインストールした場合、/root/以下に保存されますが、それではその後に各ユーザーがアクセスできなくなってしまいます。
Anacondaインストールフォルダの所有者権限を変更
このままではAnacondaがroot所有のため他のユーザーが使えないままです。
そのため公式を参考にグループ所有者を変更していきます。
chgrp -R jupyterhub /opt/anaconda3 chmod 770 -R /opt/anaconda3
これで各ユーザーが同一Anaconda環境を使えるようになりました。
3. JupyterHubのインストールと設定
JupyterHubのインストールは簡単です。
conda install -c conda-forge jupyterhub
JupyterHubの設定をするためのconfigファイルを生成します。
# デフォルトではカレントディレクトリにconfigファイルが生成されるためカレントディレクトリを変更 cd /opt/anaconda3 jupyterhub --generate-config
JupyterHub上でJupyterLabを使用するためにjupyterhub_config.pyの以下の部分を変更します。
c.Spawner.default_url = '/lab'
これでデフォルトでJupyterLabを使えるようになります。
以上がJupyterHubのインストールになります。
4. Anaconda仮想環境の作成とJupyterのkernelへ追加
JupyerHubへのログイン
まずJupyerHubを起動します。
jupyterhub
デフォルトではport番号が8000になっているのでhttp://ip_adress:8000にアクセスします。
するとログイン画面が表示されるので先ほどjupyterhubグループに登録したmyuserでログインします。
Anaconda仮想環境の作成
JupyterHubにログインするとJupyterLabの画面に遷移するので、Terminalを起動します。
まず最初にconda initを実行します。
# conda activateを実行できるようにするため conda init
conda initによる変更を適用するためにTerminalを起動し直します(New Launcher ⇨ Terminal)。
ここから仮想環境を作成していきます。
conda create -n env_name ipython ipykernel
これで「env_name」の仮想環境が作成されました。
ここでipython, ipykernelを同時にインストールしておきます。これは後ほど作成した仮想環境をipythonのカーネルとして追加するのに必要となるためです。
作成されたかは以下のコマンドで確認できます。
conda info -e
JupyterLab kernelへ仮想環境を追加
先ほど作成した仮想環境をJupyterLab上でも使えるようにkernelとして登録します。
# 仮想環境のアクティベート conda activate env_name # kernelへ追加 ipython kernel install --user --name=env_name
これでkernelへの追加が完了しました。
変更を適用するためにブラウザをリロードしましょう。
するとLauncherのkernelにenv_nameが追加されているはずです!!
仮想環境を共有するための変更
こうして作成した仮想環境に各自必要なパッケージをインストールしていくわけですが、インストールされたパッケージはインストールしたユーザーが所有者となっているため、他の人がアクセスできない(パッケージとして認識されない)状態になっています。
そこで他の人も共有できるようにインストールしたパッケージのグループ所有者を変更します。
chgrp -R jupyterhub /opt/anaconda3 # root所有の部分はエラーがでるが、インストールしたパッケージのグループ所有者は変更されるので無視する(これで大丈夫かは不明)
以上がJupyterHub環境構築方法です。
新たにユーザーを追加したい場合はユーザーを作成しjupyterhubグループに追加するだけです。
JupyterLab Hub-extensionの有効化
JupyterLabをJupyterHubのnotebookとして使用するとそのままではLogoutおよびQuitのコマンドが消えてしまうため不便になってしまいます。
そこでHub-extensionを有効にすることでコントロールパネルを開けるようにすることができます!
Hub-extensionのインストールと有効化
jupyter labextension install @jupyterlab/hub-extension
上記コマンドでインストールは完了しますが、このままでは以下の図のようなコマンドが表示される訳ではありません。
有効化するためにjupyterhub_config.py
の以下の部分を修正します。
c.Spawner.cmd = ['jupyter-labhub']
これで上の図のように「Hub」からLogoutを選択できるようになります。
まとめ
グループ開発にもJupyterを活用して便利さを享受しましょう!!