Jupyter notebook鯖をRaspbian(arm)で走らせる

Raspberry pi 3をjupyter notebookサーバにしたい。

[公式はanacondaの使用を強く勧めている](https://jupyter.readthedocs.io/en/latest/install.html "Installing Jupyter Notebook — Jupyter Documentation 4.1.1 alpha documentation")が、arm向けにはanacondaが提供されていない([Miniconda](http://conda.pydata.org/miniconda.html "Miniconda — Conda")は[あるっぽい](http://raspberrypi.stackexchange.com/questions/45663/which-miniconda-version-should-i-use-with-raspberry-pi-3 "python - Which Miniconda version should I use with Raspberry Pi 3? - Raspberry Pi Stack Exchange")けど未確認)。
また便利なセットアップ済み公式dockerイメージとかも見た感じ転がってない。
仕方ないのでシコシコインストールした作業ログ。

# jupyter本体(python2.7の場合)
[Installing Jupyter Notebook — Jupyter Documentation 4.1.1 alpha documentation](https://jupyter.readthedocs.io/en/latest/install.html#id4 "Installing Jupyter Notebook — Jupyter Documentation 4.1.1 alpha documentation")

ただ[pipが古いとjupyterのインストールに失敗する](https://github.com/jupyter/notebook/issues/1224 "Could not find .egg-info directory · Issue #1224 · jupyter/notebook")ので、事前にpipのアップデート。

```bash
$ pip install --upgrade setuptools pip
```

んでもって`pip -V`して`1.5.6`だったのが`8.1.2`あたりに更新されたことを確認して

```bash
$ sudo apt-get install build-essential python-dev
$ sudo pip install jupyter
```
## 便利ライブラリ各位
```bash
$ sudo apt-get install libpng12-dev libjpeg8-dev libfreetype6-dev libxft-dev liblapack-dev libatlas-base-dev gfortran g++
$ sudo pip install numpy pandas matplotlib seaborn scikit-learn --no-cache-dir 
```

`matplotlib`は`--no-cache-dir`付けないとメモリ不足でコケる。

## 鯖コンフィグ
[Running a notebook server — Jupyter Notebook 5.0.0.dev documentation](http://jupyter-notebook.readthedocs.io/en/latest/public_server.html "Running a notebook server — Jupyter Notebook 5.0.0.dev documentation")
~~コメントアウトを外し忘れ、ループバックアドレスでは繋がるのにローカルIPではダメな現象が起こってしばらく悩んだ~~

今回はLAN内専用だしオレオレ証明書を作る方でSSL化。

# iruby
[SciRuby/iruby: Official gem repository: Ruby kernel for Jupyter/IPython Notebook](https://github.com/SciRuby/iruby "SciRuby/iruby: Official gem repository: Ruby kernel for Jupyter/IPython Notebook")

rubyカーネルを動かすには[ZeroMQ](http://zeromq.org/ "Distributed Messaging - zeromq")なるものが必要。

```bash
$ sudo apt-get install libzmq3-dev
$ sudo apt-get install libtool libtool-bin autoconf
$ sudo gem install rbczmq
```

2行めは3行目のビルド道具各位。
[ホントは要らないから直した](https://github.com/zeromq/libzmq/issues/1385 "autogen.sh: error: could not find libtool. libtool is required to run autogen.sh · Issue #1385 · zeromq/libzmq")みたいな話もあるけど今のところないとコケた。

あと`rbczmq`のビルドがなんか気づかないうちにコケてることがあるみたい。
これに引っかかるとrubyカーネルが[こんな感じのログ](https://github.com/SciRuby/iruby/issues/74 "Kernel died: uninitialized constant IRuby::Kernel::Session · Issue #74 · SciRuby/iruby")を吐きながら無限再起動ループに陥る。
再インスコしたら治る。

終わったらようやく

```bash
$ sudo gem install iruby
```

# 自動起動
cronさんに頼んで`@reboot`で起動して頂く。


# その他参考
## 全体
- [The Jupyter notebook — Jupyter Notebook 5.0.0.dev documentation](http://jupyter-notebook.readthedocs.io/en/latest/index.html "The Jupyter notebook — Jupyter Notebook 5.0.0.dev documentation")
- [現代のエンジニアのための強力なメモ帳 Jupyter notebookのすゝめ - クックパッド開発者ブログ](http://techlife.cookpad.com/entry/write-once-share-anywhare "現代のエンジニアのための強力なメモ帳 Jupyter notebookのすゝめ - クックパッド開発者ブログ")
- [Jupyter事始め - Qiita](http://qiita.com/taka4sato/items/2c3397ff34c440044978#jupyter%E3%81%AE%E8%A8%AD%E5%AE%9A "Jupyter事始め - Qiita")
- [Jupyter (iPython) Notebookを使って技術ノート環境を構築する方法 - MyEnigma](http://myenigma.hatenablog.com/entry/2016/02/20/183423#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB "Jupyter (iPython) Notebookを使って技術ノート環境を構築する方法 - MyEnigma")

## 個別
- [make - &quot;autoreconf: not found&quot; error during making qemu-1.4.0 - Ask Ubuntu](http://askubuntu.com/questions/265471/autoreconf-not-found-error-during-making-qemu-1-4-0/490839 "make - &quot;autoreconf: not found&quot; error during making qemu-1.4.0 - Ask Ubuntu")
- [python - What does a &quot;Could not find .egg-info directory in install record&quot; from pip mean? - Stack Overflow](http://stackoverflow.com/questions/26091641/what-does-a-could-not-find-egg-info-directory-in-install-record-from-pip-mean "python - What does a &quot;Could not find .egg-info directory in install record&quot; from pip mean? - Stack Overflow")
- [python - Can't install Scipy through pip - Stack Overflow](http://stackoverflow.com/questions/26575587/cant-install-scipy-through-pip "python - Can't install Scipy through pip - Stack Overflow")
- [CentOSでSciPyのインストールに失敗するときの対処 - Qiita](http://qiita.com/kubor/items/5a86d757e45568a7218d "CentOSでSciPyのインストールに失敗するときの対処 - Qiita")
- [python - Memory error while using pip install Matplotlib - Stack Overflow](http://stackoverflow.com/questions/29466663/memory-error-while-using-pip-install-matplotlib "python - Memory error while using pip install Matplotlib - Stack Overflow")