どこかに向かうらしい話

迷走エンジニアの放浪記

IPython notebookのリモート接続に関する件について

はじめに

IPython notebookは便利っぽい。
なので、CentOSサーバにいれて、みんなでつつけるように出来たらもっと便利だろうと。
デフォルトだとリモート接続できるように設定せにゃあかんいうことで、その設定について備忘録を簡単に残す。

目標

簡単にするため、ログインパスワードを知っている人間がつつければOKってコトにする。
細かい設定を行いたい場合は、以下を参照。

http://jupyter-notebook.readthedocs.org/en/latest/public_server.html

導入前提

  • CentOS7
  • Python3.4
  • pip3で以下が導入済みであること
    • numpy
    • scipy
    • pandas
    • matplotlib
    • scikit-learn
    • IPython notebook

導入

設定

IPythonを起動して、IPython notebookにログインするときのパスワードを設定する。
ハッシュ化されたパスワードが表示されるのでコピーしておく。

# ipython

In [1]: from notebook.auth import passwd

In [2]: passwd()
Enter password:【ログインパスワード】
Verify password:【ログインパスワード】
Out[2]: 'sha1:【ハッシュ化されたログインパスワード】'

IPythonを終了して、jupyter_notebook_config.pyを編集する。

# vi ~/.jupyter/jupyter_notebook_config.py

jupyter_notebook_config.pyの内容は以下の通り。

c = get_config()

# matplotlibで描画したものがnotebook上で表示できるようにする
c.IPKernelApp.pylab = 'inline'
# 全てのIPから接続を許可
c.NotebookApp.ip = '*'
# IPython notebookのログインパスワード
c.NotebookApp.password = 'sha1:【ハッシュ化されたログインパスワード】'
# 起動時にブラウザを起動させるかの設定(デフォルトは起動させる)
c.NotebookApp.open_browser = False
# ポート指定(デフォルトは8888)
c.NotebookApp.port = 【接続ポート】

接続検証

IPython notebookを起動させる。

# ipython notebook

そして、外部の端末のブラウザよりhttp://【リモートサーバ】:【接続ポート】/treeで接続する。
するとパスワードを聞かれるので、【ログインパスワード】を入力して、ログインする。

これで、リモートからIPython notebookを使うことが出来るようになる。

new -> Notebooks Python 3をクリックし、新規ノートブックを開き、以下の通りに入力を進める。

In [1]: pylab inline --no-import-all
        Populating the interactive namespace from numpy and matplotlib
In [2]: x = np.arange(-10, 10, 0.1)
In [3]: y = np.sin(x)
In [4]: plt.plot(x, y)
Out[4]: [<matplotlib.lines.Line2D at 0x7fef3e2e2d68>]

入力したら、以下の画像のようなsin(x)の絵が出力されることを確認する。

f:id:hiroto1979:20160201011812p:plain

コンソールより、Ctrl-Cでサーバをシャットダウンする。

これでたぶん一通りの基本的なものは使えるようになるだろう。