寫在前面
如果你已經(jīng)看過很多教程,依然打不開jupyter notebook锭环,請直接看下面的【意外情況】的解決辦法聪全,一定能幫到你。
安裝jupyter notebook
- 先在Linux命令行中輸入jupyter notebook看安裝了沒有
jupyter notebook
- 沒有安裝使用conda安裝
pip install jupyter
- 安裝后先生成配置文件辅辩,用于后面寫入ip荔烧,端口號,密碼等
jupyter notebook --generate-config
- 【.jupyter】在根目錄下汽久,為隱藏文件夾鹤竭。使用【ls -a】查看目錄下的所有文件(包括隱藏文件)
cd ~ && ls -a
cd .jupyter && ll
- 顯示以下內(nèi)容
total 52
-rw-rw-r-- 1 yuanf yuanf 52114 May 10 20:59 jupyter_notebook_config.py
-rw-rw-r-- 1 yuanf yuanf 26 May 8 15:49 migrated
drwxr-xr-x 1 yuanf yuanf 160 Mar 24 19:24 nbconfig
配置文件
- 啟動【ipython】配置密碼(注意不是python)
ipython
In [1]: from notebook.auth import passwd #導(dǎo)入包
In [2]: passwd() #調(diào)用包
Enter password: #輸入密碼,用于后面登陸jupyter notebook
Verify password: #確認(rèn)密碼
Out[2]: 'sha1:ce23d945972f:34769685a7ccd3d08c84a18c63968a41f1140274' #這段是密鑰景醇,復(fù)制下來等會用
exit() #退出
- 開始編輯配置文件
vim jupyter_notebook_config.py
#在任意地方加上如下內(nèi)容
c.NotebookApp.ip = '*' #允許任何ip去訪問我們的jupyter notebook
c.NotebookApp.password = u'sha1:ce23d945972f:34769685a7ccd3d08c84a18c63968a41f1140274' #u后面加上你復(fù)制的密鑰
c.NotebookApp.open_browser = False #因?yàn)槭窃趌inux臀稚,就不讓他打開瀏覽器了
c.NotebookApp.port = 8888 #隨便指定一個端口,如果這個端口被占用三痰,jupyter會加1重新找端口吧寺,直到找到為止
c.NotebookApp.allow_remote_access = True #允許遠(yuǎn)程控制
c.NotebookApp.notebook_dir = u'路徑' #設(shè)置你打開jupyter notebook的時候想顯示的位置窜管,可以設(shè)置成經(jīng)常使用的路徑
#配置完記得保存
啟動jupyter notebook
jupyter notebook
#先看一眼8888端口有沒有被占用,不然被占用后jupyter會提示并搞一個新端口稚机,記住它
#然后【Ctrl + C】停止幕帆,再掛在后臺,防止terminal關(guān)閉赖条,端口也關(guān)閉
nohup jupyter notebook &
- 在windows下遠(yuǎn)程訪問jupyter notebook失乾,在本地打開瀏覽器訪問以下地址:
http://address_of_remote:8888
- 如果看到上面的端口改變了,請修改8888
- 然后就可以訪問jupyter的登錄界面了纬乍,輸入你賬戶的密碼就可以正常登錄了碱茁。
意外情況:
在windows下遠(yuǎn)程訪問jupyter notebook顯示無法正常訪問怎么辦?
有些服務(wù)器可能只開放一個對外的端口仿贬,但是我們通過終端訪問服務(wù)器需要一個對外端口纽竣,開啟jupyter服務(wù)又需要一個端口,這樣就需要同時占用兩個端口才行茧泪。
舉個例子蜓氨,服務(wù)器為了保證安全性只開放了一個對外的端口,22號端口队伟,我們使用終端通過22號端口登錄到服務(wù)器上打開jupyter语盈,jupyter創(chuàng)建的端口是8888號,但是服務(wù)器沒有對外開放8888號端口缰泡,所以即使打開了jupyter刀荒,外面也無法正常訪問。
如果把jupyter的端口號改為22號棘钞,由于我們登錄終端的時候正在占用22號缠借,所以jupyter就會提示端口已被占用,無法創(chuàng)建宜猜。
網(wǎng)上有很多教程說可以通過修改防火墻設(shè)置來開放端口泼返,修改防火墻設(shè)置一般都需要管理員權(quán)限,但是通常我們使用服務(wù)器的時候大多數(shù)情況下是不可能有管理員權(quán)限的姨拥,這時候我們可以使用端口映射來解決這個問題绅喉。
解決辦法:
在windows下打開DOS,輸入:
ssh -N -f -L localhost:9999:localhost:8888 -p 端口號 username@遠(yuǎn)程地址
#locahost:9999是指本地地址叫乌,localhost:8888是指遠(yuǎn)程地址柴罐,其中8888是在linux我們?yōu)閖upyter notebook開啟的端口
#-p 端口號 username@遠(yuǎn)程地址是什么后面的看下面截圖
#例如:
ssh -N -f -L localhost:9999:localhost:8888 -p 22 yuanf@114.212.169.49
#這時候DOS讓輸入密碼,這個密碼不是設(shè)置jupyter notebook的密碼憨奸,而是我們登錄liunx賬戶的密碼
- 成功后革屠,打開瀏覽器,輸入:
localhost:9999
就可以看到j(luò)upyter notebook的登錄界面了,輸入密碼即可登錄似芝。最后收藏一下網(wǎng)頁那婉,以便下次訪問
值得一提的是:
如果實(shí)驗(yàn)室服務(wù)器意外重啟,需要重新在Linux下啟動jupyter notebook党瓮,并在DOS下重新映射详炬,只跑下面的代碼就可以了
# 在linux里面運(yùn)行下面的代碼
nohup jupyter notebook &
# 在windows里面運(yùn)行下面的代碼,locahost:9999是指本地地址寞奸,localhost:8888是指遠(yuǎn)程地址
ssh -N -f -L localhost:9999:localhost:8888 -p 22 yuanf@114.212.169.49