Jupyter Notebook 是一个Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和markdown。用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。
一般Anaconda安装包中会自带jupyter。安装好以后直接输入jupyter notebook 命令便可以在浏览器中使用。但是它默认只能在本地访问,如果想把它安装在服务器上,然后在pc上远程访问,则需要进行如下配置:
一、登陆远程服务器
二、生成配置文件
$ jupyter notebook --generate-config
三、生成秘钥
$ ipython
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:...'
四、修改配置文件
$ vi /root/.jupyter/jupyter_notebook_config.py
c.NotebookApp.ip='*' # 设置所有ip皆可访问
c.NotebookApp.open_browser = False # 禁止自动打开浏览器
c.NotebookApp.password = u'sha:...' # 刚才复制的那个密文'
c.NotebookApp.port =8888 # 随便指定一个端口
注意第二步生成的配置文件每一行前面都带有注释符#,需要删掉
五、启动jupyter
$ jupyter notebook --ip=myIP(本机ip)
如果以root登录服务器,则需添加参数
$ jupyter notebook --ip=myIP(本机ip)--allow-root
现在打开浏览器输入http://ip:8888就可以看到jupyter的登陆页面了,输入刚才设置的密码即可开始使用jupyter notebook,但是,问题来了,只要关闭命令行,程序就会关闭,所以我们需要设置后台运行。
六、设置后台运行
切换到你想要作为jupyter notebook的根目录的目录下
$ vim start_jupyter.sh
输入
nohup jupyter notebook --ip=myIP
或
nohup jupyter notebook --ip=myIP --allow-root
并保存
给予该文件执行的权限并执行
$ chmod +x start_jupyter.sh
$ ./start_jupyter.sh
该进程在后台运行,同时会自动生成nohup.out文件,此时直接关闭命令行进程也会在后台运行(不要按ctrl+c,会结束进程)
七、配置nginx代理
这样配置如果平时要访问需要在ip或域名后加端口号,很不方便,我们用nginx来做一个反向代理,nginx的安装使用在此不再赘述,以下列出配置文件内容:
./etc/nginx/conf.d/default.conf
server {
listen 80;
server_name yourDomain;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Referer http://127.0.0.1:8888;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
proxy_redirect off;
}
location ~* /(api/kernels/[^/]+/(channels|iopub|shell|stdin)|terminals/websocket)/? {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Referer http://127.0.0.1:8888;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
proxy_redirect off;
}
}
保存后,重新加载配置文件
$ nginx -s reload
至此,你便可以在pc的浏览器上输入域名访问远程服务器上的jupyter服务了!
此外,建议配置成功后将jupyter的ip和nginx中端口转发的目标改为localhost。