【Linux】Ubuntu 服务器搭建 Jupyter Notebook 云服务 并 开启端口实现远程访问
目录
一、安装 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
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 &
- 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 [email protected]_of_remote
ssh 本地转发通过参数 -L 指定,格式:
ssh -L [本地主机:]本地主机端口:远程主机:远程主机端口 ssh待登录主机
当成功执行上面的命令之后,访问本地的 8889 端口,就等同于访问远程主机的 4096 端口。但和直接访问有着本质的区别:这次是通过登录主机来安全转发数据的,没有人知道你和远程主机之间传输了何种数据。就算你不能和远程主机建立连接(而登录主机能访问),那就能突破(绕过)(防火墙的)限制。from: SSH的三种端口转发(Port forwarding)/ 隧道协议概要
- 开放配置指定的端口
这里开放了 4096 端口
iptables -A INPUT -p tcp --dport 4096 -j ACCEPT
service iptables save # 保存设置
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]
八、参考链接
搭建时参考:
解决问题一时参考:
解决问题二时参考:
博客内容参考:
上一篇: php环境一键装配