Skip to content
共绩算力文档中心

云主机如何设置开机自启动程序

在共绩算力平台上,云主机关机后再次开机,环境和数据会保留,但之前运行的进程不会自动恢复。如果您的云主机主要用于运行持续性服务(如 WebUI、API 服务等),每次开机手动启动程序会非常繁琐。

为了实现”开机即运行”,平台支持通过 Supervisord 配置块直接在控制台的”启动参数”中注入自启动逻辑。这种方式无需 SSH 登录机器,操作极简,且支持进程异常自动重启。

  1. 零侵入性:无需修改镜像内部的系统文件,配置完全由控制台下发。
  2. 进程守护:当程序因为内存溢出(OOM)或代码报错异常退出时,系统会自动将其拉起(Auto Restart)。
  3. 日志集成:程序的输出可以直接重定向到标准输出,在控制台的”容器日志”面板即可实时查看,排错极其方便。
  1. 在云主机列表页,点击进入目标实例的详情页。
  2. 切换到 “设置” 选项卡。
  3. 找到 “启动命令配置” 区域。

“运行参数” 文本框中(点击”添加启动参数”展开),直接粘贴您的 Supervisord 配置块。以下是一个标准的 Python 程序配置模板:

[program:my_python_app]
command=python /x/y/z/main.py
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr

⚠️ 重要警告:关于”运行命令” 如果您在”运行参数”中填写了配置,强烈建议同时在”运行命令”框中填写镜像默认的解释器路径(通常为 /bin/bash/usr/bin/supervisord)。如果留空,运行参数可能会覆盖镜像默认的 ENTRYPOINT,导致容器启动失败。

点击右侧的 “保存” 按钮,然后点击页面底部的 “应用修改”。系统会重启云主机,您的程序将在开机后自动运行。


场景一:启动带有虚拟环境的 Python 程序

Section titled “场景一:启动带有虚拟环境的 Python 程序”

如果您使用了 Conda 或 venv,必须在 command 中使用虚拟环境内 Python 解释器的绝对路径,而不能直接写 python

[program:api_service]
command=/opt/conda/envs/myenv/bin/python /data/project/app.py
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr

场景二:启动 ComfyUI / Stable Diffusion WebUI

Section titled “场景二:启动 ComfyUI / Stable Diffusion WebUI”

这类应用通常通过 shell 脚本启动(如 start.shwebui.sh)。

[program:comfyui]
directory=/data/ComfyUI
command=/bin/bash -c "./start.sh --listen --port 8188"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr

如果您需要同时启动一个后端 API 和一个前端页面,可以在同一个文本框内连续粘贴多个配置块。

[program:backend_api]
command=/opt/conda/bin/python /data/backend/main.py
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr
[program:frontend_web]
command=npm run start
directory=/data/frontend
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stderr_logfile=/dev/stderr

Q1:配置了自启动,但程序没有运行,如何排查? :由于我们在配置中将 stdout_logfilestderr_logfile 设置为了/dev/stdout/dev/stderr,程序的所有输出都会被捕获。请前往控制台的”日志/事件/终端 -> 容器日志”面板,您会直接看到报错信息(如”文件不存在”、“ModuleNotFoundError”等)。

Q2:日志显示 can't find command :这通常是因为环境变量没有加载。Supervisord 启动进程时,默认只有极少的环境变量。强烈建议在 command中使用绝对路径(例如 /usr/local/bin/node 而不是 node)。

Q3:为什么配置后云主机一直处于”启动中”或不断重启? :可能是您的程序启动即崩溃,触发了 autorestart=true的无限循环。请立即前往”容器日志”面板,勾选**“显示上一个容器退出时的日志”**,查看导致崩溃的致命报错。