在服务器上搭建Jupyter Notebook

在服务器上搭建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(自定义)
c.NotebookApp.base_url = '/'
# 访问之后跳转的URL(自定义)
c.NotebookApp.default_url = '/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监听的端口,因为Nginx要用8888,所以把原来的端口改掉
c.NotebookApp.port = 8887

2. 集成Nginx

Jupyter Notebook使用tornado作为服务器和Web框架,如果想要获取更高的性能以及灵活性,可以使用Nginx作为代理服务器。在/etc/nginx/conf.d/jupyter.conf中添加以下内容:

server {
    listen 8888 default_server;
    server_name rucer.cn;
    charset     utf-8;
    client_max_body_size    75M;

    location / {
        proxy_pass http://127.0.0.1:8887/;
        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 &

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章