在服務器上搭建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 &

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