80
69

More than 5 years have passed since last update.

Anacondaを利用してCompute Engineのインスタンス上にJupyter Notebookを導入する

Last updated at Posted at 2017-09-28

はじめに

先日GCPのセットアップ時にJupyter Notebookの導入で詰まってしまったのと、参考にしたブログが少し古かったので自分用にこちらに方法をまとめておきます。
既にAnacondaを導入していたので、Dockerを使わずにAnaconda上でJupyter Notebookを動かします。
Docker経由の環境構築はこちらなどを参考にしてみてください。

実行環境

  • n1-standard-1(vCPU x 1、メモリ 3.75 GB)
  • Ubuntu 16.04.3
  • Anaconda 3.4.0

Anacondaを入れてない人は

install_anaconda
$ wget http://repo.continuum.io/archive/Anaconda3-4.0.0-Linux-x86_64.sh
$ bash Anaconda3-4.0.0-Linux-x86_64.sh

でインストールして

install_anaconda
Do you wish the installer to prepend the 
Anaconda3 install location to PATH 
in your /home/haroldsoh/.bashrc ? 
[yes|no][no] >>> yes

と答えてPATHを通して

install_anaconda
$ source ~/.bashrc

とすれば使えます。

実際にJupyter Notebookを導入してみる

Jupyter Configの作成

まずはVMを立ち上げ、Jupyter NotebookのConfigファイルを作ります。

generate_config
$ cd ~
$ jupyter notebook --generate-config
$ cd .jupyter

次にSSL用の鍵を作成します。
実行ディレクトリに生成されるので.jupyterに移動していることを確認してください。

generate_ssh
$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem

実行すると組織名やらメールアドレスやら聞かれるので適当に入力。
公式な署名ではないので、個人利用にとどめましょう。
最後にpythonでログイン用のパスワードのハッシュを作ります。
まずはpythonインタープリターに切り替えます。

into_python
$ python

pythonインタープリターが立ち上がったらハッシュを作成しましょう。

generate_hash
>>> from notebook.auth import passwd; passwd()

設定したいパスワードを尋ねられるので、2回入力するとsha1ハッシュが生成されます。
このパスワードは最後Jupyter Notebookへのログインに使うので忘れないように。
sha1はこと後すぐ使うのでクオート記号(')ごとコピーしておきます。

私は当時pythonコードの実行方法すら知らなかったので、そんな人のために画像も載せておきます。
password.png
こんな感じでpythonインタープリターに入ると白い文字になり、>>>が左端に現れるので、そこでfrom notebook....(以下略)を入力です。

Jupyter Configの設定

次に実際にConfigを設定していきます。
まずはviコマンドでConfigファイルを開きます。

open_config
$ cd .jupyter
$ vi jupyter_notebook_config.py

するとConfigファイルが開くので以下の項目を追加していきます。
viコマンド中はiでインサートモードになり、終了時はescボタンを押した後:wqで「保存して終了」が行えます。
なお、下記のusername自分のアカウント名を入力してください。
(VMを開くと出るhogehoge@instance-1:hogehogeが該当)

edit_config
# OpenSSLで作ったファイルへのパス
c.NotebookApp.certfile = u'/home/username/.jupyter/mycert.pem'
c.NotebookApp.keyfile  = u'/home/username/.jupyter/mykey.key'

# どのIPアドレスからのアクセスも受け入れる
c.NotebookApp.ip = '0.0.0.0'

# passwd()コマンドで作ったパスワードのハッシュを貼る
c.NotebookApp.password = u'sha1:b2e7b90...'

# 勝手にブラウザを起動しない
c.NotebookApp.open_browser = False

# 外部からアクセスするためのポート番号を指定する
c.NotebookApp.port = 8888

最後にJupyter Notebookを起動します。

run_jupyter
$ cd ~
$ jupyter notebook

VMインスタンスのファイアーウォールの設定

Jupyter Notebookを起動したらCompute Engineのコンソールを開きます。
現在Jupyter Notebookを導入しようとしているインスタンスの詳細を開き、ファイアーウォールでHTTPSトラフィックが許可されているか確認します。
許可されていなければ、上部の青字の編集から許可するよう変更してください。
check_firewall_https.png

今確認したファイアーウォールの一つ上、ネットワーク インターフェースのdefaultをクリックし、設定画面に進みます。
ページ遷移後中断まで移動し、ファイアウォールルールを追加します。
firewall_rule.png

設定画面では、以下のように設定します。
・ターゲットタグ https-server
・ソースタグ 0.0.0.0/0
・指定したプロトコルとポート tcp:8888
new_firewall_rule.png

設定後、ファイアーウォールルールに追加されていることを確認しましょう。
chcek_new_firewall.png

以上でコンソール上でのファイアーウォールの設定は終了です。

Jupyter Notebookに接続する。

やっとJupyter Notebookに接続できますね。
ということでコンソールから接続してみましょう。
VMインスタンスのダッシュボードから、先ほどのインスタンスの外部IPをクリックし接続してみましょう。
(この時Jupyter Notebookが起動していない場合は、ssh接続し、$ jupyter notebookで起動してください。)
external_ip.png

やっとJupyter Notebookに接続できましたね。

access_dinied.png

残念ながらアクセスエラーが発生しましたが、大丈夫です。
Jupyterは設定したポート番号(8888)でサービスをしているのに、今開いたブラウザは標準のHTTPSポートにアクセスしているのでエラーが発生しているそうです。
なので、ポート番号を指定して再度アクセスしてみます。

access_jupyter
https://35.***.102:8888/

すると、このような警告が出ると思います。
setp_for_access.png

これはJupyter Configで作成した署名が公式なものではないので、「怪しいサイトかもしれませんよー」とブラウザが教えてくれているそうです。
もちろん怪しいサイトではないので、詳細設定を押してアクセスします。
yes_access.png

すると、パスワードを求められるので、Jupyter Configでsha1ハッシュを作成する際に利用したパスワードを入力してください。
jupyter_pw.png

無事Jupyter Notebookに接続できました。
now_jupyter_available.png

参照

  1. Google Cloud Platform で Jupyter のサービスを動かす
80
69
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
80
69