リモートサーバーで起動したJupyterNotebookにローカルブラウザから接続する環境構築について

ちょっと作業環境的なお話。

私はいつもデータのクレンジングや分析、可視化はレンタルサーバー(CentOS)上でやっていて、rbenvだったり、pyenvだったり、Rはコンソールから普通に使ったり、R-studio-serverでブラウザから使ったりしています。

Python分析者がよく扱うNumpyやMatplotlibなどの数値解析ライブラリも、手動でインストールして使っていたのですが、結構、周りの分析者やエンジニアは、Anaconda+JupyterNotebookの環境で作業をしていることが多いです。(というか私も会社PCのWindowsでは、Anaconda+JupyterNotebookを使いますが)

で、レンタルサーバーではpyenvを中心にPythonのバージョン管理をしていますが、pyenvからAnacondaを導入して、JupyterNotebookをサーバー起動して他端末のブラウザから分析できるようにしてみようということで、設定をしてみました。

設定方法

CentOSでpyenvが導入されていて、すでにPythonのバージョン管理を行っている状態とします。

下記コマンドでpyenvからAnacondaをインストールして、Anacondaを使用するディレクトリを作成します。(グローバルでも問題ないならばグローバルでもOK)

この状態で、JupyterNotebookを実行すると、テキストベースのブラウザが立ち上がって、何だかよくわからない状態になります。(実行しても、終了コマンド[Q]で閉じることは可能です)

下記コマンドで、JupyterNotebookのconfigファイルを生成します。

このファイルを下記のように編集します。

以上の編集を終えて保存すれば、http://<サーバーのIPアドレス>:9999でJupyterNotebookに接続できます。

ちなみによくグラフをプロットとかしたくなりますが、画像はその場でプロットは出来ないため、下記コードのように画像保存して閲覧する形になるようです。

ちょっとここは不便…

パスワードの設定

また、この状態ですとIPとポート番号が分かれば、誰でも接続可能です。

普通にポート番号などで制限をかける方法もありますが、JupyterNotebook自体にも、パスワードを設定することができます。

パスワードを設定するには、まずiPythonコンソールで、パスワードを作成する必要があります。

下記のようにしてiPythonコンソールを起動して、パスワードを作成します。

そして、先ほどのconfigファイルを下記部分を編集してコピーしたパスワードを貼り付けます。

保存して、http://<サーバーのIPアドレス>:9999にアクセスすると、パスワード入力のログイン形式になっていることが確認できます。

これでリモートサーバーでJupyterNotebookを起動して、ローカルブラウザからアクセスして分析できるようになりました。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です