この記事は村松研 Unix チュートリアルのコンテンツです.
サーバーに接続する
ターミナルで次のコマンドを実行し,JupyterLab を実行したいサーバー(リモート環境)に接続します.
ここで <port>
は8000など適当なポート番号です.
ただし,サーバー上で動いている他のアプリケーション(他のユーザーが起動した Jupyter を含む)と被らないような数字を選びます.
ここでは簡単のため,:localhost:
の前後でポート番号は同一とします.
ssh <user>@<domain name or ip address> -L <port>:localhost:<port>
多重 ssh で目的のサーバーへ接続する場合には,踏み台サーバーへ接続する際に上記コマンドを実行し,さらに踏み台サーバー上でもドメイン名のみ変えた同じコマンド(-L
以降も)を実行すればよいです.
鍵の生成
ipythonを実行して
ipython
以下の内容を実行します.
指示に従ってお好きなパスワードを入力し,sha1:
で始まる文字列を取得し,控えておいてください.
from notebook.auth import passwd
passwd()
Ctrl-D の後 Enter を押して,ipython を抜けます.
Jupyter の設定ファイルを編集する
JupyterLab 自体はインストール済みと仮定します.
以下のようにコマンドを実行し,設定ファイルを作成します.
ここでは nano というテキストエディタを用いていますが,このあたりはお好きにどうぞ.
mkdir ~/.jupyter
nano ~/.jupyter/jupyter_notebook_config.py
エディタで以下の内容を記述します.
<your key>
の部分は上で取得した sha1:
以降の文字列で,<port>
は上で決めたポート番号(文字列ではなく数字リテラル)で置き換えて記述してください.
nano エディタでは,Ctrl-O
で記述内容を保存します.
このときファイル名の確認ダイアログが現れ,問題なければエンターキーを押します.
Ctrl-X
でエディタを終了できます.
c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.password = u'sha1:<your key>'
c.NotebookApp.open_browser = False
c.NotebookApp.port = <port>
JupyterLabを起動する
以下のコマンドを実行します.
nohup jupyter lab > ~/.jupyter/jupyter.log 2>&1 &
なお,--port=<port>
のように port オプションを与えて起動することで,設定ファイルに記述したポート番号を上書きして起動することも可能です.
nohup
コマンドは,ssh 接続が切れた際のプロセス終了を防ぐために用いています.
JupyterLabに接続する
お手元のウェブブラウザ(最新のChrome, Firefox, Safariが望ましい)のアドレスバーに以下のURLを入力します.
<port>
はあなたが決めたポート番号です.
パスワード入力を求められたら,鍵の生成時に用いたパスワードを入力します.
JupyterLab の画面に遷移すれば,ipython ノートブックの作成・実行を含む様々な機能を利用できます.
http://localhost:<port>
接続を解除する
作業を中断・終了したい場合は,接続に用いていたターミナルに次のコマンドを入力します.
この後に,ブラウザのタブやターミナルを閉じてしまっても構いません.
exit
再接続する
上で行ったように,nohup
コマンドでバックグラウンド実行したジョブが動き続けている限り,いちいちJupyterLabを立ち上げ直す必要はありません.
再接続に必要な作業は次の二つのみです.
- ターミナルで次のコマンドを実行
ssh <user>@<domain name or ip address> -L <port>:localhost:<port>
- ウェブブラウザで次のURLにアクセス
http://localhost:<port>
ただし,サーバーが再起動した,エラーが発生したなどの原因でJupyterLabが停止してしまっている場合は,JupyterLab の再実行が必要となります.
nohup jupyter lab > ~/.jupyter/jupyter.log 2>&1 &
自分が実行した JupyterLab が動き続けているかどうかは,次のコマンドの結果を見て確認してください.
ps ux | grep "[j]upyter"
出力の中に,自分のアカウント名と共に文字列jupyter-lab
を含む行がある場合は,JupyterLab が動き続けています.
接続がうまくいかないからとプロセスを確認せずに何度もコマンド実行すると,JupyterLab が多重起動してしまいます.
プロセスを殺したい場合には,ps
コマンドで表示されたプロセス番号 <process number>
を元に次のコマンドを実行します.
kill <process number>