版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013687632/article/details/83658079
在服务器上搭建Jupyter Notebook
- acmore
- 2018.11.2
1. Jupyter Notebook
1.1 安装Jupyter
假定工作目录为
/home/jupyter
$ virtualenv venv -p python3
$ source venv/bin/activate
$ (venv) pip install jupyter
1.2 配置Jupyter
安装Jupyter之后,在~/.jupyter
下查看是否存在jupyter_notebook_config.py
文件,如果没有,就使用
$ (venv) jupyter notebook --generate-config
命令生成配置文件,Jupyter的具体配置内容参见Jupyter Notebook的配置选项,下边的几个选项是为部署在服务器上可能要用到的(下边c.NotebookAPP.password
的设置方法见Jupyter Notebook添加密码)
# Nginx访问时会出现跨域访问,需要在这里允许
c.NotebookApp.allow_origin = '*'
# 禁止随意修改密码
c.NotebookApp.allow_password_change = False
# 是否允许远程访问
c.NotebookApp.allow_remote_access = True
# 访问URL,假定我们想通过`$HOST/python`来访问
c.NotebookApp.base_url = '/python'
# 访问之后跳转的URL(自定义),要加上base_url
c.NotebookApp.default_url = '/python/tree'
# Jupyter Notebook Server监听的IP
c.NotebookApp.ip = '127.0.0.1'
# Jupyter Notebook的工作目录,用于限制访问位置
c.NotebookApp.notebook_dir = 'data/'
# 启动Jupyter Notebook之后是否打开浏览器(服务器上此选项应该关闭)
c.NotebookApp.open_browser = False
# 客户端打开Jupyter Notebook的密码哈希值
c.NotebookApp.password = 'sha1:******'
# Jupyter Notebook Server监听的端口
c.NotebookApp.port = 8888
2. 集成Nginx
Jupyter Notebook使用tornado
作为服务器和Web框架,如果想要获取更高的性能以及灵活性,可以使用Nginx
作为代理服务器。在/etc/nginx/conf.d/jupyter.conf
中添加以下内容:
server {
listen 80 default_server;
server_name myjupyter.com;
charset utf-8;
client_max_body_size 75M;
location /python/ {
# 这里要和Jupyter配置中的Base Url一致
proxy_pass http://127.0.0.1:8888/python/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
# 因为用到了Websocket协议,所以下边的配置是必须的
proxy_set_header Connection "upgrade";
proxy_redirect off;
}
}
配置完成之后,启动Jupyter Notebook即可远程访问
# 直接运行,测试使用
$ (venv) jupyter notebook
# 后台运行
$ (venv) nohup jupyter notebook &
此时在浏览器输入http://myjupyter.com/python
即可进入Jupyter Notebook。