基於nginx搭建遠端jupyterlab服務
阿新 • • 發佈:2022-03-05
需求
伺服器效能比較好,想在伺服器方便的跑程式,所以在伺服器建立jupyter,然後在本地通過連線訪問到jupyter網頁,進行操作;
此外想熟悉下nginx,方便後面建網站啥的。
nginx
一款比較流行的後端服務代理程式,關於其介紹不多贅述。
下載安裝:
- 官網(http://nginx.org/en/download.html)下載tar包,解壓後執行configure,通過make編譯安裝,可以安裝到自己想要的檔案地址
- 通過yum安裝,比較方便,地址是系統地址,/usr下面
配置,可以在本地選一個資料夾放配置檔案,然後通過-c制定配置檔案
server { listen 8993; server_name localhost; location / { root /home/xxx/work/nginx/html; index index.html index.htm; } ## 配置部分 client_max_body_size 1G; location /jupyter { proxy_pass http://127.0.0.1:11993; proxy_connect_timeout 3s; proxy_read_timeout 5s; proxy_send_timeout 3s; 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; proxy_set_header Connection "upgrade"; proxy_redirect off; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
引數解析
- listen: 這個引數大家應該都不陌生,就是監聽的埠號。
- server_name: 瀏覽器上輸入的域名。
- location: 表示url匹配,/表示全部匹配,還可以配置不同路由。
- root: 表示匹配成功之後進入的目錄,可以指定到自己放html的路徑。
- index: 表示預設的頁面。
- proxy_connect_timeout: nginx向代理服務發起連線,第一次握手等待迴應的超時時間。
- proxy_send_timeout: nginx將請求傳送給代理服務的超時時間,應該是確認能正常連線之後向代理服務傳送真正的業務請求。
- proxy_read_timeout: 代理服務接受到真正業務請求之後,nginx等待代理服務響應具體請求的內容的超時時間。
- client_max_body_size:最大上傳檔案大小,如果jupyterlab要上傳檔案,可以配置下,免得有上傳限制。
啟動服務
nginx -c nginx.conf -e nginx.log
通過-c、-e可以分別指定本地的的配置檔案與報錯log檔案。
jupyer-lab
安裝:直接通過pip 安裝
配置
jupyter notebook --generate-config # 生產配置檔案,通常在home下的.jupyter資料夾裡 jupyter-lab password # 輸入兩次密碼,會在配置檔案中生存hash密碼,然後在登陸介面輸入密碼解鎖 修改/home/xxx/.jupyter/jupyter_xx_x.conf檔案 c.NotebookApp.base_url = '/jupyter' # 這個看個人如何選擇,因為我在nginx中配置了local是/jupyter,所以需要在這配置baseurl c.NotebookApp.allow_remote_access = True # 允許遠端訪問 c.NotebookApp.base_url = '/jupyter' # 設定jupyter的資源主頁路徑,即[jupyter主頁] c.NotebookApp.ip = '127.0.0.1' # 設定了訪問該jupyter應用的來源機器只能是本機 c.NotebookApp.notebook_dir = '/home/xxx/jupyter' # jupyter工作目錄,所有在jupyter建立的檔案都會儲存到這裡 c.NotebookApp.open_browser = False # 禁止啟動時自動開啟瀏覽器
執行jupyter,起一個後端程序,注意配置ip為localhost(127.0.0.1)或者0.0.0.0,配置port,和nginx中保持一致
python -m jupyterlab --ip 127.0.0.1 --port 11993 >/dev/null 2>&1 &