404错误:
[W 2025-07-18 16:49:04.843 ServerApp] 404 GET /api/kernels?1752828544725 (6f99c1ab21584553b5ac0af7dc7d5f6d@172.1.172.91) 2.03ms referer=http://127.0.0.1:8889/lab?
本方法使用于在无界面的linux系统中安装Jupyter,然后在windows中通过网页访问,之前用的别的方法,登录后网页是空白的,显示很多404错误,下面的方法可以解决,第一步是安装(我用的是miniconda并且重新构建了,pip也可以的),可以跳过
一,安装 Jupyter Notebook ,已安装的可以跳过
- 使用conda安装
# 使用conda安装(更可靠的依赖解析)
conda install jupyterlab notebook -c conda-forge
- 查询版本,看看是否安装成功
(myenv) root@fuwuqi:~/yilai# jupyter --version
Selected Jupyter core packages...
IPython : 8.20.0
ipykernel : 6.28.0
ipywidgets : 8.1.1
jupyter_client : 8.6.3
jupyter_core : 5.8.1
jupyter_server : 2.16.0
jupyterlab : 4.4.4
nbclient : 0.9.0
nbconvert : 7.16.5
nbformat : 5.10.4
notebook : 7.4.4
qtconsole : not installed
traitlets : 5.14.1
- 重建 JupyterLab 资源
JupyterLab 的构建过程必须依赖 Node.js。这是因为 JupyterLab 的前端界面基于现代 JavaScript 框架开发,需要 Node.js 和 npm(或 yarn)来编译、打包和优化这些资源。
如果没安装node的,需要先安装node
-
3.1 在系统上安装 Node.js 20.x
# 安装 NodeSource 仓库(提供官方 Node.js) curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - # 安装 Node.js 和 npm sudo apt-get install -y nodejs # 验证版本 node --version # 应显示 v20.x.x以上 npm --version # 应显示 9.x.x以上
-
3.2 配置 JupyterLab 使用系统 Node.js
# 激活你的 Conda 环境 conda activate myenv # 检查系统 Node.js 路径 which node # 通常是 /usr/bin/node # 设置环境变量,让 JupyterLab 使用系统 Node.js export NODE_EXECUTABLE=$(which node) # 清理并重建 JupyterLab jupyter lab clean jupyter lab build --dev-build=False --minimize=False
-
3.3 清理并重建 JupyterLab
jupyter lab clean jupyter lab build
-
配置方式1(参考):配置 JupyterLab 远程访问
-
4.1 生成配置文件
jupyter lab --generate-config
配置文件路径:~/.jupyter/jupyter_lab_config.py
-
4.2. 设置密码:按提示输入密码,加密后的密码会保存在配置文件中
jupyter lab password
-
4.3. 修改配置文件
打开配置文件:nano ~/.jupyter/jupyter_lab_config.py
添加 / 修改以下内容(取消注释并更新值):
c.ServerApp.ip = '0.0.0.0' # 允许所有IP访问 c.ServerApp.port = 8889 # 指定端口 c.ServerApp.open_browser = False # 禁止自动打开浏览器 c.ServerApp.allow_remote_access = True # 允许远程访问 c.ServerApp.root_dir = '/' # 工作目录(可选)
按 Ctrl+O 保存,Ctrl+X 退出
-
4.4. 后台运行 JupyterLab
-
使用 screen 或 tmux 创建持久会话(推荐 screen):
screen -S jupyter jupyter lab #jupyter notebook
按 Ctrl+A+D 分离会话(JupyterLab 继续运行)。未来可通过 screen -r jupyter 重新连接。
-
使用nohup让 Jupyter 在后台运行:
nohup jupyter lab &
-
-
4.5. 防火墙配置(如果需要)
开放 8889 端口:sudo ufw allow 8889
-
-
配置方式2(参考):直接启动JupyterLab 远程访问
-
5.1 jupyter lab启动
jupyter lab --no-browser --port=8888
- –no-browser:不自动打开浏览器(适用于无界面服务器)
- –port=8888:指定端口(可自定义
-
5.2. 后台运行 JupyterLab
# 方法1:使用 nohup nohup jupyter lab --no-browser --port=8889 & # 方法2:使用 screen(推荐,方便后续管理) screen -S jupyter jupyter lab --no-browser --port=8889 # 按 Ctrl+A+D 分离会话,后续可通过 screen -r jupyter 重新连接
-
二,服务器上开启jupyter lab
jupyter-lab --ip 0.0.0.0 --port 8889 --no-browser --allow-root
#--ip 0.0.0.0 :代表不限制ip
#--port 8889 :端口号
#--no-browser :启动的时候不自动打开浏览器
#--allow-root :允许root 身份运行
三,本地做端口映射
打开cmd ,把本地8888端口映射到服务器8889上,
ssh -N -f -L localhost:8888:localhost:8889 user_name@server_ip -p 22
#user_name:服务器ssh的登录名
#server_ip: 服务器的ip地址
服务器可以用netstat网络命令查看端口占用情况:
- netstat:这是一个用于显示网络连接、路由表和网络接口等网络相关信息的工具。
- -tulnp:这是 netstat 的一组选项参数,各个字母代表的含义如下:
- -t:用于显示 TCP 协议的连接情况。
- -u:用于显示 UDP 协议的连接情况。
- -l:只显示处于监听状态(Listening)的服务。
- -n:直接使用 IP 地址和端口号,而不通过 DNS 进行反向解析查找对应的主机名。
- -p:显示与网络连接相关的进程 ID(PID)以及进程名称。
(myenv) root@fuwuqi:~/yilai# netstat -tulnp | grep 8889
tcp 0 0 0.0.0.0:8889 0.0.0.0:* LISTEN 2207257/python3.10
#tcp:表明这是一个 TCP 协议的连接。
#0.0.0.0:8889:意味着该服务正在监听所有可用的网络接口,使用的端口号是 8889。
#LISTEN:说明当前服务正处于监听状态,随时准备接受客户端的连接请求。
#2207257/python3.10:这里的 2207257 是进程 ID(PID),python3.10是进程名称,这表明是 Python 程序在使用这个端口。
四,本地浏览器进行访问
- 打开本地浏览器,若有设置密码,则输入之前设置的密码登录:
http://localhost:8888
- 验证 GPU 支持(可选):
在 JupyterLab 中创建新笔记本,运行:
import torch
print(f"CUDA可用: {torch.cuda.is_available()}")
- 故障排除
- 端口被占用:修改配置文件中的 port 为其他值(如 8889)。
- 忘记密码:删除 ~/.jupyter/jupyter_server_config.json 中的密码字段,重新设置密码
- JupyterLab 已成功启动,但由于以 root 用户 运行而被阻止。这是 Jupyter 的安全机制,默认禁止 root 用户直接启动。
-
错误信息: [C 2025-07-18 … Running as root is not recommended.]
-
解决1:强制以 root 身份运行
- 添加 --allow-root 参数:
jupyter lab --no-browser --port=8888 --allow-root
- 修改配置文件 ~/.jupyter/jupyter_lab_config.py:
c.ServerApp.allow_root = True
- 添加 --allow-root 参数:
-
解决2:以普通用户身份运行,创建新用户并授予必要权限
adduser jupyter # 创建新用户 usermod -aG sudo jupyter # 添加 sudo 权限 su - jupyter # 切换到新用户 # 在新用户环境中重新安装 Jupyter 或激活环境 conda activate myenv jupyter lab --no-browser --port=8888
-