ここではリモートサーバ上(Cent OS)でJupyter NoteBookを立ち上げ、ローカル環境のWebブラウザからアクセスして使用する方法を記載します。

1.Jupyterのインストールと設定

ここではJupyterのインストールとリモート接続するための初期設定を行います。

いつも通り何かしらの手段(anacondaやpyenv等)で仮想環境を構築後、以下のコマンドでjupyterをインストールします。

pip install jupyter

その後、以下のコマンドを入力しconfigファイルを作成するとホームディレクトリ以下に~/.jupyter/jupyter_notebook_config.pyが作成されます。

jupyter notebook --generate-config

このファイルの各々の該当行のコメントアウトを外し以下のように編集します。なお、port=58888は任意の番号で構いません。以降、こちらの番号で一貫して設定を行っていきます。それ以外はコメントアウトされたままで大丈夫です。

c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 58888

設定が終わったら、以下のコマンドでjupyter notebookを立ち上げておきましよう。下部にNotebookアクセス用のURLが出てくるはずです。

    To access the notebook, open this file in a browser:
        file:///mnt/data1/furukawa/.local/share/jupyter/runtime/nbserver-42980-open.html
    Or copy and paste one of these URLs:
        http://cosmos:58888/?token=528e6ae613ce32560a41602b9989bea493207eef38d2393c
     or http://127.0.0.1:58888/?token=528e6ae613ce32560a41602b9989bea493207eef38d2393c

2.Jupyter NoteBookを公開するためのリモートサーバのポートの開放

リモートサーバ上で立ち上げたJupyter NoteBookにアクセスするために必要なポートの開放を行います。尚、OSによってこの方法は異なるため、各々に合わせた設定が必要になります。

ここでは、/etc/sysconfig/iptablesにポート開放のための文を追記することにより実現します。sudo vi /etc/sysconfig/iptables等で編集可能な上でファイルを開き、以下の文を追記します。

-A INPUT -p tcp --dport 58888 -j ACCEPT

次に、以下を実行し編集を反映させます。

service iptables restart

最後に以下のコマンドで58888のポートが解放されたかを確認して完了です。jupyter notebookが立ち上がっており、かつポートが解放されていれば、以下のようになっているはずです。

# lsof -i -P
~
jupyter-n 42023  user    5u  IPv4 49594839      0t0  TCP *:58888 (LISTEN)
jupyter-n 42023  user    6u  IPv6 49594840      0t0  TCP *:58888 (LISTEN)
~

3.リモートサーバで立ち上げたJupyterにローカル環境のブラウザから接続

リモートサーバ側でnotebookを立ち上げた後、URLをコピペしてブラウザに張り付ければアクセスできます。

ここで幾つかの想定されるエラーがあり、私も遭遇しました。

想定されるエラー1

DNS_PROBE_FINISHED_NXDOMAINがブラウザ上で出るエラーです。これはURLをリモートサーバのホスト名で指定してアクセスした際に起こるものでDNSサーバが名前解決出来ていないことによって起きています。DNSサーバに接続できているかを見直すか、直接IPアドレスを指定してURLを指定すると回避できます。

image.png

想定されるエラー2

エラー1を直したところ、今度はERR_CONNECTION_REFUSEDのエラーが出ました。何かしらが原因でアクセスが拒否されています。

image.png

キャッシュ周りが原因でエラーが起こっているのですが、詳細な原因は不明なままでした。対策方法としては、ここのさいとにあるように、以下をブラウザのURL欄に貼り付け、キャッシュの削除を行います。

chrome://settings/clearBrowserData
image.png

接続完了

無事接続できました。

image.png
bannerAds