目錄
一、安裝 Jupyter Notebook
pip install jupyter
二、設置密碼生成密鑰
打開 python 輸入
from IPython.lib import passwd
passwd()
如下圖所示,輸入並確認密碼後會生成一段密鑰,將密碼和密鑰都記錄下來。
密碼用於登錄 Jupyter,密鑰用於修改配置文件
三、生成 Jupyter Notebook 配置文件
jupyter notebook --generate-config
四、修改配置文件
vim ~/.jupyter/jupyter_notebook_config.py
配置文件中添加如下內容:
c.NotebookApp.ip='*' #所有 IP 都能訪問,若想只在特定 IP 訪問,輸入 IP
c.NotebookApp.password = u'sha1:1a******698ce3' #剛纔那個生成的密鑰
c.NotebookApp.open_browser = False # 禁止自動打開瀏覽器,因爲我們並不想在服務器上直接打開 Jupyter
c.NotebookApp.port = 4096 # 隨便指定一個端口,從這個端口進入使用 Jupyter
# 以下內容可選
c.IPKernelApp.pylab = 'inline'
# 預載入 相當於 %pylab inline 所有matplotlib的圖像都通過inline的方式顯示
c.NotebookApp.notebook_dir = '/root/jupyter_projects'
# 這裏是設置 Jupyter 的根目錄,若不設置將默認 root 的根目錄,不安全
c.NotebookApp.allow_root = True
# 使用 root 權限,爲了安全,Jupyter 默認不允許以 root 權限啓動 Jupyter
c.NotebookApp.enable_mathjax = True
# 是否用mathjax,一種用於數學公式顯示的工具
PS:
- 密鑰必須更換。
- 端口不能設置成一些特殊端口,否則 Chrome 無法訪問,下面 七、遇到的問題 中會列出不能設置的端口。
五、啓動 Jupyter Notebook
1. 前臺運行
jupyter notebook
2. 後臺運行
後臺啓動 Jupyter 並保持運行,使用 nohup 和 & 命令。
nohup jupyter notebook &
exit
使用 exit 是因爲:有可能在當前賬戶非正常退出或者結束的時候,命令還是自己結束了。所以在使用 nohup 命令後臺運行命令之後,需要使用 exit 正常退出當前賬戶,這樣才能保證命令一直在後臺運行。
- & 命令: 當在前臺運行某個作業時,終端被該作業佔據;可以在命令後面加上 & 實現後臺運行。例如:sh test.sh &
- nohup 命令: nohup 可以在退出帳戶之後繼續運行相應的進程。nohup 就是不掛起的意思(no hang up)
- 如果使用 nohup 命令提交作業,那麼在缺省情況下該作業的所有輸出都被重定向到一個名爲 nohup.out 的文件中,除非另外指定了輸出文件:nohup command > myout.file 2>&1 &
nohup jupyter notebook > /dev/null 2>&1 &
- 2>&1解析:
- command>out.file是將command的輸出重定向到out.file文件,即輸出內容不打印到屏幕上,而是輸出到out.file文件中。
- 2>&1 是將標準出錯重定向到標準輸出,這裏的標準輸出已經重定向到了out.file文件,即將標準出錯也輸出到out.file文件中。最後一個&, 是讓該命令在後臺執行。
- 試想2>1代表什麼,2與>結合代表錯誤重定向,而1則代表錯誤重定向到一個文件1,而不代表標準輸出;換成2>&1,&與1結合就代表標準輸出了,就變成錯誤重定向到標準輸出. from: linux後臺執行命令:&和nohup
3. 退出
- 前臺運行只需 ctrl + C 即可
- 後臺運行
ps -u root # 顯示 root 用戶進程信息
# 找到 Jupyter 的 PID number
kill pidnum # 殺死它
- 查看進程號有兩個命令可以用,jobs 和 ps,區別是 jobs 用於查看當前終端後臺運行的任務,換了終端就看不到了。而 ps 命令用於查看瞬間進程的動態,可以看到別的終端運行的後臺進程。
- jobs 命令: 查看當前有多少在後臺運行的命令。
jobs -l 選項可顯示當前終端所有任務的 PID,jobs的狀態可以是running,stopped,Terminated。+ 號表示當前任務,- 號表示後一個任務。但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識。- ps 命令: 用於顯示當前進程 (process) 的狀態。
ps -aux 顯示所有包含其他使用者的行程。ps -u root 顯示 root 用戶進程信息。ps -ef 顯示所有命令,連帶命令行。- kill命令: 用於刪除執行中的程序或工作。徹底殺死進程 kill -9 pidnum。強制殺死進程 kill -KILL pidnum。
六、遠程訪問
打開瀏覽器輸入 —— 服務器IP:之前配置的端口號
http://xx.xx.xx.xx:4096
七、遇到的問題
1. 無法訪問此網站 ERR_CONNECTION_REFUSED
原因: 是服務器防火牆設置的問題,配置中的端口沒有開放。
解決: 有兩種方法。
- 在本地建立一個ssh通道,本地轉發,將遠程端口4096映射到一個本地端口8889
在本地終端中輸入
ssh -L 8889:127.0.0.1:4096 username@address_of_remote
ssh 本地轉發通過參數 -L 指定,格式:
ssh -L [本地主機:]本地主機端口:遠程主機:遠程主機端口 ssh待登錄主機
當成功執行上面的命令之後,訪問本地的 8889 端口,就等同於訪問遠程主機的 4096 端口。但和直接訪問有着本質的區別:這次是通過登錄主機來安全轉發數據的,沒有人知道你和遠程主機之間傳輸了何種數據。就算你不能和遠程主機建立連接(而登錄主機能訪問),那就能突破(繞過)(防火牆的)限制。from: SSH的三種端口轉發(Port forwarding)/ 隧道協議概要
- 開放配置指定的端口
這裏開放了 4096 端口
sudo iptables -A INPUT -p tcp --dport 4096 -j ACCEPT
sudo iptables-save # 保存設置
持久化 iptables
iptables-save只是暫時保存了端口的開放規則,如果關機或者重啓,那麼剛纔添加的規則就會失效。
使用iptables-persistent可以對端口的開放規則進行持久化操作,使其永久保持有效。from linux/ubuntu系統下開放端口的辦法
# 安裝iptables-persistent
sudo apt-get install iptables-persistent
# 持久化規則
sudo netfilter-persistent save
sudo netfilter-persistent reload
2. 無法訪問此網站 ERR_UNSAFE_PORT
原因: 我之前配置使用的是 6666 端口。這是 Chrome 的“問題”。ERR_UNSAFE_PORT,顧名思義就是“非安全端口” ,「6666」看上去挺酷的,但卻是 Google Chrome 默認的非安全端口列表。
解決: 重新 build chrome 雖然可以解決問題,但比較麻煩。建議儘量避免以下端口。
非安全端口列表 from:坑嗲坑娘坑自己的「6666」端口(記一次網絡故障排查)
1, // tcpmux
7, // echo
9, // discard
11, // systat
13, // daytime
15, // netstat
17, // qotd
19, // chargen
20, // ftp data
21, // ftp access
22, // ssh
23, // telnet
25, // smtp
37, // time
42, // name
43, // nicname
53, // domain
77, // priv-rjs
79, // finger
87, // ttylink
95, // supdup
101, // hostriame
102, // iso-tsap
103, // gppitnp
104, // acr-nema
109, // pop2
110, // pop3
111, // sunrpc
113, // auth
115, // sftp
117, // uucp-path
119, // nntp
123, // NTP
135, // loc-srv /epmap
139, // netbios
143, // imap2
179, // BGP
389, // ldap
465, // smtp+ssl
512, // print / exec
513, // login
514, // shell
515, // printer
526, // tempo
530, // courier
531, // chat
532, // netnews
540, // uucp
556, // remotefs
563, // nntp+ssl
587, // stmp?
601, // ??
636, // ldap+ssl
993, // ldap+ssl
995, // pop3+ssl
2049, // nfs
3659, // apple-sasl / PasswordServer
4045, // lockd
6000, // X11
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]
6668, // Alternate IRC [Apple addition]
6669, // Alternate IRC [Apple addition]
八、參考鏈接
搭建時參考:
解決問題一時參考:
解決問題二時參考:
博客內容參考: