jupyter學習

nginx + jupyter的服務(wù)端部署

我們都知道在本地安裝部署jupyter剩瓶,之后可以執(zhí)行命令 jupyter notebook 可以打開瀏覽器可視化操作編程環(huán)境,那么我們?nèi)绾卧诒镜厝ピL問我們的服務(wù)端呢垄分?下面我先列出一些效果圖來講述我搭建的整個流程宛篇。

下圖是我從登錄jupyter到進入到j(luò)upyter主頁的演示圖

jupyter主頁

其中說明如下幾點:

  • ①是登錄jupyter主頁 https://js.jupyter.com/jupyter 時娃磺,彈出的登錄驗證頁面;
  • ②是表示該請求是一個https請求叫倍;
  • ③是表示jupyter的資源主頁路徑是 jupyter偷卧;
  • ④是表示在jupyter的notebook的路徑下的目錄文件列表信息;

那么為了上述列出的這四點是如何實現(xiàn)吆倦?或者說是哪些配置信息決定了上面的顯示呢听诸?

1. notebook的認證

為了實現(xiàn)上面的認證效果,其實就是對服務(wù)器上的jupyter notebook環(huán)境的權(quán)限認證蚕泽。下面介紹一下我們?nèi)绾螌ψ约簡拥膉upyter服務(wù)晌梨,從設(shè)置權(quán)限,到驗證權(quán)限的流程须妻。

  1. 首先是設(shè)置權(quán)限仔蝌,通過執(zhí)行命令: jupyter notebook --generate-config,會創(chuàng)建目錄 ~/.jupyter 并且該目錄下會有一個配置文件 jupyter_notebook_config.py荒吏,通過設(shè)置如下配置項:
c.NotebookApp.base_url = '/jupyter'  # 設(shè)置jupyter的資源主頁路徑敛惊,即[jupyter主頁]圖片中的③
c.NotebookApp.ip = '127.0.0.1'  # 設(shè)置了訪問該jupyter應(yīng)用的來源機器只能是本機
c.NotebookApp.open_browser = False  # 設(shè)置了關(guān)閉瀏覽器
c.NotebookApp.password = u'sha1:a937e51de9a1:a567707768cd50d0ac1d40a4fb739510ddb3d8cb'  # 這就是實現(xiàn)認證的關(guān)鍵所在,即用戶在瀏覽器中輸入一個密碼绰更,如何和服務(wù)器上"正確"的匹配上瞧挤,這個字符串的獲取,需要通過其他命令獲取
c.NotebookApp.port = 8888  # 設(shè)置了jupyter服務(wù)的端口
c.NotebookApp.notebook_dir = u'/data/home/user00/js_python'  # 設(shè)置了jupyter的notebook路徑儡湾,即訪問jupyter首頁時特恬,看到的文件列表就是該目錄下的,如果不設(shè)置該項徐钠,那么notebook的目錄就是 `~/.jupyter`
  1. 我們在1中看到了用戶認證的關(guān)鍵配置項 c.NotebookApp.password癌刽,那么該值我們?nèi)绾潍@取呢?可以通過進入到 ipython 環(huán)境下丹皱,執(zhí)行如下命令獲取妒穴,其中兩次輸入的密碼,就是我們在瀏覽器中需要輸入的密碼摊崭,這樣就能和服務(wù)器上的驗證匹配得上了讼油。
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password: 
Verify password: 
Out[2]: 'sha1:a937e51de9a1:a567707768cd50d0ac1d40a4fb739510ddb3d8cb'

上面我們只是啟動好了jupyter,并且jupyter的服務(wù)只能在本機訪問呢簸,那么我們?nèi)绾卧谶h程進行鏈接該服務(wù)呢矮台?下面我們介紹使用nginx做服務(wù)代理乏屯,到本機的jupyter服務(wù)上去。

2. nginx代理

我們看到上面圖片中的URL請求使用的是https瘦赫,那么我們?nèi)绾蝞ginx做到https請求呢辰晕?另外我們?nèi)绾问潜镜氐逆溄诱埱蟠淼竭h程服務(wù)器上的本機jupyter 8888服務(wù)呢?下面我們將詳細講解确虱。

  1. 首先是搭建nginx服務(wù)
    搭建nginx服務(wù)的時候含友,使用如下命令編譯
>> sudo  yum install pcre pcre-devel
>> sudo  yum install openssl openssl-devel
>> ./configure --prefix=/data/home/user00/app/nginx-1.6.3 --pid-path=/data/home/user00/app/nginx-1.6.3/nginx.pid --with-http_ssl_module
>> make && make install
  1. 然后設(shè)置nginx的啟動配置
    下圖中的①是用來設(shè)置jupyter的請求是 https 請求作用使用的,端口是443校辩,然后還有ssl鑒權(quán)認證窘问,其中文件 cert.crtcert.key 獲取的方法如下,執(zhí)行如下命令宜咒,然后在本目錄下會生成這兩個文件惠赫,將其拷貝到目錄 /data/home/user00/app/nginx-1.6.3/ 即可
>> openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout cert.key -out cert.crt
# 參數(shù)說明:
# -x509 # 輸出一個x509格式的證書
# -days # x509證書的有效時間
# -newkey rsa:bits  # 生成一個bits長度的RSA私鑰文件,用于簽發(fā)
# -keyout  # 輸出證書key文件 
# -out  # 輸出證書私鑰文件
nginx.conf 配置

然后啟動nginx的時候故黑,會發(fā)現(xiàn)會報如下錯誤儿咱,表示nginx編譯的時候,沒有加載ssl模塊進去场晶,那么我們就需要編譯一下nginx混埠,將ssl模塊加進去,但是我們不是重新將nginx編譯一遍峰搪。

nginx: [emerg] unknown directive "ssl_certificate" in /data/home/user00/app/nginx-1.6.3/nginx.conf:86
nginx: configuration file /data/home/user00/app/nginx-1.6.3/nginx.conf test failed

具體操作方法如下:

# step 1 解壓nginx包到一個新的目錄
# step 2 然后重新編譯岔冀,但是呢,我們這次只添加我們需要的模塊概耻,例如上面的ssl使套,
#            但是需要保證prefix和pid-path與本機之前編譯的nginx這些設(shè)置保持一致;
#            注意鞠柄,這里只執(zhí)行 make 不要執(zhí)行 make install
./configure --prefix=/data/home/user00/app/nginx-1.6.3 --pid-path=/data/home/user00/app/nginx-1.6.3/nginx.pid --with-http_ssl_module
make
# step 3 在該路徑下會有文件 objs/nginx 侦高,將其拷貝到系統(tǒng)的nginx目錄,例如本文中的例子厌杜,在拷貝之前最好備份一下舊的nginx
cp objs/nginx /data/home/user00/app/nginx-1.6.3/sbin/nginx
# step 4 重啟nginx服務(wù)即可

3. 問題處理

下面是問題匯總奉呛,在搭建的過程中遇到的問題,進行了匯總夯尽。

問題1

2018/02/02 01:38:41 [error] 16673#0: *7 connect() failed (111: Connection refused) while connecting to upstream, client: 10.32.203.42, server: js.jupyter.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8888/", host: "js.jupyter.com"

解答 :
查看后臺的8888服務(wù)是否有拉起瞧壮,發(fā)現(xiàn)服務(wù)沒有起來,通過重新拉起即可解決匙握。

問題2

2018/02/02 01:21:58 [error] 11207#0: *46 open() "/data/home/user00/app/nginx-1.6.3/html/jupyter" failed (2: No such file or directory), client: 10.32.203.42, server: localhost, request: "GET /jupyter HTTP/1.1", host: "js.jupyter.com"

解答
這里代理轉(zhuǎn)到j(luò)upyter8888服務(wù)出現(xiàn)了問題咆槽,才會出現(xiàn)去請求 .../html/jupyter 目錄資源的問題,需要檢查配置中關(guān)于代理的設(shè)置是否正確

下面是關(guān)于使用過程中遇到的問題的匯總圈纺。

問題1

加載包失敗問題

解決
由于在 from sklearn import linear_model 加載時秦忿,出現(xiàn) scipy 包沒有安裝的情況麦射;等安裝了之后,再次執(zhí)行上面步驟出現(xiàn)的上面錯誤灯谣,需要重新啟動 jupyter服務(wù)即可解決

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末潜秋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胎许,更是在濱河造成了極大的恐慌峻呛,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呐萨,死亡現(xiàn)場離奇詭異杀饵,居然都是意外死亡,警方通過查閱死者的電腦和手機谬擦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朽缎,“玉大人惨远,你說我怎么就攤上這事』靶ぃ” “怎么了北秽?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長最筒。 經(jīng)常有香客問我贺氓,道長,這世上最難降的妖魔是什么床蜘? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任辙培,我火速辦了婚禮,結(jié)果婚禮上邢锯,老公的妹妹穿的比我還像新娘扬蕊。我一直安慰自己,他們只是感情好丹擎,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布尾抑。 她就那樣靜靜地躺著,像睡著了一般蒂培。 火紅的嫁衣襯著肌膚如雪再愈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天护戳,我揣著相機與錄音翎冲,去河邊找鬼。 笑死灸异,一個胖子當著我的面吹牛府适,可吹牛的內(nèi)容都是我干的羔飞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼檐春,長吁一口氣:“原來是場噩夢啊……” “哼逻淌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起疟暖,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤卡儒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后俐巴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骨望,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年欣舵,在試婚紗的時候發(fā)現(xiàn)自己被綠了擎鸠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡缘圈,死狀恐怖劣光,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糟把,我是刑警寧澤绢涡,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站遣疯,受9級特大地震影響雄可,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缠犀,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一数苫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夭坪,春花似錦文判、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亡鼠,卻和暖如春赏殃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背间涵。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工仁热, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人勾哩。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓抗蠢,卻偏偏與公主長得像举哟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子迅矛,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理妨猩,服務(wù)發(fā)現(xiàn),斷路器秽褒,智...
    卡卡羅2017閱讀 134,668評論 18 139
  • 一销斟、什么是Jupyter Notebook庐椒? 1. 簡介 Jupyter Notebook是基于網(wǎng)頁的用于交互計算...
    Raxxie閱讀 1,442,483評論 36 704
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧蚂踊!Ngi...
    JokerW閱讀 32,688評論 24 1,002
  • 清明约谈,本是祭祖的日子,但悴势,被列入國家法定節(jié)假日之后窗宇,再加之人們工作壓力等加大,又是春季特纤,出游代替祭祖已經(jīng)成為一種趨...
    流浪文人閱讀 228評論 0 2
  • 現(xiàn)在是“大眾創(chuàng)業(yè)萬眾創(chuàng)新”的時代,也許你目前還沒有創(chuàng)業(yè)侥加,但至少你應(yīng)該考慮創(chuàng)業(yè)捧存,或者應(yīng)該了解創(chuàng)業(yè)是怎么回事。 雖說互...
    丁華秋實閱讀 437評論 0 1