NSSM--实现应用程序注册为Windows 系统服务

在 Windows 系统中,要让 Celery、Flask、Redis 这些程序脱离 CMD 窗口、后台常驻运行,核心是将它们注册为Windows 系统服务(Service)—— 这是 Windows 官方的后台运行方案,开机自启、关闭 CMD 不影响,还能通过服务管理器管理。

前置准备:下载 NSSM 工具

NSSM(Non-Sucking Service Manager)是 Windows 下最易用的服务注册工具,能把任意可执行程序注册为系统服务:
  1. 下载地址:https://nssm.cc/download(选择对应系统版本,比如nssm-2.24.zip);
  2. 解压到固定目录,比如C:\nssm(建议解压后重命名为nssm,方便命令调用);
  3. 记住nssm.exe的路径:C:\nssm\win64\nssm.exe(64 位系统)/C:\nssm\win32\nssm.exe(32 位)。

 

一、步骤 1:注册 Redis 为 Windows 服务(后台运行)

1. 先停止当前运行的 Redis(如果在 CMD 里启动了)

Ctrl+C关闭 CMD 中的 Redis,或在任务管理器结束redis-server.exe进程。

2. 以管理员身份打开 CMD,执行以下命令

# 1. 进入Redis目录(替换为你的Redis解压路径)
cd /d C:\Redis

# 2. 注册Redis为系统服务(指定配置文件)
redis-server --service-install redis.windows.conf --loglevel notice

# 3. 启动Redis服务
redis-server --service-start

# 验证:查看服务状态(显示"Running"即为成功)
redis-server --service-status

3. Redis 服务管理命令(备用)

# 停止Redis服务
redis-server --service-stop

# 卸载Redis服务(如需重新配置)
redis-server --service-uninstall

二、步骤 2:注册 Celery 为 Windows 服务(后台运行)

1. 以管理员身份打开 CMD,执行 NSSM 命令

# 1. 注册Celery服务(服务名:CeleryExportService)
C:\nssm\win64\nssm install CeleryExportService

# 2. 配置服务参数(关键!替换为你的实际路径)
# - path:Python解释器路径(conda环境的python.exe)
# - args:Celery启动参数(含日志文件,避免日志丢失)
# - directory:项目根目录
C:\nssm\win64\nssm set CeleryExportService path "C:\Program Files\python.exe"
C:\nssm\win64\nssm set CeleryExportService args "-m celery -A celery_config.celery worker --loglevel=info --pool=solo --purge --logfile=D:\my_project\logs\celery.log"
C:\nssm\win64\nssm set CeleryExportService directory "D:\my_project"

# 3. 配置服务属性(可选,优化运行)
C:\nssm\win64\nssm set CeleryExportService DisplayName "Celery导出服务"  # 服务显示名
C:\nssm\win64\nssm set CeleryExportService Start SERVICE_AUTO_START      # 开机自启
C:\nssm\win64\nssm set CeleryExportService AppStdout "D:\my_project\logs\celery_stdout.log"  # 标准输出日志
C:\nssm\win64\nssm set CeleryExportService AppStderr "D:\my_project\logs\celery_stderr.log"  # 错误输出日志

C:\nssm\win64\nssm set CeleryExportService AppRotateFiles 1 # 开启日志分割

  C:\nssm\win64\nssm set CeleryExportService AppRotateBytes 10485760 # 10MB分割


# 4. 启动Celery服务
C:\nssm\win64\nssm start CeleryExportService

# 验证:查看服务状态(显示"RUNNING"即为成功)
C:\nssm\win64\nssm status CeleryExportService

2. Celery 服务管理命令(备用)

# 停止Celery服务
C:\nssm\win64\nssm stop CeleryExportService

# 重启Celery服务(修改配置后)
C:\nssm\win64\nssm restart CeleryExportService

# 卸载Celery服务(如需重新配置)
C:\nssm\win64\nssm remove CeleryExportService confirm

三、步骤 3:注册 Flask 为 Windows 服务(后台运行)

1. 以管理员身份打开 CMD,执行 NSSM 命令

# 1. 注册Flask服务(服务名:FlaskExportService)
C:\nssm\win64\nssm install FlaskExportService

# 2. 配置服务参数(替换为你的实际路径)
C:\nssm\win64\nssm set FlaskExportService path "C:\Program Files\python.exe"
C:\nssm\win64\nssm set FlaskExportService args "main.py"  # Flask启动文件
C:\nssm\win64\nssm set FlaskExportService directory "D:\my_project"

# 3. 配置服务属性
C:\nssm\win64\nssm set FlaskExportService DisplayName "Flask导出接口服务"
C:\nssm\win64\nssm set FlaskExportService Start SERVICE_AUTO_START
C:\nssm\win64\nssm set FlaskExportService AppStdout "D:\my_project\logs\flask_stdout.log"
C:\nssm\win64\nssm set FlaskExportService AppStderr "D:\my_project\logs\flask_stderr.log"

# 4. 启动Flask服务
C:\nssm\win64\nssm start FlaskExportService

# 验证:查看服务状态
C:\nssm\win64\nssm status FlaskExportService

2. Flask 服务管理命令(备用)

# 停止Flask服务
C:\nssm\win64\nssm stop FlaskExportService

# 重启Flask服务
C:\nssm\win64\nssm restart FlaskExportService

# 卸载Flask服务
C:\nssm\win64\nssm remove FlaskExportService confirm

四、验证后台运行(关键步骤)

  1. 关闭所有 CMD 窗口:直接关闭 Redis/Celery/Flask 的 CMD 窗口,不影响服务运行;
  2. 查看系统服务:
    • 按下Win+R,输入services.msc,回车打开「服务」管理器;
    • 找到以下服务,状态应为「正在运行」:
      • Redis(Redis 服务);
      • Celery导出服务(CeleryExportService);
      • Flask导出接口服务(FlaskExportService);
posted @ 2026-03-18 15:48  dcwange11  阅读(15)  评论(0)    收藏  举报