Deep Karmaning

技術系の話から日常のことまで色々と書きます

Google Compute EngineにJupyterをインストールしてブラウザからアクセスできるようにする

概要

前回構築したGCPのデータ分析環境にJupyter等を入れてブラウザでアクセス出来るようにし、分析を実行できる環境を構築する方法のメモです。

rf00.hatenablog.com

Anacondaのインストールと、ファイヤーウォールの設定のみで簡単に可能です。

 

Anacondaのインストール

まずはインストールする対象のインスタンスSSHで接続します。

今回は画像の用にCompute Engie>VMインスタンスの画面から「SSH」をクリックしブラウザからアクセスします。

f:id:rf00:20180101151432p:plain

ダウンロード用のフォルダを作って、そこにanacondaのインストール用ファイルをダウンロードします。

mkdir downloads
cd downloads

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

これらを実行するとLicenseの確認画面が出るので、ひたすらEnterを押します。

Do you approve the license terms? [yes|no]と出てきたらyesと打ち込んでEnterです。

次に、

Anaconda3 will now be installed into this location:
/home/sonics_jr/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

と表示されたら、特に変更の必要がなければEnterです。

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

これも問題なければyesと打ち込みます。

最後にsource ~/.bashrcbashを読み込み直して終了です。

 

emacsのインストール

テキストエディタで設定ファイルを開いて編集 する必要があるのでインストールします。

ここではemacsを使いますので、インストールしていない場合は以下のコマンドを実行。

sudo apt-get install emacs

 

jupyterの設定

次にjupyterの設定を行います。 まずは設定ファイルの有無を確認。

ls ~/.jupyter/jupyter_notebook_config.py

以下が表示された場合は、

ls: cannot access '/home/sonics_jr/.jupyter/jupyter_notebook_config.py': No such file or directory

 

jupyter notebook --generate-config

で設定ファイルを作成しましょう。

Writing default config to: /home/sonics_jr/.jupyter/jupyter_notebook_config.py

と表示されたら成功です。

そしてSSL用の鍵を作ります。

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

適切な情報を入れてEnterを押していきます(Country NameにJPを入れてあとは空欄でEnterで行けました)。

次にpythonを起動して、python上でパスワードのハッシュを作ります。

以下コマンドを実行し、利用したいパスワードを二回入力し、結果をコピーして控えておきます。

from notebook.auth import passwd; passwd()

emacsで設定ファイルを開き、

emacs .jupyter/jupyter_notebook_config.py

以下を書き込みます。

#------------------------------------------------------------------------------                                    
# Configurable configuration                                                                                       
#------------------------------------------------------------------------------  
c = get_config()
c.NotebookApp.certfile = u'/home/<username>/.jupyter/mycert.pem'
c.NotebookApp.keyfile  = u'/home/<username>/.jupyter/mykey.key'
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = u'作成したハッシュ'

以上でjupyterの設定は完了です。

 

ファイヤーウォールの設定

次にファイヤーウォールの設定を行います。

VPCネットワーク>ファイヤーウォールルールを選択します。

f:id:rf00:20180101155058p:plain

そしてファイヤーウォールルールを作成をクリック。

f:id:rf00:20180101155249p:plain

以下のように入力します。

f:id:rf00:20180101155513p:plain

名前は任意で構いません。

ターゲットタグで指定したタグがついているネットワーク設定に適用されるので、この後でネットワークタグの設定を行います。

ソースIPの範囲は「0.0.0.0/0」を設定すると全てのIPを許可します。

ポートは、jupyterの設定ファイルに書き込んだものと同じものを設定します。

以上でファイヤーウォールルールの設定は終わりです。

 

インスタンス側のネットワークタグの設定

Compute>VMインスタンスをクリックし、ファイヤーウォールの設定を適用したいインスタンスをクリックし編集ボタンを押します。

f:id:rf00:20180101160024p:plain

ページ中部の「ネットワークタグ」の欄に「jupyter」と入力して完了です。

f:id:rf00:20180101160156p:plain

 

jupyterを起動してアクセス

再度SSH接続を行い、

jupyter notebook

と打ち込みjupyterを起動します。

ブラウザのURL欄にhttps://<ip>:8888と入力すると、警告画面が出ますが、 個人利用のため無視してアクセスします。

f:id:rf00:20180101160551p:plain

以下の画面が出たら、先ほどハッシュ化したパスワードを入力してアクセスします。

f:id:rf00:20180101160638p:plain

 

まとめ

今回はデータ分析用仮想環境にjupyterをインストールして、ブラウザでアクセスする方法を説明しました。

難しくはないのですが手順は多く大変でした。

 

参考ページ

Running Jupyter Notebook on Google Cloud Platform in 15 min

Google Cloud Platform で Jupyter のサービスを動かす » DSP空挺団

Set up Anaconda + IPython + Tensorflow + Julia on a Google Compute Engine VM – Harold Soh

Jupyter + Tensorflow + Nvidia GPU + Docker + Google Compute Engine