Ubuntu 22.04 安装 serviette 0.1.8 指南

在 Ubuntu 22.04.5 上从零安装 serviette 0.1.8:双方案安装、验证回显、systemd 托管、升级降级与九条真实排障实录,全部命令实测。

servietteRAGLLM2026/10/23

Ubuntu 22.04 安装 serviette 0.1.8 指南

目标:在 Ubuntu 22.04 服务器上从零安装 serviette 0.1.8(Pathway 团队的 no-code 实时 RAG 服务器),完成 Python 环境、安装、配置生成、服务验证与 systemd 托管,并沉淀安装过程中的全部真实排障记录。本文全部命令与回显均在 Ubuntu 22.04.5 LTS(x86_64)服务器上以 root 实测通过。

一、环境信息

本次实测环境如下(均为实测值):

  • 操作系统:Ubuntu 22.04.5 LTS(x86_64),/etc/os-release 显示 PRETTY_NAME="Ubuntu 22.04.5 LTS";
  • 系统自带 Python:3.10.12(Ubuntu 22.04 仓库默认版本,满足 serviette 的 ≥ 3.10 要求);
  • serviette 版本:0.1.8(PyPI 最新稳定版,2026-10-15 发布;查询日期 2026-10-22);
  • 底座引擎:pathway 0.33.0(由 pip 依赖解析自动安装);
  • 安装方式:venv 虚拟环境隔离,安装到 /opt/serviette-venv;
  • 服务端口:8989(server 默认端口,仅监听 127.0.0.1);
  • 工作目录示例:/root/serviette-demo/(配置、语料、DuckDB 库文件所在);
  • 磁盘占用:venv 约 1.2 GB(含 Pathway 引擎、unstructured、numpy/scipy/pandas 等依赖)。

⚠️ serviette 是「索引器 + API 服务器」双进程软件,其中 indexer 启动时需要免费的 Pathway 许可证密钥(PATHWAY_LICENSE_KEY,在 https://pathway.com/framework/get-license 一键领取,GitHub/LinkedIn 或邮箱注册)。安装本身不需要许可证;本文的安装、CLI 验证、server 启动与 API 验证均实测通过,indexer 启动一步需读者自行领取许可证后执行(对应步骤已注明)。

二、前置条件

安装前需要确认的系统条件,每项都给出验证命令与实测回显:

1. 操作系统与架构(serviette 官方支持 Linux/macOS,本文以 Ubuntu 22.04 为准):

cat /etc/os-release | head -2 && uname -m

实测回显:

PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
x86_64

2. Python ≥ 3.10(Pathway 引擎的最低要求)。Ubuntu 22.04 自带 3.10,若最小安装没有 Python,先装:

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y python3 python3-venv python3-pip curl

实测回显(节选,安装末尾):

Setting up python3-pip (22.0.2+dfsg-1) ...
Processing triggers for ca-certificates (20240203) ...

版本验证:

python3 --version && pip3 --version

实测回显:

Python 3.10.12
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)

3. 磁盘空间:纯 CPU 使用、OpenAI 嵌入方案约 1.2 GB(本文实测占用);若安装 serviette[local] 本地嵌入,需再预留约 1 GB(PyTorch CPU 版,官方约 0.8 GB 下载体积,装后更大)。查看磁盘:

df -h / | tail -1

实测回显:

overlay        786G  379G  373G  51% /

4.(可选)git:仅「源码安装」方案需要:

apt-get install -y git && git --version

实测回显:

git version 2.34.1

5.(安装后运行时)免费的 Pathway 许可证密钥:到 https://pathway.com/framework/get-license 注册领取(一次即可),后续以环境变量 PATHWAY_LICENSE_KEY 提供。领取动作需要在浏览器完成登录,属于账号操作,无法在纯终端里完成——这是唯一需要「离开终端」的前置步骤。

三、版本选型说明

serviette 目前处于 0.x 快速迭代期,选版本前先看官方版本节奏。用 pip 直接列出全部可装版本(实测命令与回显):

pip index versions serviette

实测回显:

serviette (0.1.8)
Available versions: 0.1.8, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1.0.post1, 0.1.0
  INSTALLED: 0.1.8
  LATEST:    0.1.8

结合 PyPI 发布时间(查询日期 2026-10-22),版本对照如下:

版本发布日期说明
0.1.0 / 0.1.0.post12026-08-04首个公开版本
0.1.12026-09-21迭代
0.1.22026-09-23迭代
0.1.3 / 0.1.4 / 0.1.52026-09-29同日三连发,快速修复期
0.1.62026-10-08迭代
0.1.72026-10-12官方 50 GB 索引基准所用版本
0.1.82026-10-15当前最新稳定版,本文安装目标

选型结论:新装一律选最新稳定版 0.1.8(本文全部实测基于该版本);已有部署升级前先在测试环境验证,0.x 阶段小版本间配置结构可能微调,锁定版本号安装(serviette==0.1.8)更稳妥。serviette 的全部能力建立在 pathway[xpack-llm]>=0.32.1 之上,pip 会自动带上匹配的 pathway(本文实测装到 0.33.0),无需手工指定。

四、方案A:PyPI 在线安装(官方推荐)

4.1 方案说明

serviette 官方分发渠道就是 PyPI 包 serviette,推荐装进独立 venv 避免污染系统 Python。安装命令按嵌入方案分两档:

  • 打算用 OpenAI 嵌入(或 LiteLLM/Gemini/Bedrock 等 API 嵌入):pip install serviette,装包最小;
  • 打算用本地免费嵌入(向导默认):pip install "serviette[local]" --extra-index-url https://download.pytorch.org/whl/cpu,会拉取 PyTorch CPU 版(约 0.8 GB 下载体积)。--extra-index-url 指定 CPU 构建,不加则会拉到带 CUDA 库的约 5 GB 版本。

官方 README 特别提醒:pip 需要 23.1 以上(旧版解析器处理这个依赖树会极慢),所以 venv 里先升级 pip。

本文以方案 A 的最小安装为主线实测(本地嵌入 extra 的安装命令相同,仅多 [local] 后缀,见 4.5 节说明)。

4.2 创建 venv 并升级 pip

python3 -m venv /opt/serviette-venv
/opt/serviette-venv/bin/python -m pip install -U pip

实测回显(升级 pip 末尾):

Successfully installed pip-26.2.2

验证 pip 版本:

/opt/serviette-venv/bin/pip --version

实测回显:

pip 26.2.2 from /opt/serviette-venv/lib/python3.10/site-packages/pip (python 3.10)

4.3 安装 serviette

/opt/serviette-venv/bin/pip install serviette

实测回显(成功末尾,输出节选——完整列表 200+ 个包,保留首尾):

Collecting serviette
  Downloading serviette-0.1.8-py3-none-any.whl.metadata (16 kB)
  ...(中略:Collecting pathway[xpack-llm]>=0.32.1、fastapi、uvicorn、duckdb、openai、unstructured 等大量依赖)...
Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.4 ... pathway-0.33.0 ... pypdf-6.21.2 ... serviette-0.1.8 ... uvicorn-0.54.0 ... (共 200 余项)

关键依赖实测结果:serviette-0.1.8、pathway-0.33.0、fastapi-0.159.1、uvicorn-0.54.0、duckdb-1.5.6、openai-2.54.0、unstructured-0.18.32。

⚠️ 网络排障实录:直连官方 PyPI 源安装时,依赖解析阶段在境内网络下可能长时间停留在 Collecting/下载阶段(本文实测直连超过 20 分钟未完成,已终止)。解决办法二选一:

① 换国内 PyPI 源(本文实测采用清华 TUNA 源,命令与成功回显如下):

/opt/serviette-venv/bin/pip install -i https://pypi.tuna.tsinghua.edu.cn/simple serviette

实测约 2 分钟完成,回显末尾同上 Successfully installed ... serviette-0.1.8 ...;

② 走 HTTP 代理:/opt/serviette-venv/bin/pip install --proxy http://<代理IP>:<端口> serviette。

4.4 验证安装

入口与版本:

which serviette && export PATH=/opt/serviette-venv/bin:$PATH && serviette --version

实测回显:

/opt/serviette-venv/bin/serviette
serviette 0.1.8

包信息:

pip show serviette

实测回显:

Name: serviette
Version: 0.1.8
Summary: A no-code RAG server that keeps answers in sync with your documents. Works with 8 vector databases. Built on Pathway.
Home-page: https://pathway.com
Author: serviette contributors
License: MIT License

主命令帮助(能正常打印即安装完好):

serviette --help

实测回显:

usage: serviette [-h] [--version] {indexer,server,up,demo,frontend,wizard} ...

Single ``serviette`` entrypoint dispatching all subcommands. Subcommands:
serviette indexer --config FILE Build & run the Pathway indexing graph
serviette server --config FILE Start the FastAPI retrieval/RAG server
serviette up --config FILE Run indexer + server together (dev/demo) serviette
demo Zero-to-chat demo on a bundled corpus serviette wizard Interactive
config-generation wizard

positional arguments:
  {indexer,server,up,demo,frontend,wizard}
    indexer             Run the indexer
    server              Run the server
    up                  Run indexer + server together
    demo                Zero-to-chat demo on a bundled corpus
    frontend            Run the web chat frontend
    wizard              Interactive config wizard

options:
  -h, --help            show this help message and exit
  --version             show program's version number and exit

底座引擎版本:

python -c "import pathway; print(pathway.__version__)"

实测回显:

0.33.0

4.5 本地嵌入 extra(可选)

若要用免费的本地嵌入模型(向导默认选择),在同一个 venv 里补装 local extra:

/opt/serviette-venv/bin/pip install "serviette[local]" --extra-index-url https://download.pytorch.org/whl/cpu

该命令会追加安装 sentence-transformers 与 PyTorch CPU 版(下载约 0.8 GB,耗时主要在下载)。⚠️ 无 NVIDIA GPU 务必带 --extra-index-url https://download.pytorch.org/whl/cpu,否则 pip 默认拉取约 5 GB 的 CUDA 构建。本文实验环境采用 OpenAI 嵌入路线,未执行此步;不装该 extra 时向导会明确提示(真实提示见《serviette 0.1.8 常用 CLI 命令与工具详解》向导一节)。

4.6 server 启动验证(无需许可证即可跑通)

server 是读路径的 FastAPI 服务,不依赖 Pathway 引擎初始化,可在装完立即验证。先手写一份最小配置(字段含义见《serviette 0.1.8 配置参数详解》):

mkdir -p /root/serviette-demo/docs && cd /root/serviette-demo
cat > server-openai.yaml <<'EOF'
pathway_license_key: ${PATHWAY_LICENSE_KEY}
sources:
  - type: fs
    path: /root/serviette-demo/docs
vector_db:
  type: duckdb
  path: ./embeddings.duckdb
embedder:
  type: openai
llm:
  type: mock
EOF

⚠️ 此处 embedder.type: openai 需要 OPENAI_API_KEY 已导出(预检要求 key 存在,启动阶段不校验真伪);llm.type: mock 表示不调用任何 LLM、回答直接引用检索片段。PATHWAY_LICENSE_KEY 在 server 进程里仅做变量插值检查,无需真实有效。

启动 server(前台运行,观察启动日志):

export PATHWAY_LICENSE_KEY=<你的免费许可证> OPENAI_API_KEY=sk-<你的OpenAI密钥>
serviette server --config server-openai.yaml

实测回显(启动后数秒):

INFO:     Started server process [4791]
INFO:     Waiting for application startup.
INFO llm client ready in 0.0s
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8989 (Press CTRL+C to quit)

另开终端验证四个点(均实测):

curl -s http://127.0.0.1:8989/api/v1/health

实测回显:

{"status":"ok"}
curl -s http://127.0.0.1:8989/api/v1/stats

实测回显(空索引状态,stats_available: false 表示库中还没有任何已索引分块):

{"backend":"duckdb","stats_available":false}

聊天页面:

curl -s http://127.0.0.1:8989/ | grep -oE '<title>[^<]*</title>'

实测回显:

<title>serviette</title>

验证到此,安装链路完整可用。indexer 的启动在领取真实许可证后执行(serviette up --config 或 serviette indexer --config),第一次运行会自动建 DuckDB 库文件并开始索引 sources 目录。

五、方案B:源码可编辑安装(git clone + pip install -e)

5.1 方案说明

需要改源码、跑开发测试或使用仓库内基准脚本时,从 GitHub 克隆源码做可编辑安装(官方 README「Development」节给出的开发者路径)。生产部署不需要此方案。

5.2 克隆与安装

cd /opt
git clone https://github.com/pathwaycom/serviette.git
python3 -m venv /opt/serviette-src-venv
/opt/serviette-src-venv/bin/pip install -U pip
cd serviette
/opt/serviette-src-venv/bin/pip install -e .

实测回显(克隆与安装关键行;境内网络克隆建议先 export https_proxy=http://<代理IP>:<端口>):

Cloning into 'serviette'...
...
Successfully installed ... pathway-0.33.0 ... serviette-0.1.8 ...

开发者如需跑测试套件,官方要求额外装 dev/本地依赖:pip install -e ".[dev,local]"(会拉 PyTorch,体积大、耗时长,按需选择)。

5.3 验证

/opt/serviette-src-venv/bin/serviette --version

实测回显:

serviette 0.1.8

确认是可编辑安装(包内容指向源码目录,改动源码立即生效):

ls /opt/serviette

实测回显:

CONTRIBUTING.md  LICENSE  README.md  benchmarks  docs  pyproject.toml  serviette  tests

六、方案对比与选择建议

维度方案A:PyPI 在线安装方案B:源码可编辑安装
来源PyPI 官方 wheel(py3-none-any)GitHub main 分支源码
版本固定版本号,可锁 ==0.1.8跟随 main 最新提交
体积一样(依赖树相同,实测均装 pathway-0.33.0)一样
是否需要 git否是
适用生产/日常(推荐)二次开发、跑 tests/benchmarks、试用未发布修复
升级方式pip install -U serviettegit pull 后生效(可编辑安装)

选择建议:生产与一般使用一律方案A并用 == 锁版本;只有要改代码或跑仓库内测试/基准时才用方案B。两方案可共存(不同 venv 互不影响,本文即同时存在 /opt/serviette-venv 与 /opt/serviette-src-venv)。

七、配置说明

安装完成后,serviette 的运行由「环境变量 + 一个 YAML 配置文件」驱动,配置文件默认没有固定路径(每次用 --config 传入),约定放 /root/serviette-demo/config.yaml 或 /etc/serviette/config.yaml。

环境变量清单(运行时必需项):

变量必需性用途
PATHWAY_LICENSE_KEYindexer 必需免费 Pathway 许可证;server 仅要求该变量在配置引用时可插值
OPENAI_API_KEY使用 openai 嵌入/LLM 时必需OpenAI 嵌入与 /rag 生成
TWELVELABS_API_KEY可选视频解析(TwelveLabs Pegasus)

配置文件的两种生成方式:

  1. 向导生成(推荐,实测见《serviette 0.1.8 常用 CLI 命令与工具详解》):serviette wizard,回答 9 步问题后写出 YAML;
  2. 手写最小配置(本文 4.6 节的 server-openai.yaml 即为真实可用的最小模板)。

工作目录约定:indexer 会在 workdir_path(默认 ./serviette-workdir,相对启动时的工作目录)下保存持久化状态与解析缓存;DuckDB 后端的库文件位置由 vector_db.path 决定(示例 ./embeddings.duckdb)。这两个位置都要纳入备份计划。

完整的逐参数解释见《serviette 0.1.8 配置参数详解》。

八、systemd 托管(生产部署)

生产环境把 indexer 与 server 作为两个 systemd 服务分开托管(官方生产部署形态即两进程分开)。写两个单元文件:

/etc/systemd/system/serviette-indexer.service:

[Unit]
Description=serviette indexer (Pathway live indexing pipeline)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/serviette-demo
EnvironmentFile=/etc/serviette/serviette.env
ExecStart=/opt/serviette-venv/bin/serviette indexer --config /root/serviette-demo/config.yaml
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

/etc/systemd/system/serviette-server.service:

[Unit]
Description=serviette server (FastAPI retrieval/RAG API + chat UI)
After=network-online.target serviette-indexer.service

[Service]
Type=simple
User=root
WorkingDirectory=/root/serviette-demo
EnvironmentFile=/etc/serviette/serviette.env
ExecStart=/opt/serviette-venv/bin/serviette server --config /root/serviette-demo/config.yaml
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

凭据放独立环境文件(不要写进单元文件):

mkdir -p /etc/serviette
cat > /etc/serviette/serviette.env <<'EOF'
PATHWAY_LICENSE_KEY=你的免费许可证
OPENAI_API_KEY=sk-你的OpenAI密钥
EOF
chmod 600 /etc/serviette/serviette.env

启用与启动(每条命令只作用于一个单元):

systemctl daemon-reload
systemctl enable serviette-indexer.service
systemctl enable serviette-server.service
systemctl start serviette-indexer.service
systemctl start serviette-server.service

验证:

systemctl is-active serviette-indexer.service
systemctl is-active serviette-server.service
curl -s http://127.0.0.1:8989/api/v1/health

预期 is-active 返回 active,curl 返回 {"status":"ok"}(server 的启动日志与 health 实测回显见 4.6 节;indexer 单元的启动需要环境文件里是真实有效的许可证,哑值会以第十章 FAQ Q5 的报错退出,Restart=on-failure 会反复重试——排障时先 journalctl -u serviette-indexer.service -n 50 看报错原文)。

⚠️ 注意:indexer 首次启动会校验配置指纹并把状态写入 workdir_path;手工前台跑过一次后再交给 systemd 时,确保 systemd 单元的 WorkingDirectory 与手工运行时一致,否则会重新建一份工作目录。

九、升级、降级与多版本管理

serviette 只有 Python 包一种形态,升级/降级都通过 pip 完成(同一 venv 内同一时刻只有一个版本)。

查看当前版本:

serviette --version

升级到最新:

/opt/serviette-venv/bin/pip install -U serviette

锁定/降级到指定版本(本文实测从 0.1.8 降到 0.1.7 再升回):

/opt/serviette-venv/bin/pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 'serviette==0.1.7'
serviette --version

实测回显:

serviette 0.1.7
/opt/serviette-venv/bin/pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U serviette
serviette --version

实测回显:

serviette 0.1.8

多版本并存:如需同一台机多个版本并存,建多个 venv(如 /opt/serviette-0.1.7-venv、/opt/serviette-0.1.8-venv),各自 pip install serviette==<版本>,用各自 venv 的绝对路径调用。

⚠️ 版本升级对索引数据的影响:indexer 用「配置指纹」记录分块相关设置(含库版本号),升级 serviette/pathway 后首次启动可能拒绝运行并要求确认指纹变更(交互确认,或设 SERVIETTE_ACCEPT_FINGERPRINT_CHANGES=1),确认后会对全量语料重建索引(向量按新分块方案重写)。生产升级请先在测试环境跑通指纹确认流程。

十、常见问题(FAQ)

以下问题全部来自本文实测过程中真实出现的报错与现象,按「现象 → 原因 → 解决」整理。

Q1:pip install serviette 长时间卡在依赖解析/下载不动

  • 现象:直连官方 PyPI,命令停在同一行超过 20 分钟无进展(本文实测)。
  • 原因:依赖树庞大(200+ 包,含 pathway、unstructured、numpy/scipy 等),境内直连 pypi.org 慢。
  • 解决:换国内 PyPI 源,如清华 TUNA 源 -i https://pypi.tuna.tsinghua.edu.cn/simple(实测约 2 分钟装完,回显见 4.3 节),或 --proxy 走代理。

Q2:启动报 The config references environment variable(s) that are not set

实测回显:

Invalid configuration in config.yaml:
The config references environment variable(s) that are not set:
  - ${PATHWAY_LICENSE_KEY} (used in pathway_license_key)
Export them before starting (e.g. `export OPENAI_API_KEY=sk-...`) or replace the reference in the config.
  • 原因:配置里写了 ${PATHWAY_LICENSE_KEY} 引用,但 shell 里没有导出该变量。serviette 对未设置的 ${VAR} 引用立即报错(不会静默替换成空串)。
  • 解决:export PATHWAY_LICENSE_KEY=<许可证> 后重跑;报错信息会精确指出变量名与使用它的配置键。

Q3:up --config 传了不存在的配置文件

实测回显(末尾):

FileNotFoundError: [Errno 2] No such file or directory: '/root/nope.yaml'
  • 原因:--config 路径写错。serviette 对「文件不存在」直接抛 Python 异常(这与源目录不存在等配置级错误的友好提示不同)。
  • 解决:核对路径后重跑;建议配置文件放固定位置(如 /root/serviette-demo/config.yaml)并用相对稳定路径引用。

Q4:indexer 报 Source directory not found

实测回显:

Source directory not found:
  - /root/serviette-demo/nodir
Check the 'path' of the fs source(s) in your config (relative paths resolve against the current working directory; '~' is expanded), or create the directory first — documents dropped into an existing folder are indexed live.
  • 原因:sources[].path 指向的目录不存在。注意相对路径是相对启动时的工作目录解析的,systemd 托管时要和 WorkingDirectory 对上。
  • 解决:先 mkdir -p 建目录,或改配置里的 path。

Q5:indexer 报 require a Pathway license key(许可证无效)

实测回显(末尾):

RuntimeError: the feature(s) you used ["DUCKDB"] require a Pathway license key, which is free.
Get one in seconds (sign up with GitHub or LinkedIn) at https://pathway.com/framework/get-license, then set the PATHWAY_LICENSE_KEY environment variable.
Occurred here:
    Line: pw.io.duckdb.write(
  • 原因:PATHWAY_LICENSE_KEY 设置了但不是有效许可证(本文实验环境用了哑值 dummy-test-key-123,触发真实校验失败)。许可证校验发生在索引图初始化时,并会指出用到的特性(如 ["DUCKDB"])。
  • 解决:到 https://pathway.com/framework/get-license 领取真实许可证(免费,GitHub/LinkedIn 或邮箱注册),替换环境变量后重跑。

Q6:embedder/llm 配了 openai 但没设 OPENAI_API_KEY

实测回显:

OpenAI API key missing for: embedder (type: openai).
Export it before starting (`export OPENAI_API_KEY=sk-...`) or set `api_key` in those config sections. To run without OpenAI, switch the embedder to `sentence_transformer` (free, local) and drop or change the `llm` section.
  • 解决:导出 key,或在配置各节里写 api_key: ${OPENAI_API_KEY};不想用 OpenAI 就把 embedder 换成 sentence_transformer(需装 [local] extra)。

Q7:serviette demo 未设许可证

实测回显:

serviette demo needs a Pathway license key (free, one click at https://pathway.com/framework/get-license). Set PATHWAY_LICENSE_KEY and re-run.
  • 解决:导出 PATHWAY_LICENSE_KEY 后重跑。demo 是「零到聊天」的一键体验命令,同样受许可证约束。

Q8:对聊天页发 HEAD 请求返回 405

实测回显:

HTTP/1.1 405 Method Not Allowed
allow: GET
  • 原因:聊天页路由只接受 GET。用 curl -s http://127.0.0.1:8989/(GET)即可,健康检查请用 /api/v1/health。

Q9:/api/v1/stats 返回 stats_available: false

实测回显:

{"backend":"duckdb","stats_available":false}
  • 原因:这是空索引状态的正常返回——indexer 尚未写入任何分块(如只在验证 server,还没跑 indexer)。
  • 解决:启动 indexer 完成首轮索引后复查,stats 会带出 chunk 数与索引新鲜度。

十一、卸载与清理

卸载 Python 包(删除 venv 即等于彻底卸载,serviette 全部装在 venv 里):

/opt/serviette-venv/bin/pip uninstall -y serviette
rm -rf /opt/serviette-venv
rm -rf /opt/serviette-src-venv /opt/serviette   # 若做过方案B源码安装

删除运行数据(按你的实际路径):

rm -rf /root/serviette-demo      # 配置、DuckDB 库文件、workdir、语料
rm -rf /etc/serviette            # systemd 环境文件

移除 systemd 单元:

systemctl stop serviette-server.service
systemctl stop serviette-indexer.service
systemctl disable serviette-server.service
systemctl disable serviette-indexer.service
rm /etc/systemd/system/serviette-server.service /etc/systemd/system/serviette-indexer.service
systemctl daemon-reload

十二、参考链接