跳转至

Debian安装Jupyter Notebook服务并反代

以下安装配置在root用户权限下,若不是root用户,需在所有命令前面添加sudo 。Ubuntu或者CentOS也大同小异。

下载并安装Anaconda

更新当前的软件包核安全补丁到最新版本

apt update && apt upgrade -y

删除未使用的依赖项:

apt --purge autoremove

Anaconda官网服务器在海外,下载速度较慢。建议使用清华大学TUNA镜像站 下载。目前的最新版本是 Anaconda3-2021.11 。

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.11-Linux-x86_64.sh

wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-aarch64.sh #ARM版

安装Anaconda

sh Anaconda3-2021.11-Linux-x86_64.sh

按回车键查看许可协议至结束。确认安装,输入yes并回车。选择安装路径,默认安装路径为/root/anaconda3/,直接回车选择默认路径,输入自定义路径回车则安装路径为自定义路径,Ctrl + C放弃安装。

初始化Anaconda,是否希望安装程序运行conda init初始化Anaconda3,输入yes并回车。

配置环境。在/etc/profile文件尾部添加路径(宝塔在线编辑)如果没有vim,apt-get install vim

vim /etc/profile

添加以下内容,保存并退出

export ANACONDA_PATH=/root/anaconda3    #ubuntu默认目录 /home/ubuntu/anaconda3
export PATH=$PATH:$ANACONDA_PATH/bin

使环境变量生效

source /etc/profile

查看是否安装成功,查看Anaconda3版本信息

conda --version

ssh终端增加(base)字样

打开 ~/.bashrc 文件, 发现aconda自动加入了命令到 .bashrc中, 在我们打开终端的时候自动 执行了 conda activate base 命令。

一个命令可以回去:

conda deactivate

创建目录和远程密码

先为 Jupyter 相关文件准备一个目录,再建立一个目录作为 Jupyter 运行的根目录:

mkdir /data/jupyter
cd /data/jupyter
mkdir /data/jupyter/root

使用下面的命令,创建一个密文的密码:

python -c “import IPython;print(IPython.lib.passwd())”

或者分步,或者ipython

ipython
from notebook.auth import passwd
passwd()

控制台会提示输入密码两次,并生成一段sha1加密码,请复制并保留它,稍后会用到

'argon2:$argon2id$v=19$m=10240,t=10,p=8$x/wQ8FeLbMo6uj0MoDVEaQ$W6RJ6xhAN8walzT+apPhfQ'
'argon2:\(argon2id\)v=19\(m=10240,t=10,p=8\)CbIIa26/IgFVAjXJp7Ngyw$4gdfBHSb9q+CKEomy/eRmQ'

生成Jupyter Notebook配置文件

jupyter notebook --generate-config

并使用vim命令修改(先退出python)(宝塔面板编辑)

vim /root/.jupyter/jupyter_notebook_config.py

在配置文件末尾添加如下内容

# 允许访问此服务器的 IP,星号表示任意 IP
c.NotebookApp.ip = '*'
# root运行
c.NotebookApp.allow_root = True
# 运行时不打开本机浏览器
c.NotebookApp.open_browser = False
# 用于访问的端口
c.NotebookApp.port = 5678
 # 启用 MathJax
c.NotebookApp.enable_mathjax = True
# 设置登录密码
c.NotebookApp.password ='sha1:45af675d9f5c:5b9da9347f4c7bd99e906952f6535992be8e4e42'
#工作目录,保存代码项目文件
c.ContentsManager.root_dir = '/data/jupyter/root'

也可以直接配置或使用 Nginx 将服务代理到 80 或 443 端口。

启动并反代

直接以 jupyter notebook 命令启动

jupyter notebook

此方式在连接断开时将会中断,所以我们需要让 Jupyter 服务在后台常驻。先按下 Ctrl + C 并输入 y 停止 Jupyter 服务,然后执行以下命令:

nohup jupyter notebook > /data/jupyter/jupyter.log 2>&1 &

该命令将使得 Jupyter 在后台运行,并将日志写在 /data/jupyter/jupyter.log 文件中。

注意打开防火墙端口,系统自身的防火墙(如宝塔面板),以及VPS服务商的网络出入规则。

如果IP访问正常,说明程序运行正常。可以绑定域名,设置 Nginx 反代。

如果出现错误,无法连接内核

Connection failed
A connection to the notebook server could not be established. The notebook will continue trying to reconnect. Check your network connection or notebook server configuration.

需要修改反代规则,分别在两处添加

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_redirect off;

配置jupyter开机自启与后台运行

查看jupyter-notebook安装位置

whereis jupyter-notebook

推荐采用用户目录 /root/anaconda3/bin/jupyter-notebook ,最好不要采用root目录 /usr/local/bin/jupyter-notebook ,普通用户为 /home/$USER/.local/bin/jupyter-notebook 。这里是 /root/anaconda3/bin/jupyter-notebook 。

新建服务文件(宝塔面板)

sudo vim /etc/systemd/system/jupyter.service

加入以下代码

[Unit]
Description=jupyter notebook
After=network.target
[Service]
Type=simple
# 这里填用户名,下同
User=root
EnvironmentFile=/root/anaconda3/bin/jupyter-notebook
ExecStart=/root/anaconda3/bin/jupyter-notebook
ExecStop=/usr/bin/pkill /root/anaconda3/bin/jupyter-notebook
KillMode=process
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target

保存后终端依次输入以下代码

sudo systemctl daemon-reload
sudo systemctl enable jupyter.service
sudo systemctl start jupyter.service

输入以下代码观察有无报错信息

systemctl status jupyter

配置成功的话jupyter-notebook已经添加进系统服务,同时满足开机自启与后台运行。进入http://localhost:8888或者http://127.0.0.1:8888验证

其他常用控制jupyter命令

sudo systemctl disable jupyter.service #移除jupyter服务 sudo systemctl restart jupyter.service #重启jupyter服务 sudo systemctl stop jupyter.service #停止jupyter服务

当然,最简单的方法,是使用宝塔插件“堡塔应用管理器”,名称随便写,应用环境不需要,启动文件就是/root/anaconda3/bin/jupyter-notebook。配置完需要手动启动一下。