如何在 Linux 上将 One API 可执行文件注册为 systemd 后台服务并自动重启
2026/9/19 22:17:21 网站建设 项目流程

如何在 Linux 上将 One API 可执行文件注册为 systemd 后台服务并自动重启

【免费下载链接】one-apiLLM API 管理 & 分发系统,支持 OpenAI、Azure、Anthropic Claude、Google Gemini、DeepSeek、字节豆包、ChatGLM、文心一言、讯飞星火、通义千问、360 智脑、腾讯混元等主流模型,统一 API 适配,可用于 key 管理与二次分发。单可执行文件,提供 Docker 镜像,一键部署,开箱即用。LLM API management & key redistribution system, unifying multiple providers under a single API. Single binary, Docker-ready, with an English UI.项目地址: https://gitcode.com/GitHub_Trending/on/one-api

One API 是一个 LLM API 管理与分发系统,把 OpenAI、Anthropic Claude、Google Gemini、DeepSeek 等各家模型统一成标准 OpenAI API 格式,单文件即可运行。手动部署时它只能靠一条前台命令./one-api跑起来,终端一断服务就没了。仓库提供了现成的 systemd 单元文件 one-api.service,把可执行文件注册成系统服务后,One API 可以随开机自启,进程异常退出时由 systemd 自动拉起。本文基于 README.md 的“手动部署”一節与仓库内的one-api.service文件,给出从拿到可执行文件到验证服务运行的完整路径。

准备条件:获取 one-api 可执行文件

注册服务之前,服务器上必须先有一个可运行的one-api可执行文件。README 的手动部署章节给出两种来源:

  1. 从 GitHub Releases 下载编译好的可执行文件;
  2. 或者从源码编译:
git clone https://github.com/songquanpeng/one-api.git # 构建前端 cd one-api/web/default npm install npm run build # 构建后端 cd ../.. go mod download go build -ldflags "-s -w" -o one-api

README 给出的手动运行方式是:

chmod u+x one-api ./one-api --port 3000 --log-dir ./logs

如果这条前台命令能正常跑起来、浏览器访问http://localhost:3000/能看到页面,就可以把它注册为服务了。--port指定监听端口(默认3000),--log-dir指定日志文件夹(不设置时默认保存在工作目录的logs文件夹下),这两个参数在稍后的服务文件里还会用到。

编写 systemd 服务文件

仓库根目录的 one-api.service 就是可直接使用的单元文件,文件开头的注释明确了存放路径和后续操作命令。将其内容放到目标服务器的/etc/systemd/system/one-api.service

# File path: /etc/systemd/system/one-api.service # sudo systemctl daemon-reload # sudo systemctl start one-api # sudo systemctl enable one-api # sudo systemctl status one-api [Unit] Description=One API Service After=network.target [Service] User=ubuntu # 注意修改用户名 WorkingDirectory=/path/to/one-api # 注意修改路径 ExecStart=/path/to/one-api/one-api --port 3000 --log-dir /path/to/one-api/logs # 注意修改路径和端口号 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target

文件里的三处占位符必须改成你的实际环境,这也是源文件注释“注意修改用户名 / 注意修改路径”所提示的:

位置源文件原值替换为
User=ubuntu运行服务的系统用户名
WorkingDirectory=/path/to/one-apione-api 可执行文件所在目录的绝对路径
ExecStart=中的可执行文件与日志路径/path/to/one-api/one-api--log-dir /path/to/one-api/logs可执行文件完整路径,以及日志目录的绝对路径

--port 3000同样按注释要求修改成实际监听端口。两处/path/to/one-api应指向同一个目录:WorkingDirectory决定程序的工作目录(未设置--log-dir时日志也默认落在这里的logs子目录),显式传--log-dir后日志则写到指定目录。

自动重启由[Service]段的两行实现:Restart=always让 systemd 在进程退出后重新拉起,RestartSec=5表示重启前等待 5 秒。[Install]段的WantedBy=multi-user.target则是开机自启的依据,缺了它systemctl enable不会生效。

加载并启动服务

修改完成后的四条命令就是one-api.service文件开头注释里给出的操作顺序:

sudo systemctl daemon-reload sudo systemctl start one-api sudo systemctl enable one-api sudo systemctl status one-api
  • daemon-reload:让 systemd 重新读取单元文件,首次安装和之后每次改动one-api.service都要执行;
  • start:立即启动服务;
  • enable:建立开机自启,之后重启服务器时服务会自动拉起;
  • status:查看当前运行状态,判断前几步是否成功。

如果start之后status显示进程不在运行,优先核对单元文件里三个已修改的项是否与实际环境一致(用户名是否存在、可执行文件路径是否正确、--port端口是否被占用),这是单元文件中直接影响启动成功的字段。

验证服务与登录系统

服务状态正常后,按 README 的手动部署步骤 3 做功能验证:访问 http://localhost:3000/ 并登录,初始账号用户名为root,密码为123456。页面能打开、能登录即说明服务以 systemd 方式跑通。

README 特别提醒:使用 root 用户初次登录系统后,务必修改默认密码123456

自动重启行为不需要专门配置其他项——单元文件里的Restart=alwaysRestartSec=5已覆盖“进程退出后自动拉起”这一需求;进程被 systemd 正常stop后不会重启,这属于Restart=always之外的 systemd 语义,文档未展开说明。

后续维护与限制

  • 更新可执行文件:把新版one-api文件覆盖到原路径后,需要让 systemd 重新加载单元并重启服务,命令即单元文件注释中的sudo systemctl daemon-reload加一次 stop/start;数据保存在工作目录(WorkingDirectory)下,更新前确认新文件放在同一目录,避免路径变化导致数据“丢失”。
  • 数据库:服务方式本身不改变存储行为。README 在环境变量一节要求:并发量较大时务必设置SQL_DSN使用 MySQL 而非 SQLite;SQLite 方案下要确保工作目录可持久化。通过 systemd 部署时没有docker run -e可用,相应环境变量需写在[Service]段内(如SQL_DSN="root:123456@tcp(localhost:3306)/oneapi"),修改后同样执行daemon-reload再重启。
  • 多机部署:如果这台机器是从服务器,还需按 README“多机部署”一节设置SESSION_SECRETSQL_DSNNODE_TYPE=slave等,同样落在单元文件的[Service]段。

完成以上步骤后,systemctl status one-api显示服务在运行、http://localhost:3000/可登录,即完成了可执行文件的 systemd 注册;此后服务器重启和进程意外退出都由 systemd 接管。

【免费下载链接】one-apiLLM API 管理 & 分发系统,支持 OpenAI、Azure、Anthropic Claude、Google Gemini、DeepSeek、字节豆包、ChatGLM、文心一言、讯飞星火、通义千问、360 智脑、腾讯混元等主流模型,统一 API 适配,可用于 key 管理与二次分发。单可执行文件,提供 Docker 镜像,一键部署,开箱即用。LLM API management & key redistribution system, unifying multiple providers under a single API. Single binary, Docker-ready, with an English UI.项目地址: https://gitcode.com/GitHub_Trending/on/one-api

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询