LoginSignup
36
42

More than 5 years have passed since last update.

<Python> Jupyter Notebook データ分析専用サーバーを構築する

Posted at

TL;DR

リモートサーバー(Cent OS 6.8)をJupyter Notebook専用サーバーにしたときのステップを再現してみました。チームで分析専用サーバーとして使え、便利です。

環境

  • Cent OS 6.8
  • Anaconda (Python 3.5.1)
  • Jupyter Notebook (4.1.0)
  • Pyenv (20160509-74-ge93ae00)
  • Nginx (nginx/1.10.1)

Test.png

1. Pyenvをインストール

複数のPythonバージョンを簡単にスイッチングできるようにPyenvをインストールする。

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

pyenv -vでバージョンが表示されたらOK

pyenv 20160509-74-ge93ae00

2. PyenvでAnacondaをインストール

Anacondaは、データ分析系分析ライブラリがたくさん詰まっているディストリビューション。Jupyterもこの中に入ってる。

pyenv update
pyenv install -l // anacondaの最新版を確認
pyenv install anaconda3-4.1.0 // 最新版インストール
pyenv global anaconda3-4.1.0 // デフォルトのPythonがanacondaに切り替わる

ややインストールに時間がかかるが、jupyter --versionでバージョンが表示されたらOK

4.1.0

3. Nginxをインストール

1つのIPを複数のサービスで使うことも考えて、Nginxを使う。

まずは最新Nginxを取得できるようにrepoを登録

/etc/yum.repos.d/nginx.repo
 [nginx]
 name=nginx repo
 baseurl=http://nginx.org/packages/centos/6/$basearch/
 gpgcheck=0
 enabled=1

yumを最新にし、Nginxをインストール

sudo yum update
sudo yum install nginx

nginx -vでバージョンが表示されたらOK

nginx version: nginx/1.10.1

NginxのJupyter専用設定ファイルjupyter.confを作成する前にincludeしておく

/etc/nginx/nginx.conf
http {
  include /etc/nginx/conf.d/jupyter.conf;
}

jupyter.confを作成。9999をListen。

/etc/nginx/conf.d/jupyter.conf
location / {
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header Origin "";
  proxy_pass http://127.0.0.1:9999;
}

Nginx起動

sudo service nginx start

4. Jupyter 設定

Jupyterの設定ファイルを作成する

jupyter notebook --generate-config

jupyter notebookコマンドはデフォルトでブラウザが起動する。
起動しないようにしつつ、Notebookが使うデフォルトポートを9999に設定する。

jupyter/jupyter_notebook_config.py
c.NotebookApp.open_browser = False
c.NotebookApp.port = 9999 

5. いよいよJupyter起動!

入力するのは、これだけ!

jupyter notebook

サーバーのIPにアクセスして、下の画面が出たら起動完了。コマンドを打ったディレクトリのファイル、ディレクトリが表示される。

早速、"New"を押して新規ファイルを作成してみる

Home.png

Notebookという名前の通り、試し書き的にコードを書け、1行 = 1つのコードの集まりといった感じで、1行ずつ実行できる。
自分の場合、1行目で必要なライブラリをすべてimportして、autocompleteが効くようにしている。

Test.png

5. Jupyterサーバーに簡単ssh接続

サーバーのポートやユーザーを設定後に、クライアント側でいちいち長いsshコマンドを入力して、リモートと接続するのは面倒なので、ssh jupyterで接続できるようにしておく。

~/.ssh/config
Host jupyter
    HostName        IP_ADDRESS
    Port            SSH_PORT
    IdentityFile    SECRET_KEY
    User            USERNAME
36
42
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
42