2022年10月21日金曜日

Jupyter Notebookをリモートから使う方法(2022年改訂版)

 Jupyter Notebook(以下,Jupyter NB)は,本体がバックエンドで動いており,Webブラウザからアクセスして使う.ならばその本体に他のコンピュータからアクセスして使えるはずだ.とはいえ基本的にはローカル内で完結して利用することが前提となっているので,設定をいじる必要がある……ということで,そのやり方のメモ

サーバ側の設定(事前準備:anyenvのインストール)

対象とするサーバは,さくらインターネットでお借りしたVPSのUbuntuサーバである.ポートは9999番を使うので,ダッシュボードの「パケットフィルタ設定」で9999番は開けておくこと.

リモートログインした端末で,次の手順を行う(「$」の部分はプロンプトなので入力しない).

uname -a

Linux ids 5.15.0-52-generic #58-Ubuntu SMP Thu Oct 13 08:03:55 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

まず,anyenvの設定をする.

git clone https://github.com/anyenv/anyenv ~/.anyenv

(略)
echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc

echo 'eval "$(anyenv init -)"' >> ~/.bashrc

exec $SHELL -l

(略)

anyenv install --init

これで,anyenvがインストールされる.次の手順で,anyenvのバージョンを確認しておこう.

anyenv --version

anyenv 1.1.5-1-g5c58783


サーバ側の設定(事前準備:pyenvとpythonのインストール)

次に,pyenvをインストールして,最新版のpythonをインストールしよう.まずは,pyenvをインストールする.以下では,コマンドの出力は必要がある場合以外は省略する.さらに,[y/n]などでyes or noを尋ねられたときは,基本的にyを入力すればよい.

$ anyenv install pyenv

$ exec $SHELL -l

これで,pyenvがインストールされる.同様に,動作確認を兼ねてバージョンを確認しておこう.

pyenv --version

pyenv 2.3.5-2-g03a5d653

さて,次はpythonのインストールである.2022年10月20日の時点で安定版の最新版は3.10.8なので,それをインストールする.が,いろいろとライブラリなどを事前にインストールしておかないとpythonのインストールがうまくいかないので,以下のとおり,必要なライブラリをインストールしておこう.

$ sudo apt install build-essential

$ sudo apt install libbz2-dev libncurses-dev libffi-dev \

                   libssl-dev sqlite3 libsqlite3-dev liblzma-dev

これだけインストールしておけばOKのはず.そのうえで,pythonをインストールする.

$ pyenv install 3.10.8

pyenv local 3.10.8

とりあえずこの作業ディレクトリ以下(ローカル)で使えるようにしておこう.

サーバ側の設定(jupyterの設定と起動)

さて,ここまでお膳立てが整ったら,あとはjupyterの設定をするだけである.まず,インストールから行う.

$ pip install jupyter

簡単にインストールできるだろう.

$ jupyter-notebook --generate-config

これで,設定ファイルが作成される.

ホームディレクトリに.jupyter/jupyter_notebook_config.pyが作成されるはず.

続いて,ipythonを立ち上げる.次の手順でパスワードを設定する(In [*]: はipythonのプロンプトなのでコピペしないこと).Enter password: と Verify password: では好きなパスワードを入力する.エコーバックされないのでパスワードを間違えないように入力すること.また,ここで表示される'sha1:……'は,入力したパスワードに対するハッシュ値なのでこの値を正確にどこかにコピーしておく(あるいは,この端末を開きっぱなしにしておくこと).ここで入力するパスワードは,リモートから接続する際に利用するので忘れないこと.

$ ipython

Python 3.10.8 (main, Oct 19 2022, 17:28:48) [GCC 11.2.0]

Type 'copyright', 'credits' or 'license' for more information

IPython 8.5.0 -- An enhanced Interactive Python. Type '?' for help.


In [1]: from notebook.auth import passwd


In [2]: passwd()

Enter password: 

Verify password: 

Out[2]: 'sha1:******************** ... ***'


In [3]: exit

.jupyter/jupyter_notebook_config.pyファイルの末尾に以下を追記する.

c.IPKernelApp.pylab = 'inline'

c.NotebookApp.ip = '0.0.0.0'

c.NotebookApp.open_browser = False

c.NotebookApp.port = 9999

c.NotebookApp.password = u'sha1:******************** ... ***'

ここで,最後の行は先ほどのハッシュ値をコピペする.以上で準備は終わり.

リモートからの接続

サーバの端末に戻り,Jupyter NBを起動する.

$ jupyter-notebook

手元のマシンからWebブラウザで接続する.ポート番号を9999に変更したので,http://サーバ名:9999/としてアクセスすること.

パスワード画面が現れるので,先ほど設定したパスワードを入れてログインする.

フォルダを辿っていくと,作業用ディレクトリにアクセスできる

0 件のコメント:

コメントを投稿