Jupyter是一个免费开源的Web应用程序,用于交互式计算和数据科学。Jupyter支持所有编程语言,并提供多种软件,例如JupyterLab,它提供了功能丰富且支持选项卡的多笔记本编辑环境,Notebook作为轻量级的笔记本编写工具,Qtconsole等。

在本教程中,您将学习如何在Debian 12服务器上安装和配置Jupyter Notebook。您还将为Jupyter Notebook设置密码认证,并将其作为systemd服务运行。最后,您将安装和配置Nginx作为Jupyter Notebook的反向代理。

前提条件

在开始之前,请确保您已具备以下条件:

  • 一台Debian 12服务器
  • 一个具有管理员权限的非root用户
  • 一个指向服务器IP地址的域名

安装Python包

在安装Jupyter之前,您必须安装Python、Pip Python包管理器、venv(用于创建Python虚拟环境)以及git。在本节中,您将使用APT包管理器安装这些包。

首先,运行以下命令更新Debian软件包索引。

sudo apt update

Debian 12安装Jupyter Notebook教程

现在安装Python及依赖项,包括Pip、venv和Python开发包。输入Y确认安装。

sudo apt install python3 python3-pip python3-dev python3-venv git

Debian 12安装Jupyter Notebook教程

安装完成后,运行以下pip3命令升级Pip版本。

pip3 install --break-system-package --upgrade pip

现在使用以下命令检查Python和Pip版本。

python3 --version
pip3 --version

您可以看到Python 3.11和Pip 24.3已安装。

Debian 12安装Jupyter Notebook教程

设置Python虚拟环境

安装Python和其他依赖项后,您将为Jupyter安装创建一个新的Python虚拟环境。这样,您的Jupyter安装将隔离在虚拟环境中。同时,您需要一个专用的Linux用户,请确保您的用户已准备就绪。

使用以下命令登录到您的用户。

su - username

运行以下python3命令创建一个新的Python虚拟环境venv。这将在您的虚拟环境中安装Python和Pip,与系统安装的版本相互独立。

python3 -m venv venv

激活venv Python虚拟环境。激活后,您的Shell提示符将变为(venv) username@host ...的形式。

source venv/bin/activate

Debian 12安装Jupyter Notebook教程

如果要退出venv虚拟环境,请执行以下deactivate命令。

deactivate

安装Jupyter

创建并激活Python虚拟环境后,您可以通过Pip Python包管理器开始安装Jupyter。

运行以下pip3命令安装Jupyter。

pip3 install jupyter

以下是Jupyter在虚拟环境中的安装过程。

Debian 12安装Jupyter Notebook教程

安装完成后,使用以下命令检查Jupyter版本。

jupyter --version

在以下输出中,您可以看到每个已安装的Jupyter组件的版本信息。

Debian 12安装Jupyter Notebook教程

启用Jupyter Notebook密码认证

安装Jupyter后,您将通过启用密码认证来配置Jupyter Notebook。

首先,运行以下命令生成Jupyter Notebook的配置文件。这将在~/.jupyter/jupyter_notebook_config.py中生成新的配置文件。

jupyter notebook --generate-config

现在使用以下命令为Jupyter Notebook设置密码。根据提示输入密码并确认。

jupyter notebook password

最后,执行deactivate命令退出venv虚拟环境。

deactivate

将Jupyter Notebook配置为systemd服务

在本节中,您将创建一个新的systemd服务来运行Jupyter Notebook。这样Jupyter Notebook将在后台作为systemd服务运行,您可以使用systemctl工具轻松管理它。

使用nano编辑器创建新的systemd服务文件/etc/systemd/system/jupyter.service

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

插入以下配置,将Jupyter Notebook作为systemd服务运行。请根据实际情况修改用户路径和用户名。

[Unit]
Description=Jupyter Notebook

[Service]
Type=simple
PIDFile=/run/jupyter.pid
ExecStart=/home/alice/venv/bin/jupyter-notebook --config=/home/alice/.jupyter/jupyter_notebook_config.py --allow-root
User=root
Group=root
WorkingDirectory=/home/alice/venv
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

保存文件并退出编辑器。

现在运行以下systemctl命令重新加载systemd管理器并应用更改。

sudo systemctl daemon-reload

Debian 12安装Jupyter Notebook教程

最后,使用以下命令启动并启用jupyter服务。

sudo systemctl enable --now jupyter
sudo systemctl status jupyter

在以下输出中,您可以看到jupyter服务正在运行。

Debian 12安装Jupyter Notebook教程

允许远程访问Jupyter Notebook

在本节中,您将启用Jupyter的远程访问功能。如果要在Jupyter前设置反向代理,此步骤是必须的。

登录到您的用户,使用nano编辑器打开Jupyter配置文件~/.jupyter/jupyter_notebook_config.py

su - username
nano ~/.jupyter/jupyter_notebook_config.py

要启用远程访问,取消注释c.ServerApp.allow_remote_access选项并将值更改为True

c.ServerApp.allow_remote_access = True

完成后保存并退出文件。

接下来,运行以下systemctl命令重启jupyter服务以应用更改。重启后,新的token将被生成,可以在日志文件中找到。

sudo systemctl restart jupyter

最后,使用以下命令检查jupyter服务状态。

sudo systemctl status jupyter

查看消息底部,复制Jupyter Notebook生成的token。

Debian 12安装Jupyter Notebook教程

配置Nginx反向代理

现在Jupyter Notebook已作为服务运行,下一步是安装Nginx并将其配置为Jupyter Notebook的反向代理。这样您可以轻松地使用HTTPS保护Jupyter Notebook。

使用以下apt命令安装nginx包。

sudo apt install nginx -y

Debian 12安装Jupyter Notebook教程

安装完成后,使用nano编辑器创建新的Nginx服务器块配置文件/etc/nginx/sites-available/jupyter

sudo nano /etc/nginx/sites-available/jupyter

插入以下配置,将Nginx设置为Jupyter Notebook的反向代理。请确保将server_name参数修改为您的域名。

server {
    listen 80;
    server_name lab.howtoforge.local;

    access_log /var/log/nginx/howtoforge.local.access.log;
    error_log /var/log/nginx/howtoforge.local.error.log;

    location / {
        proxy_pass http://127.0.0.1:8888;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }
}

保存文件并退出编辑器。

接下来,运行以下命令激活jupyter服务器块并验证Nginx配置。

sudo ln -s /etc/nginx/sites-available/jupyter /etc/nginx/sites-enabled/
sudo nginx -t

如果Nginx设置正确,您将看到类似syntax is ok - test is successful的输出。

Debian 12安装Jupyter Notebook教程

最后,运行以下systemctl命令重启Nginx Web服务器并检查Nginx状态。

sudo systemctl restart nginx
sudo systemctl status nginx

如果Nginx正在运行,您将看到类似以下的输出:

Debian 12安装Jupyter Notebook教程

访问Jupyter Notebook

打开您的Web浏览器,访问Jupyter Notebook安装的域名,例如http://lab.howtoforge.local/。如果安装成功,您将看到Jupyter密码认证页面。

输入您的密码并点击Log In

Debian 12安装Jupyter Notebook教程

现在您将看到Jupyter Notebook仪表板,如下所示:

Debian 12安装Jupyter Notebook教程

Debian 12安装Jupyter Notebook教程

总结

恭喜!您已完成在Debian 12服务器上安装Jupyter Notebook。您已经安装了Jupyter Notebook并设置了密码认证。您还配置了Nginx作为Jupyter Notebook的反向代理。作为下一步,您可以为Jupyter Notebook添加SSL证书以提高安全性,并安装一些扩展来增强Jupyter Notebook的功能。