文章更新于 2025.11.10,请参阅评论。
引言
本文将介绍如何在 Ubuntu 25.04 环境中将 LM Studio 作为服务部署(可能也适用于其他版本)。
LM Studio 作为服务器不仅可以加载语言模型并单独使用它们,还可以组织 API 以连接外部服务。同时,可以通过停止服务并将应用程序以常规方式启动来恢复到本地工作模式。
您将能够:
- 使用不同的语言模型 (按需卸载未使用模型)
- 将您的应用程序或插件连接到 API
下载
从网站下载 AppImage(本文讨论的是 Linux 应用程序):
将文件放置在 ~/llm 目录中,并使其可执行:
chmod +x ~/llm/LM-Studio-0.3.27-4-x64.AppImage
撰写本文时,该版本是最新的。
headless
只有在远程工作时才需要以服务形式部署。 立即确定:
a) 服务器(PC/笔记本电脑等)有图形界面并且用户至少已经登录过 UI 一次。 或者如果您在 UI 中工作,请跳过此步骤。
b) 服务器没有图形界面或用户从未登录过 UI。 在这种情况下,需要执行以下几个额外的命令一次:
sudo loginctl enable-linger $USER
此命令允许您在不进入图形界面的情况下使用环境工作
loginctl show-user ivan | grep Linger
此命令显示配置状态(活动或不可用):
Linger=yes
检查没有阻止任何事情发生的命令(输出应为某种可理解的状态,例如 degraded,但不允许出现错误):
systemctl --user status
systemctl --user is-system-running
systemd
如果您还没有决定使用 headless 模式(无图形界面),请跳过此步骤。
如果自动启动是您的首选,那么请创建一个脚本:
~/.config/systemd/user/lm-studio.service
并且假设 LM Studio 可执行文件位于以下地址:
%HOME/llm/LM-Studio-0.3.27-4-x64.AppImage
内容如下:
[Unit]
Description=LM Studio Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/xvfb-run -a --server-args="-screen 0 1920x1080x24" %h/llm/LM-Studio-0.3.27-4-x64.AppImage --run-as-service
ExecStartPost=/bin/bash -c 'sleep 10 && exec lms server start'
Restart=always
RestartSec=10
Environment=PATH=%h/.local/bin:/usr/local/bin:/usr/bin:/bin:%h/.lmstudio/bin
Environment=DISPLAY=:99
WorkingDirectory=%h/llm
[Install]
WantedBy=default.target
该脚本由两部分组成:
- 启动应用程序
- 启动服务器端
本质上,这种脚本是脆弱的,因为它由不了解彼此状态的两部分组成。 请勿在生产环境中使用此类解决方案。 而且 LM Studio 也不要使用,因为 VLLM 快得多。
请注意,此处将安装 systemd 为用户而不是 root。
执行常规操作以启动脚本(应用更改并启用自动启动):
systemctl --user daemon-reload
systemctl --user enable --now lm-studio.service
启动
systemctl --user status lm-studio.service
服务现在应该保持沉默,因为尚未启动过它。
systemctl --user start lm-studio.service
然后检查服务器状态:
lms server status
它应该正在监听 1234 端口。
严格来说,您应该首先使用 LM Studio 的 UI 来设置所需的参数并加载模型。 以及将侦听地址从 127.0.0.1 更改为 0.0.0.0,以便组织外部 API 连接(潜在危险,因为首先安装加密和授权)。
CURL
检查服务器端点:
curl -v http://127.0.0.1:1234/v1/models
您应该会收到可用的模型:
* Trying 127.0.0.1:1234...
* Connected to 127.0.0.1 (127.0.0.1) port 1234
* using HTTP/1.x
> GET /v1/models HTTP/1.1
> Host: 127.0.0.1:1234
> User-Agent: curl/8.12.1
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 200 OK
<
{
"data": [
{
"id": "nvidia_nvidia-nemotron-nano-9b-v2",
"object": "model",
"owned_by": "organization_owner"
},
{
"id": "text-embedding-qwen3-embedding-0.6b",
"object": "model",
"owned_by": "organization_owner"
},
{
"id": "qwen/qwen3-8b",
"object": "model",
"owned_by": "organization_owner"
},
{
"id": "google/gemma-3-4b",
"object": "model",
"owned_by": "organization_owner"
}
],
"object": "list"
* Connection #0 to host 127.0.0.1 left intact
REST API
现在您可以连接到您的 REST API,使用以下端点:
GET http://127.0.0.1:1234/v1/models
POST http://127.0.0.1:1234/v1/chat/completions
POST http://127.0.0.1:1234/v1/completions
POST http://127.0.0.1:1234/v1/embeddings
