十分鐘搭建私有 Jupyter Notebook 伺服器
做數據科學開發,目前最流行的語言之一是 Python,這主要得益於其提供 Numpy、Pandas等強大的軟體包,以及 Jupyter 這樣便捷的開發環境。
本文將介紹如何在一台雲伺服器上配置 Jupyter Notebook 環境,從此只要有瀏覽器和網路,就是可以隨時隨地進行數據科學開發工作,不用擔心家庭環境與辦公環境多次配置的問題。
前提條件
如果想跟隨本教程一起完成環境搭建工作,需要擁有一台雲伺服器,筆者使用的是騰訊雲提供的 CVM,操作系統為 Ubuntu 14.04。如果不滿足該條件,可以考慮通過筆者的推薦鏈接購買。
如果你打算長期使用該伺服器,可以參考這篇文章:如何正確配置 Ubuntu 14.04 雲伺服器?
購買伺服器並完成配置之後,即可通過如下命令登錄:
安裝依賴
Jupyter 是使用 Python 編寫的一個軟體包。而且,我們希望在 Jupyter 中使用 Python 2 和 Python 3等多個版本,因此先安裝 Python 3 和 pip 。(Ubuntu 14.04 默認安裝了 Python 2.7)
配置國內 PyPI 源
後續使用 pip 安裝第三方庫時,由於受國內網路限制,速度會比較慢。我們首先將 PyPI 的源修改為國內源,這裡使用的是中國科學技術大學提供的源。
編輯 ~/.pip/pip.conf ,在最上方加入如下內容:
配置好之後,即可享受風一般的安裝速度。
虛擬環境
下面,為 Jupyter 創建一個獨立的虛擬環境,與系統自帶的 Python 隔離開來。為此,先安裝 virtualenv 庫:
由於我們目前是以 ubuntu 用戶,可能要以 sudo 執行命令,避免 pip 安裝時出現許可權問題。
然後,創建一個專門的虛擬環境,並直接激活:
在創建虛擬環境時,指定的 Python 版本為 3,方便後續的操作。
安裝 Jupyter
Jupyter 的安裝其實很簡單,只需要執行一行命令即可:
由於會安裝其他相關的依賴庫,這一步所需的時間可能較長。
配置 Jupyter
安裝好 Jupyter 之後,我們需要對其進行簡單的配置,比如設置訪問密碼,默認不自動打開瀏覽器等。Jupyter 默認會使用 ~/.jupyter/jupyter-noteboook-config.py 配置文件,我們在 ~/venv/ 目錄下新建一個 conf.py 文件作為自定義配置文件。
創建密碼
為了方便,我們選擇 jupyter 作為訪問密碼。
需要在命令行依次執行如下命令,結束之後會得到一個密碼的 sha1 值,後續要填寫在配置文件中。
其他設置
此外,為了能夠直接通過瀏覽器打開 地址,訪問 Jupyter Notebook,我們還要做如下設置:
將上面兩處設置,寫入 文件,然後執行如下命令即可:
!
新建 Jupyter 系統服務
為了能夠長時間訪問 Jupyter Notebook,避免每次都需登陸伺服器手動執行命令,我們需要讓該命令一直在後台自動運行,最好是支持系統重啟時自動啟動。因此,我們可以將 jupyter 變成一個系統服務。
創建 文件,寫入如下內容:
上面定義了該服務在 runlevel 為 2、3、4、5 時啟動,而在非這幾個 runlevel 時停止該服務。
運行級別0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動 運行級別1:單用戶工作狀態,root許可權,用於系統維護,禁止遠程登陸 運行級別2:多用戶狀態(沒有NFS) 運行級別3:完全的多用戶狀態(有NFS),登陸後進入控制台命令行模式 運行級別4:系統未使用,保留 運行級別5:X11控制台,登陸後進入圖形GUI模式 運行級別6:系統正常關閉並重啟,默認運行級別不能設為6,否則不能正常啟動
配置好了 文件之後,就能夠通過如下命令啟動、停止和重啟 Jupyter Notebook 了:
這樣,每次系統啟動或者出錯重啟時,都會啟動 Jupyter Notebook。
配置 Nignx 並創建系統服務
下一步,我們設置 Nginx 作為 Jupyter 的反向代理伺服器。首先,安裝 Nginx,並修改 設置:
修改其中的 location / 部分,並注釋掉某些行,具體見下面的示例:
這一步需要注釋掉 try_files 一行,並新增 ,將對 的訪問請求轉發至該地址 。
保存並退出文件,然後重啟 Nginx 服務即可。
之後,再修改 文件:
並重啟 Jupyter 服務:
現在我們訪問雲伺服器的 IP 地址時,就會進入 Jupyter Notebook 的登陸頁面。
製作系統鏡像
雖然說上面的整個過程並不太複雜,一步一步跟著教程做的話可能十分鐘左右就可以搞定了。但是如果希望以後也能夠快速複製同樣的系統,將整個過程編寫為一個腳本來自動安裝、配置時比較好的選擇。不過,最終安裝、配置的時間還是會有的。
推薦一種更加快速的方法,即使用騰訊雲等雲服務商提供的製作鏡像功能,將配置好的系統直接打包,以後可以直接使用鏡像,只要1-2分鐘,就可以啟動 Jupyter Notebook 伺服器了。
題圖:pexels,CC0 授權。
※三問 Python:能幹什麼?為什麼火?會繼續火嗎?
※10G+AI人工智慧/複雜系統/數據挖掘/深度學習/Python資料
TAG:編程派 |