CentOS6.6(64bit)にJupyterHubをインストールする
の続き。
jupyter/jupyterhub · GitHubに従ってJupyterHubをインストールする。
1. npmのインストール
JupyterHubの仕組み仕組みが分かっていないがnode.jsが必要なので以下のコマンドでインストールする。
$ sudo yum install npm $ sudo npm install -g configurable-http-proxy
2. JupyterHubのインストール
続いて以下のコマンドでJupyterHubをインストール
$ sudo pip3 install jupyterhub $ sudo pip3 install "ipython[notebook]"
この時点でjupyterhub
と実行するとhttp://ホスト名:8000でJupyterHubにアクセスできるようになる。
3. JupyterHub起動ユーザの作成
Using sudo to run JupyterHub without root privileges · jupyter/jupyterhub Wiki · GitHubに従って特権ユーザーを作成する。
以下のコマンドでshadowグループとログインシェル・ホームディレクトリなしのユーザーjupyterを作成する。
$ sudo group add shadow $ sudo useradd -s /sbin/nologin -M -g shadow jupyter
以下のコマンドで/etc/shadowのグループとパーミッションを変更する。
$ sudo chgrp shadow /etc/shadow $ sudo chmod g+r /etc/shadow
sudospawnerとやらが必要なので以下のコマンドでインストールする。
$ sudo pip install git+https://github.com/jupyter/sudospawner
上記で作成したjupyterユーザがパスワードなしでsudo sudospanwerを実行できるよう/etc/sudoersを編集する。
sudospawnerのパスは自分の環境にあわせて変更している。
$ sudo visudo
4. JupyterHubの設定
以下のコマンドを実行して設定ファイルを生成する。
$ sudo mkdir /etc/jupyterhub $ sudo chown jupyter /etc/jupyterhub $ cd /etc/jupyterhub $ sudo -u jupyter jupyterhub --generate-config Writing default config to: jupyterhub_config.py
ポートの変更、SSLの設定のため以下を修正する。
$ sudo -u jupyter vi jupyterhub_config.py
GitHubアカウントでOAuth認証などもできるようだけど今回はLinuxのPAM認証のままにしておく。
5. JupyterHubの起動
以下のコマンドを実行してJupyterHubを起動する。
$ sudo -u jupyter jupyterhub --JupyterHub.spawner_class=sudospawner.SudoSpawner
https://ホスト名:ポート/jupyter/にアクセスするとログイン画面が表示される。
(Nginxのリバースプロキシでポート番号をリライトしたけどリダイレクト大量発生でうまくいかなかった。。。)
今回PAMで認証しているのでID/パスワードはCentOS上のものと同じ。
whitelistに登録しているユーザーでログインに成功するとトップ画面に遷移。
今回は設定ファイルでログイン後のディレクトリを~/notebooksに指定しているので予め作成しておかないとリフレッシュが永遠に続くので注意。
notebookは右のNewから起動
無事にnotebookが起動できた!
これでchainerの学習が捗る!と思ったけど、よく考えたら自分ぼっちなのでマルチユーザー用のJupyter notebookなんて必要なかった。
またPythonにはvirtualenvでプロジェクト毎にパッケージのバージョンを管理する仕組みがあるけどJupyterHubだとその恩恵が受けられなさそう。
結局普通にjupyter notebook serverかな。。。