NSSM--实现应用程序注册为Windows 系统服务
在 Windows 系统中,要让 Celery、Flask、Redis 这些程序脱离 CMD 窗口、后台常驻运行,核心是将它们注册为Windows 系统服务(Service)—— 这是 Windows 官方的后台运行方案,开机自启、关闭 CMD 不影响,还能通过服务管理器管理。
前置准备:下载 NSSM 工具
NSSM(Non-Sucking Service Manager)是 Windows 下最易用的服务注册工具,能把任意可执行程序注册为系统服务:
- 下载地址:https://nssm.cc/download(选择对应系统版本,比如
nssm-2.24.zip); - 解压到固定目录,比如
C:\nssm(建议解压后重命名为nssm,方便命令调用); - 记住
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
四、验证后台运行(关键步骤)
- 关闭所有 CMD 窗口:直接关闭 Redis/Celery/Flask 的 CMD 窗口,不影响服务运行;
- 查看系统服务:
- 按下
Win+R,输入services.msc,回车打开「服务」管理器; - 找到以下服务,状态应为「正在运行」:
Redis(Redis 服务);Celery导出服务(CeleryExportService);Flask导出接口服务(FlaskExportService);
- 按下
浙公网安备 33010602011771号