如何在 Ubuntu 22.04 上安装 JupyterLab 环境教程

简介

JupyterLab 为数据科学和 AI 项目提供了一个基于 Web 的开发环境。它是一个灵活的界面,允许开发人员配置和管理机器学习和科学计算工作流程。JupyterLab 是 Jupyter Notebook 的下一代产品。它旨在解决 Notebook 的许多可用性问题,并通过支持 40 多种编程语言(包括 R、Python、Scala 和 Julia)极大地扩展了其范围。

本文演示了配置 JupyterLab 服务器并将其守护化、设置 Nginx Web 服务器作为反向代理,以及使用 Let’s Encrypt SSL 证书保护环境的步骤。

准备工作

  • 准备一台云服务器

若尚未拥有服务器,可前往 雨云官网 https://rainyun.ivwv.site 进行注册,新用户有专属优惠。

安装所需的软件包

JupyterLab 是一个全包式的软件包;除了用于隔离 Jupyter 内核的 virtualenv 软件包之外,你无需手动安装其他任何软件包。

  1. 安装 virtualenv 软件包。

    $ apt update
    $ apt install python3-virtualenv
    
  2. 创建一个新目录并进入该目录。

    $ mkdir /home/USER/jupyter-env
    $ cd /home/USER/jupyter-env
    
  3. 创建并激活一个新的 Python 虚拟环境。

    $ virtualenv env
    $ source env/bin/activate
    

    上面的命令在服务器上创建一个名为 env 的新目录,其中包含 Python 虚拟环境文件。你使用 bin 目录中的 activate 二进制文件进入虚拟环境。

  4. 更新 pip 包管理器。

    (env) $ pip install --upgrade pip
    
  5. 安装 JupyterLab 软件包。

    (env) $ sudo pip install -U jupyterlab
    

    上面的命令安装最新版本的 JupyterLab。

配置 JupyterLab 服务器

默认情况下,无论何时你启动 JupyterLab 服务器,它都会生成一个唯一的令牌,用于授予对界面的访问权限。本节演示配置 JupyterLab 服务器以使用静态密码并允许远程访问的步骤。

  1. 生成密码哈希。

    (env) $ python3 -c "from jupyter_server.auth import passwd; print(passwd('YOUR_PASSWORD'))"
    

    上面的命令生成所提供输入的哈希值。它使用 Argon2 密码哈希函数生成哈希值。
    复制生成的哈希值以供稍后使用。

  2. 创建一个新目录以组织 Jupyter Notebook。

    (env) $ mkdir /home/USER/jupyter-env/notebooks
    
  3. 创建 JupyterLab 配置文件。

    (env) $ sudo nano /home/USER/jupyter-env/config.py
    

    上面的命令生成一个用于持久化设置的配置文件。

  4. 复制并粘贴以下配置。

    from jupyter_server.auth.identity import PasswordIdentityProvider
    
    c.ServerApp.allow_remote_access = True
    c.ServerApp.allow_origin = '*'
    c.ServerApp.root_dir = "/home/USER/jupyter-env/notebooks"
    
    PasswordIdentityProvider.hashed_password = ''
    

    上面的配置允许 JupyterLab 接受远程连接,并设置静态密码以与界面交互。
    请务必在配置中提供之前生成的哈希值。
    保存并退出文件。

  5. 禁用防火墙。

    (env) $ sudo ufw disable
    

    上面的命令禁用防火墙,允许入站连接到所有端口。你将在后面的步骤中启用防火墙以保护你的服务器。

  6. 运行 JupyterLab 服务器。

    (env) $ jupyter lab --ip 0.0.0.0 --config config.py
    

    上面的命令在默认端口 8888 上启动 JupyterLab 服务器。你可以在 Web 浏览器中使用 http://PUBLIC_IP:8888 打开界面,并使用先前步骤中使用的密码登录。确认访问后,使用 Ctrl + C 停止服务器,以便继续执行后续步骤。

守护化 JupyterLab 服务器

在本节中,你将为 JupyterLab 服务器创建一个新服务,使其在后台运行并在服务器启动过程中自动启动。

  1. 获取 Python 和 Jupyter 的路径。

    (env) $ which python
    (env) $ which jupyter
    

    复制这些路径以在 systemd 服务中使用。

  2. 禁用虚拟环境。

    (env) $ deactivate
    
  3. 创建一个名为 jupyterlab 的新服务。

    $ sudo nano /lib/systemd/system/jupyterlab.service
    
  4. 将以下内容添加到文件中。

    [Unit]
    Description=JupyterLab Server
    
    [Service]
    User=USER
    Group=USER
    ExecStart=PYTHON_PATH JUPYTER_PATH lab --config=CONFIG_PATH
    
    [Install]
    WantedBy=multi-user.target
    

    上面的 systemd 文件内容创建一个名为 jupyterlab 的新服务,并使用配置文件启动服务器。请确保你替换了内容中的 USER*_PATH 值。
    保存并退出文件。

  5. 初始化 jupyterlab 服务。

    $ sudo systemctl daemon-reload
    $ sudo systemctl start jupyterlab
    $ sudo systemctl status jupyterlab
    

    你可以通过在 Web 浏览器中使用 http://SERVER_IP:8888 打开界面,并使用先前步骤中使用的密码登录来确认访问。

设置反向代理服务器

本节演示安装和配置 Nginx Web 服务器作为反向代理服务器的步骤,该服务器将传入的 HTTP/HTTPS 流量传输到 JupyterLab 服务器。

  1. 安装 Nginx 软件包。

    $ sudo apt install nginx
    
  2. 交换 Nginx 配置。

    $ sudo rm -f /etc/nginx/nginx.conf
    $ sudo nano /etc/nginx/nginx.conf
    
  3. 将以下内容添加到文件中。

    http {
        map $http_upgrade $connection_upgrade {
            default upgrade;
            '' close;
        }
    
        server {
            listen 80;
            server_name jupyterlab.example.com;
    
            location / {
                proxy_pass http://127.0.0.1:8888;
                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 $connection_upgrade;
                proxy_set_header X-Scheme $scheme;
    
                proxy_buffering off;
            }
    
            location ~ /.well-known/acme-challenge/ {
                root /var/www/certbot;
            }
        }
    }
    
    events {}
    

    上面的配置使用虚拟主机将 jupyterlab.example.com 上的所有传入 HTTP 流量传输到端口 8888 上的 localhost。

  4. 重启 Nginx 服务器。

    $ sudo systemctl restart nginx
    

    你可以通过在 Web 浏览器中使用 http://jupyterlab.example.com 打开界面,并使用先前步骤中使用的密码登录来确认访问。

使用 Let’s Encrypt 保护环境

Let’s Encrypt 是一个自动化、开放的证书颁发机构,为公众利益提供免费的 TLS/SSL 证书。它使用 ACME 协议分配证书。在本节中,你将安装 Certbot 软件包,这是一个 ACME 客户端,允许自动颁发和续订 SSL 证书。

  1. 安装 Certbot 软件包。

    $ sudo snap install --classic certbot
    
  2. 为虚拟主机创建一个新的 Let’s Encrypt 证书。

    $ sudo certbot --nginx -d jupyterlab.example.com
    

    上面的命令颁发一个 SSL 证书并更新 Nginx 配置以使用 HTTPS。你可以通过在 Web 浏览器中使用 https://jupyterlab.example.com 打开界面,并使用先前步骤中使用的密码登录来确认访问。

配置防火墙规则

JupyterLab 环境需要入站 SSH、HTTP 和 HTTPS 流量。

$ sudo ufw allow 'OpenSSH'
$ sudo ufw allow 'Nginx Full'
$ sudo ufw enable
$ sudo ufw status

结论

本文演示了配置 JupyterLab 服务器并将其守护化、设置 Nginx Web 服务器作为反向代理,以及使用 Let’s Encrypt SSL 证书保护环境的步骤。

有关更多信息,请参阅 JupyterLab 文档


我的博客:https://blog.ivwv.site
雨云官网:https://rainyun.ivwv.site

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vvw&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值