はじめに
先日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はこと後すぐ使うのでクオート記号(’)ごとコピーしておきます。

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インスタンスのファイアーウォールの設定




以上でコンソール上でのファイアーウォールの設定は終了です。
Jupyter Notebookに接続する。

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

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




参照
- Google Cloud Platform で Jupyter のサービスを動かす