demo-d3952c8561c4808c1d447fc061c71174.gif前段时间沉迷对OpenWeb UI的部署与各种优化,不过一直都是用的docker部署的,感觉自己的可操作空间被缩小了许多😋,为什么我不能从源代码中进行部署呢。

罪恶就此开始🤡

操作平台是一台Linux-18.04的1.4T内存,8卡2080ti机架服务器。上面跑着几个我自己的实验项目😢。

git clone https://github.com/open-webui/open-webui.git
cd open-webui/

# Copying required .env file
cp -RPp .env.example .env

# Building Frontend Using Node
npm install
npm run build

cd ./backend

# Optional: To install using Conda as your development environment, follow these instructions:
# Create and activate a Conda environment
conda create --name open-webui-env python=3.11
conda activate open-webui-env

# Install dependencies
pip install -r requirements.txt -U

# Start the application
bash start.sh

这是来自https://docs.openwebui.com/getting-started/的教程代码,主要由三部分构成。1、下载仓库;2、构建npm前端;3、python环境构建及运行

我的服务器在第步就G了🤯。

根据OpenWeb UI要求,Node.js >= 20.10,但是我的服务器的node.js的版本很低,所以我需要升级node.js。sudo apt install 了一个 n管理nodejs版本,然后下载了一个nodejs 20.10.然后进行install时出现:

node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node) 

服务器报GLIBC_2.28没有找到,即我的默认GLIBC版本可能太低了。作为小白,我也不知道GLIBC是什么,

有什么用,想着可能就是普通的什么依赖吧。于是便使用国内大模型ChatGLM教着我进行GLIBC版本的安装。
然后罪魁祸首的一串命令:
这个代码直接把默认的glibc版本给定掉了,然而ubuntu18.04的glibc版本最高支支持到2.27🙀。

然后就是服务器的所有命令都无法使用:sudo,cd,cp,mv,ls,等等都不能使用。过一会服务器就崩溃了。SSH不能🙀,这时我意识到了问题的严重性。

崩溃关机都关不了😱,然后强行物理按键关机重启,报缺关键文件,开机失败。

面对这种情况,只有两个方法 ① 使用Ubuntu live切入系统把原始的GLIBC版本改回来,② 或者重装系统。

还好服务器上的东西不多,后面就在自己一声声的卧槽的抱怨中,重装了系统。然后还要重新装一堆系统驱动,一堆深度学习有关的东西。

其实应该是可以选择方案①的,这里又有个意外。我制作错了U盘,我的不是live USB,而是一个普通的装机盘,然后就误打误撞直接重装了。

🤕以下是GPT4给的正确处理方法

  1. 启动Live CD/USB:插入Live CD/USB并从中启动系统,选择“尝试Ubuntu”或类似选项进入Live系统。

  2. 挂载根文件系统

    • 打开终端。

    • 确认你的根文件系统所在的分区。可以使用lsblkfdisk -l命令来查看。例如,如果根分区是/dev/sda1

      sudo mount /dev/sda1 /mnt
  3. 挂载其他必要的文件系统(如有)

  4. 如果有单独的/boot/home分区,也要挂载它们:

    sudo mount /dev/sda2 /mnt/boot sudo mount /dev/sda3 /mnt/home
  5. 进入chroot环境

    • 切换根目录到挂载的文件系统:

      sudo chroot /mnt
  6. 恢复符号链接

  7. 查找系统默认的GLIBC库文件。默认情况下,GLIBC库文件通常在/lib/x86_64-linux-gnu目录中。例如,如果默认的动态链接器文件是ld-2.27.so

    ln -sf /lib/x86_64-linux-gnu/ld-2.27.so /lib64/ld-linux-x86-64.so.2
    • 请根据你的具体系统版本调整文件名。

  8. 退出chroot环境并重启系统

    exit sudo reboot

综上所述:

① Ubuntu 18.04不支持glibc-2.28,这是nodejs的一个关键依赖。因此Ubuntu18.04用户就不要想从源码构建OpenWeb UI了;

② 如果你的服务器出现各种命令都无法使用(Sudo,ls,cp等),怀疑下是不是误改了默认glibc版本;

③ 有些东西要么用虚拟机,要么还是docker好。

怀揣梦想,翻越山海