python

[conda] JupyterHub/Lab のセットアップ [Ubuntu]

投稿日:

機械学習用サーバーに JupyterHub を設定するためのメモ。

 

 

JupyterHub とは?

Jupyter Notebook は python などをブラウザ上で開発、実行でき、
その出力を notebook という形で残すことができる統合開発環境です。
JupyterLab は、Notebook の後継で、更なるその進化系ともいうべきもので、
今後開発はこちらにシフトしていくと思われます。

Jupyter Notebook/Lab はいずれもユーザー毎にセッションを開いて、
知っている人がそこにアクセスするというイメージでした。
認証はできますが、システムの認証とは異なり jupyter 用のパスフレーズ, トークンなどによる認証です。
また、生成したファイルも全てセッションを開いたユーザーの権限でしか読み書きできません。
元々が自分のデスクトップ機上で稼働するようなイメージから始まったのかもしれませんが、
上記の仕様なので、サーバーのようにして複数人で開発しようとすると色々問題が出てきます。

JupyterHub はサーバー化する際に有用で、
稼働しているシステムのローカル、或いは NIS, ldap などの認証を用いてログインでき、
それぞれのユーザーの権限で、動作・読み書きが行えます。
なので、開発サーバー機のような用途には JupyterHub が最適です。

Google Adsense



設定目標

  • 環境は Ubuntu Server 20.04
  • JupyterHub は notebook/lab いずれとも連携できるが、今回は JupyterLab を呼び出すようにする。
  • PyROOT も使えるようにする
  • ポート8000ではなく標準のポート80でアクセスさせる。
    その際、他のサービスと干渉しないようにサブディレクトリから転送させる。
  • JupyterLab のデフォルトのディレクトリは ~/jupyter にする。

 

Python/Conda

前述したように Anaconda が色々アレなので python 環境は、conda + conda-forge にする。
今回は Miniforge (link)を用いる。

インストール手順は anaconda と同じなので割愛。
PyROOT を python v3.8系を参照して作成したので、
Miniforge も python v3.8系の最終版をインストールした。
 

JupyterHub のセットアップ

まずインストール。
$ conda install jupyterhub jupyterlab

次に設定(以下 root で)。

Google Adsense




ひとまずこれで起動、アクセスできるようになる。
 

notebook 設定

ログイン先のユーザー側の設定。

また、jupyterhub 側の設定で notebook_dir を指定している場合は、
対応するディレクトリを作っておかないと、singleuserサービス起動に失敗する。
$ mkdir ~/jupyter
 

サブディレクトリアクセスからの転送

nginx で reverse-proxy してやる。
適切に設定しないと websocket の転送ができずうまく動作しない。
web で見つけた記事(出典失念)をベースに適当に設定した。

Google Adsense



自動起動

systemd でシステム起動時に自動で起動するようにする。

 

Google Adsense

Google Adsense

-python
-, , , , , ,

Copyright© HEPtech, 2024 All Rights Reserved.