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'
生成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。配置完需要手动启动一下。