因此学期开了两门在课堂演示和讲解python代码的课,故想在课堂上跟着练习;可我的陈年笔记本太重、续航也不太行,所以想到了可以在(承担了太多的)服务器上部署jupyter,通过平板浏览器远程访问就行。
也顺便解决了多平台数据共享不方便的问题,这样无论在linux、windows还是平板上写代码,进度都是共享的。
效果(大小和A4纸对比):

安装anaconda
服务器:CentOs7
1.下载安装anaconda
去官网找到 ananconda linux对应版本的下载链接。
如https://repo.anaconda.com/archive/Anaconda3-5.1.0-Linux-x86_64.sh
在服务器合适位置下载
wget https://repo.anaconda.com/archive/Anaconda3-5.1.0-Linux-x86_64.sh
下载完毕后输入
bash Anaconda-xxx.sh
根据提示安装 (一路yes即可)
2.使ananconda立即生效并测试
source ~/.bashrc
测试是否生效
在控制台输入 python,看到首行Python 3.6.4 |Anaconda, Inc.|,则大功告成。
如果还是旧版本的python,说明在安装的过程中,添加环境变量的时候被选中了 no。
3.手动添加环境变量
vim ~/.bashrc
将下面这句插入到最后一行
export PATH=/root/anaconda3/bin:$PATH
如果不是root用户(往控制台上面翻,安装的时候给出这个path了)
export PATH=”/home/用户名/anaconda3/bin:$PATH”
最后再执行
source ~/.bashrc
服务器上部署jupyter
1.创建jupyter默认配置文件
jupyter notebook --generate-config
此时会显示配置文件的位置,稍后会用到。
mkdir jupyter #创建jupyter工作目录
pwd #查看工作目录的路径,配置文件时会用到
2.生成密钥
命令行输入
python
from notebook.auth import passwd
passwd()
并将生成的sha1:xxx复制下来。
坑:有时候因为版本问题不是生成sha1而是生成了argon2,可以这样指定算法为哈希值sha1:
python
from notebook.auth import passwd
passwd(algorithm='sha1')
3.修改配置文件
使用vim打开第一步中生成的配置文件,在文件的末尾将下面的代码复制进去,并自行修改。
c.NotebookApp.ip = '*' #所有绑定服务器的IP都能访问,若想只在特
定ip访问,输入ip地址即可
c.NotebookApp.port = 8888 #将端口设置为自己喜欢的吧,默认是8888
c.NotebookApp.open_browser = False #我们并不想在服务器上直接打开Jupyter Notebook,所以设置成False
c.NotebookApp.notebook_dir = '/root/jupyter_projects' #这里是设置Jupyter的根目>录,若不设置将默认root的根目录,不安全
c.NotebookApp.allow_root = True # 为了安全,Jupyter默认不允许以root权限启>动jupyter
c.NotebookApp.terminals_enabled = False # 关闭terminal
c.NotebookApp.allow_remote_access=True #不加这个可能会出现无法启动服务
c.NotebookApp.password = r'sha1:xxxxxx' # 此处是登录jupyter notebook的密码
4.启动命令
jupyter notebook --ip=0.0.0.0 --no-browser --allow-root
以上为临时启动命令,即断开ssh连接后jupyter也会自动断开连接。
下面使用nohup命令让jupyter在后台一直运行
nohup jupyter notebook --ip=0.0.0.0 --no-browser --allow-root &
结束后台运行的jupyter
//查看正在运行的jupyter进程pid
//a: 显示所有程序
//u: 以用户为主的格式来显示
//x: 显示所有程序,不以终端来区分
ps -aux | grep jupyter
//结束进程
//指令格式
kill -9 pid
//eg
kill -9 17702
防火墙原因引起的ERR_TIME_OUT报错
1.有权限开放指定端口,并重启防火墙
firewall-cmd --zone=public --add-port=8888/tcp --permanent
systemctl restart firewalld.service
若用的腾讯云/阿里云,需在服务器相应的管理界面开放端口。
2.没有开放端口权限,端口映射
若服务器设有防火墙,则无法从本地访问服务器上开启的jupyter,而自己也没相应的权限开放端口
那就可以使用ssh的命令将服务器的端口映射到本地:
ssh user@服务器ip地址 -L127.0.0.1:xxxx:127.0.0.1:yyyy #xxxx为本地端口;yyyy为服务器端口,需要和jupyter使用的端口一致
后在本地电脑的浏览器中输入127.0.0.1:xxxx即可在本地映射服务器上的jupyter notebook