2019-06-07

GCP 安裝 Python 開發環境 - Anaconda 及 Jupyter Notebook Service

Anaconda 和 Jupyter Notebook 是對學習和使用 Python 非常有幫助的工具,本篇將介紹如何在 Google Cloud Platform (GCP) VM 執行個體上安裝 Python 開發環境 - Anaconda 及 Jupyter Notebook Service…

學習目標
  • GCP VM 執行個體環境設定
  • 安裝 Anaconda Distribution
  • 設置 Jupyter Notebook Service
  • 瀏覽器連接 Jupyter Notebook

GCP VM 執行個體環境設定
● 先在 Google Cloud Platform (GCP) 上建立 Computer Engine - VM 執行個體。
● 名稱:輸入執行個體名稱作為識別。
● 開機磁碟:選用 Ubuntu 18.04 LTS。
● 防火牆:勾選「允許 HTTP 流量」及「允許 HTTPS 流量」。讓我們可以用瀏覽器連接 Jupyter Notebook Service。
● 管理、安全性、磁碟、網路、單獨租用:網路 --> 網路介面 --> 外部 IP --> 建立 IP 位址 --> 輸入名稱 --> 按下「預約」(GCP 會分配靜態外部 IP 給您,讓瀏覽器連線,可能產生額外費用)。
● 按下「建立」等 VM 執行個體建立好。
● 建立好的 VM 執行個體就已啟動,我們使用的環境是 Ubuntu 18.04 LTS,注意這是 Server 版。
● 確定靜態外部 IP 已設定。
Source: Google Cloud Platform (GCP)

如果沒有,到「VPC 網路」-->「外部 IP 地址」,將 IP 從 "臨時" 改為 "靜態",GCP 會要求輸入自訂靜態 IP 的名稱。這樣即使 VM 執行個體重新啟動,外部 IP 也不會改變。
Source: Google Cloud Platform (GCP)
Source: Google Cloud Platform

● 設定防火牆規則:同樣在「VPC 網路」-->「防火牆規則」,點選「建立防火牆規則」。
Source: Google Cloud Platform (GCP)
Source: Google Cloud Platform (GCP)

● 名稱:輸入自訂防火牆規則名稱。

● 目標:改選「網路中的所有執行個體」。

● 來源 ip 範圍:填入 "0.0.0.0/0"。

● 通訊協定和通訊埠:選擇「指定的通訊協定和通訊埠」,勾選「tcp」輸入 "5000" (可更改)。

● 按下「建立」,安裝 Jupyter Notebook Service 需要的 VM 執行個體環境設定就完成了。
● 回到「VM 執行個體」頁 --> 連接 SSH:選擇在瀏覽器視窗中開啟,建立 SSH 連線。

安裝 Anaconda Distribution
接下來要安裝 Anaconda Distribution (Anaconda 套件包)。這個套件包已包含了 Jupyter Notebook,關於 Anaconda Distribution 的介紹,您可以參考《Python 超強套件包 - Anaconda Distribution》。
本篇介紹的安裝方式是針對 GCP VM 執行個體 Ubuntu 18.04 LTS 環境:
● 取得 Anaconda installer archive。到 https://repo.anaconda.com/archive/ 選擇您要安裝的 Anaconda installer 版本。這裡有新舊及不同平台各種版本,注意選擇正確的版本。在您要的版本上按滑鼠右鍵複製連結 (Copy link address)。
Source: Google Cloud Platform (GCP)

● 移動至您想暫存安裝檔的目錄 (安裝完成就可以刪除安裝檔了),例:/tmp,執行:
cd /tmp   # 移動至暫存安裝檔的目錄
● 以 wget 取回安裝檔,注意 https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh 要用您剛剛複製的 archive 連結取代,執行:
wget -b https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh
-b 參數會讓下載在背景中執行,下載的結果會記錄在同目錄的 “wget-log” 檔案中。
● 開始安裝 Anaconda installer archive,注意 Anaconda3-2019.03-Linux-x86_64.sh 要換成您下載的 archive 檔名,執行:
bash Anaconda3-2019.03-Linux-x86_64.sh
安裝開始後會有一串的確認問題,輸入 yes,按下 Enter 即可。
● 啟動 Anaconda 環境,執行:
source ~/.bashrc
● 確認 Anaconda 安裝完成,執行:
conda list           # 列出 Anaconda 安裝的套件清單
conda -V             # 檢查 conda 版本
conda update conda   # 更新 conda (不一定要執行)

設置 Jupyter Notebook Service
接著要設置 Jupyter Notebook Service,再啟動 Jupyter Notebook Service。
● 查看 ~/.jupyter/jupyter_notebook_config.py 設定檔是否存在?執行:
ls ~/.jupyter/jupyter_notebook_config.py
● 如果存在,跳到下一步編輯 jupyter_notebook_config.py;如果不存在,則執行:
jupyter notebook --generate-config   # 產生 jupyter_notebook_config.py
● 編輯 jupyter_notebook_config.py,執行:
vi ~/.jupyter/jupyter_notebook_config.py   # 使用 vi 或 nano 編輯都可以
● 複製下列設定內容,貼入 jupyter_notebook_config.py 第一行下方,<port number> 要和防火牆規則中設定的 tcp 相同:
c = get_config()
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = <port number>   # port number=防火牆規則中設定的 tcp:5000
貼好的 jupyter_notebook_config.py 會像下圖,完成後存檔離開 vi。

● (非必要) 設定 Jupyter Notebook 登入密碼,執行:
jupyter notebook password   # 設定 Jupyter Notebook 登入密碼
這動作會為 Jupyter Notebook 設定登入密碼。因為 Jupyter Notebook Service 是一個可由瀏覽器登入的服務,任何知道您外部 IP 的人都能訪問,設定登入密碼會較為安全。不設定密碼的話,Jupyter Notebook 會在每次啟動的時候,設定一個 token 在連線 URL 中,必須有該 token 才能連線成功。也就是密碼的意思了,只是每次都不同。

啟動 Jupyter Notebook Service
以上的設定完成後,以後要使用 jupyter notebook,先啟動 Anaconda 環境:
● 啟動 Anaconda 環境,執行:
source ~/.bashrc
● 再啟動 Jupyter Notebook Service,執行:
jupyter notebook --ip=0.0.0.0 --port=5000 --no-browser   # --port=前述的<port number>

瀏覽器連接 Jupyter Notebook
開啟瀏覽器,輸入前述步驟取得的 GCP 靜態外部 IP 與 jupyter_notebook_config.py 中設定的 <port number>,如下的 URL 登入 Jupyter Notebook:
http://<GCP 靜態外部 IP>:<port number>     # 登入 Jupyter Notebook
就會看到 Jupyter Notebook 的登入畫面,輸入設置的密碼即可登入。

關閉 Jupyter Notebook Service
● 先將 Jupyter Notebook 瀏覽器關閉後,回到啟動 Jupyter Notebook Service 的 SSH 視窗,按下 Ctrl-c,服務會詢問是否確認關閉 notebook server?

● 按 y 確定關閉,再按下 Enter,Jupyter Notebook Service 就關閉了。



參考資料 (References):
😺 電癮院:GCP教學:將臨時外部IP位址改為靜態IP位址
😺 Amulya Aankul:Running Jupyter Notebook on Google Cloud Platform in 15 min
😺 Lisa Tagliaferri:How To Install Anaconda on Ubuntu 18.04 [Quickstart]