はじめに

先日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を入れてない人は

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

でインストールして

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

と答えてPATHを通して

$ source ~/.bashrc

とすれば使えます。

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

Jupyter Configの作成

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

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

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

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

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

$ python

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

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

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

password.png

Jupyter Configの設定

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

$ cd .jupyter
$ vi jupyter_notebook_config.py

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

# 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を起動します。

$ cd ~
$ jupyter notebook

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

check_firewall_https.png
firewall_rule.png
new_firewall_rule.png
chcek_new_firewall.png

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

Jupyter Notebookに接続する。

external_ip.png

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

access_dinied.png

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

https://35.***.102:8888/
setp_for_access.png
yes_access.png
jupyter_pw.png
now_jupyter_available.png

参照

    Google Cloud Platform で Jupyter のサービスを動かす
bannerAds