jupyter notebook是一个能直接运行在浏览器上的python编辑器,十分方便.最近新入手了一个pad,功能太强大了,不能让它怀才不遇呀.于是:
现在远程有一个干干净净的ubuntu服务器,通过搭建一个jupyter服务器,然后在本地通过ipad浏览器编程,当然为了安全,需要浏览器连接后需要密码验证.
目录
一.创建用户,并且换用户.
二.下载并安装anaconda
三.配置jupyter
四.本地测试
五.报错解决
1.PermissionError: [Errno 13] Permission denied: '/run/user/xxxx/jupyter'的报错
2. [Error -2 ]:Name or service not known
首先在root用户时打开防火墙8888端口,这是提供jupyter服务的端口:
sudo ufw allow 8888
这里使用root创建一个用户名是demeen的用户.
sudo adduser demeen
输入密码,并再次确认
然后一路enter,使用默认的就好,最后输入 y 确认一下.
然后切换到新用户:
su demeen
cd ~
Anaconda的linux下载网址是:https://www.anaconda.com/download/#linux
这时的最新版本是5.3.1,所以这里我们通过命令下载:
wget https://repo.continuum.io/archive/Anaconda3-5.3.1-Linux-x86_64.sh
下载完成后运行:
bash Anaconda3-5.3.1-Linux-x86_64.sh
之后会有一个协议,输入 yes
然后会安装有路径选择,按下enter就是默认路径
之后会问是否加入到环境变量,输入 yes
之后问要不要安装vs code,输入 no
然后就安装完成了.输入
jupyter
按两下tab键提示好多东西,就证明通过anaconda安装jupyter成功了.
如果没有反应,同时发现输入 conda 执行后没有命令说明,那么执行这两步就可以了:
echo 'export PATH="~/anaconda3/bin:$PATH"'>>~/.bashrc
source ~/.bashrc
运行命令:
jupyter-notebook --generate-config
这时看到一个反馈:
Writing default config to: /home/demeen/.jupyter/jupyter_notebook_config.py
这就是配置的目录
然后运行命令:
jupyter-notebook password
然后输入密码并确认,这就是以后登录的密码.
输入命令:
vi .jupyter/jupyter_notebook_config.json
可以看到有一个字符串 sha1:xxxxxxxxxxxxxxx
复制那一个xxxxxxxxxxx,一会要用到.
然后运行命令:
mkdir jupyterdata
创造一个文件夹来存放jupyter的代码
最后一步,配置端口与代码存放路径:
vi .jupyter/jupyter_notebook_config.py
我们可以看到配置路径都打了备注,所以我们在空白处直接写上这些关键配置就可以:
# 设置默认目录
c.NotebookApp.notebook_dir = u'/home/demeen/jupyterdata'
# 允许通过任意绑定服务器的ip访问
c.NotebookApp.ip = '*'
# 用于访问的端口
c.NotebookApp.port = 8888
# 不自动打开浏览器
c.NotebookApp.open_browser = False
# 设置登录密码
c.NotebookApp.password = u'sha1:xxxxxxxxxxxxxxxx'
# 设置jupyter打开的首页对应的目录位置
c.NotebookApp.base_project_url = '/'
然后保存并退出(按下esc ,输入 :wq ,敲回车)
然后运行:
jupyter-notebook
如果有报错,转到第五大点。
在随便一个客户机的浏览器里输入 http://[远程服务器ip]:8888
就可以进入jupyter的密码界面了.
执行下面的代码:
export XDG_RUNTIME_DIR="/home/demeen/anaconda3"
source .bashrc
jupyter-notebook
这个常见于新版的jupyter,输入下面的代码:
vi .jupyter/jupyter_notebook_config.py
然后把刚才配置过的c.NotebookApp.ip = '*' 项改为:
c.NotebookApp.ip = '0.0.0.0'