リモートサーバにjupyter notebook環境を構築する

pythonを使ってデータ分析する際jupyter notebookがほんとに便利

jupyter.org

普段はローカルPCにたてて色々なことをするが、メモリ容量が足りず落ちることが頻繁に発生したので、aws上のリモートサーバにjupyer notebookのリモートサーバ環境を構築する。

pyenv

jupyterの公式ドキュメントでもただのpythonではなく、色々詰まったcondaを入れたほうが良いとのことで、pyenv・condaのインストールから行う。

# pyenvのインストールとパスを通す
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

# インストール可能なcondaのバージョンを確認
$ pyenv install -l | grep anaconda

# condaのインストール
$ pyenv install   anaconda3-5.3.0

# PATHの参照順序を整理
$ pyenv rehash

# デフォルトでcondaを使うように変更
$ pyenv global anaconda3-5.3.0

# condaコマンドのパスを通す
$ echo 'export PATH="$PYENV_ROOT/versions/anaconda3-3.3.0/bin/:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

# condaのパッケージを最新版に更新
$ conda update conda

# jupyterの起動
$ jupyter notebook

jupyter notebook を実行して正常起動されればjupyterのインストールまで完了!

次は、アクセスする際にパスワードを設定する。

# パスワードのハッシュの作成
$ ipython

In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:9c1eb1db4bf0...'

~/.jupyter/jupyter_notebook_config.py に上記で生成したパスワードを含めた設定ファイルを作成する

c = get_config()

# 全てのIPから接続を許可
c.NotebookApp.ip = '*'
c.NotebookApp.password = u'sha1:9c1eb1db4bf0...'
#ブラウザは立ち上げない
c.NotebookApp.open_browser = False

# 特定のポートに指定(デフォルトは8888)
c.NotebookApp.port = 9999

これで、再度jupyter notebookを起動して、9999番ポートにアクセスしたらめでたしめでたし。