无docker部署anythingllm
时间: 2024-12-27 13:20:59 浏览: 13
### 不使用Docker部署AnythingLLM
#### 准备环境
为了不在容器环境下运行 AnythingLLM,需先确认目标机器已安装必要的依赖项。这通常涉及 Python 及其开发包、pip 工具以及特定于项目的其他依赖关系。
对于 Linux 环境而言,可以通过命令行工具来完成这些准备工作:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools
```
#### 获取源码并配置虚拟环境
获取 AnythingLLM 的最新版本可以从 GitHub 或者官方提供的其它途径获得。假设已经获得了源代码压缩文件或克隆了仓库到本地目录 `/path/to/anythingllm` 下面,则继续设置一个隔离的工作区以避免污染全局 Python 包管理器。
进入项目根目录创建一个新的虚拟环境,并激活它:
```bash
cd /path/to/anythingllm
python3 -m venv ./venv
source ./venv/bin/activate
```
#### 安装Python依赖
在激活后的虚拟环境中,利用 `requirements.txt` 文件中的列表来安装所需的 Python 库和其他资源。
```bash
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
```
#### 配置存储位置与环境变量
由于不再采用 Docker 卷映射的方式指定数据保存路径,在裸机上需要手动定义相应的文件夹用于持久化数据。例如,可以在 `/var/lib/anythingllm-my` 创建新的工作空间作为替代方案。
接着编辑 `.env` 文件设定关键参数如端口号等信息以便后续启动服务时读取。
#### 修改启动脚本适应无Docker场景
原本适用于 Docker Compose 或直接调用 `docker run` 命令的形式现在要转换成适合原生操作系统的服务进程控制方法。比如编写 Systemd service unit 来实现后台常驻运行;或者简单地通过 nohup/nohub 方式让应用保持在线状态直到人为停止。
这里提供了一个简单的 systemd 服务单元模板供参考[^2]:
```ini
[Unit]
Description=AnythingLLM Service Without Docker
After=syslog.target network.target
[Service]
User=nobody
WorkingDirectory=/path/to/anythingllm
ExecStart=/path/to/anythingllm/venv/bin/python main.py
Restart=on-failure
EnvironmentFile=-/etc/sysconfig/anythingllm-envvars
[Install]
WantedBy=multi-user.target
```
将上述内容保存为 `/etc/systemd/system/anythingllm.service` 并重新加载守护程序使更改生效:
```bash
sudo systemctl daemon-reload
sudo systemctl enable anythingllm.service
sudo systemctl start anythingllm.service
```
最后验证服务是否正常运作即可。
阅读全文