如何在服務器上凑一個 Jupyter Notebook

在個人服務器上安裝一個 Jupyer Notebook 可能可以更折騰方便的學習和使用 PythonR

此次安裝環境為 Debian 10 (buster), 64-bit PC。

jupyter notebook

Step 1 下載 conda 安裝包並安裝

conda 是一種通用包管理系統,旨在構建和管理任何語言和任何類型的軟件。 Anaconda 則是一個打包的集合,裡面預裝好了 conda、某個版本的 python、眾多 packages、科學計算工具等等。 Miniconda,顧名思義,它只包含最基本的內容 ——pythonconda,以及相關的必須依賴項。對於空間要求嚴格的用戶,Miniconda 是一種選擇。

apt update && apt upgrade -y
# 視具體情況確定下載鏈接
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

初始化當前的 bash,使 conda 的系統變量生效:

source .bashrc

Step 2 安裝 Jupyter Notebook

如果上一步安裝的是 Anaconda,則 Jupyter Notebook 已經預裝至系統中了。如果上一步安裝的是 Miniconda,則需要通過 pip 安裝 Jupyter Notebook

pip3 install jupyterlab

Step 3 Jupyter Notebook 的配置和運行

生成 Jupyter Notebook 配置文件,配置文件默認路徑為 /root/.jupyter/jupyter_notebook_config.py

jupyter notebook --allow-root --generate-config

Jupyter Notebook 生成密碼,密碼文件默認路徑為 /root/.jupyter/jupyter_notebook_config.json,複製密碼文件中的哈希格式密碼備用:

jupyter notebook password

編輯配置文件,修改如下項:

c.NotebookApp.allow_password_change = True ## 允許後期修改密碼
c.NotebookApp.allow_remote_access = True ## 允許遠程訪問
c.NotebookApp.allow_root = True ## 允許以 root 權限運行
c.NotebookApp.ip = '0.0.0.0' ## 訪問 ip
c.NotebookApp.notebook_dir = '/root' ## Jupyter Notebook 根目錄
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'xxxx' ## 哈希值格式密碼
c.NotebookApp.port = 8888 ## Jupyter Notebook 端口

此時即可運行 Jupyter Notebook

jupyter notebook

Step 4 設置系統服務(隨系統啓動)

完成 Step 3 之後 Jupyter Notebook 已經可以正常運行,通過瀏覽器訪問 http://yout_server_ip:port 即可訪問。但此時如果關閉 SSH 連接 Jupyter Notebook 進程也會被殺掉。可以通過將 Jupyter Notebook 注冊為系統服務而達到後臺運行和隨系統啓動的目的。

/etc/systemd/system/ 目錄下創建 jupyter.service 文件:

[Unit]
Description=Jupyter Notebook

[Service]
Type=simple
PIDFile=/run/jupyter.pid
ExecStart=/root/miniconda3/bin/jupyter-notebook --config=/root/.jupyter/jupyter_notebook_config.py
User=root
Group=root
WorkingDirectory=/root/jupyter_notebook
Restart=always
RestartSec=10
#KillMode=mixed

[Install]
WantedBy=multi-user.target

即可設置 Jupyter Notebook 隨系統運行:

systemctl enable jupyter
systemctl restart jupyter

額外配置:域名訪問

記憶 IP 終究不太容易也不方便,可以考慮使用反向代理來通過域名訪問遠端的 Jupyuter Notebook

可以使用 Caddy 2 作爲反代服務器:

## 安裝 Caddy 2
apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/cfg/gpg/gpg.155B6D79CA56EA34.key' | apt-key add -
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/cfg/setup/config.deb.txt?distro=debian&version=any-version' | tee -a /etc/apt/sources.list.d/caddy-stable.list
apt update
apt install caddy

編輯路徑 /etc/caddy/ 下的 Caddy 2 配置文件 Caddyfile

https://jupyter.xxx.xxx
reverse_proxy localhost:8888
tls /path/to/your/cert.crt /path/to/your/cert.key

Caddyfile 路徑内啓動 Caddy 2

caddy start

完工。🎉

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.