在Windows系统中实现uWSGI的自启动,可以确保应用程序在系统重启后能够自动恢复运行,提高服务的可用性和稳定性,本文将详细介绍如何在Windows环境下配置uWSGI自启动,包括准备工作、配置步骤、常见问题处理以及相关FAQs。

准备工作
在开始配置uWSGI自启动之前,需要确保以下准备工作已完成:
- 安装Python和uWSGI:确保Python已正确安装,并通过pip安装了uWSGI,可以使用命令
pip install uwsgi进行安装。 - 编写uWSGI配置文件:创建一个INI格式的uWSGI配置文件,定义应用程序的运行参数,如监听地址、端口、进程数、Python模块路径等。
[uwsgi] http = :8000 chdir = C:/path/to/your/project wsgi-file = yourproject/wsgi.py callable = app processes = 4 threads = 2
- 测试uWSGI运行:在命令行中运行
uwsgi --ini your_config.ini,确保uWSGI能够正常启动并响应请求。
使用Windows服务实现自启动
Windows服务是一种在后台运行的应用程序,非常适合用于实现uWSGI的自启动,以下是具体步骤:
-
安装uWSGI为Windows服务:
- 打开命令行(管理员权限),进入uWSGI的安装目录或Python的Scripts目录。
- 使用以下命令将uWSGI安装为服务:
uwsgi --ini your_config.ini --enable-threads --plugin python --http 0.0.0.0:8000 --master --processes 4 --threads 2 --py-autoreload 1 --die-on-term --http-timeout 120 --socket-timeout 120 --mule-timeout 120 --harakiri 120 --daemonize2 C:/path/to/uwsgi.log --pidfile C:/path/to/uwsgi.pid
注意:上述命令需要根据实际配置调整参数。
- 更推荐使用
nssm(Non-Sucking Service Manager)工具来管理服务,它提供了更友好的界面和更稳定的服务管理。
-
使用nssm安装服务:

- 下载nssm工具(官网:https://nssm.cc/),解压后将
nssm.exe放到系统PATH或指定目录。 - 打开命令行(管理员权限),运行以下命令:
nssm install uwsgi_service "C:/Python39/python.exe" "C:/Python39/Scripts/uwsgi.exe" "--ini" "C:/path/to/your_config.ini"
uwsgi_service是服务名称,后续可通过该名称管理服务。 - 启动服务:
net start uwsgi_service
- 停止服务:
net stop uwsgi_service
- 下载nssm工具(官网:https://nssm.cc/),解压后将
配置服务自启动
安装为Windows服务后,默认是手动启动,可以通过以下步骤配置为自动启动:
- 打开服务管理器:
- 按
Win + R,输入services.msc,回车打开服务管理器。
- 按
- 找到uWSGI服务:
- 在服务列表中找到名为
uwsgi_service的服务(或自定义的服务名称)。
- 在服务列表中找到名为
- 修改启动类型:
- 右键点击服务,选择“属性”。
- 在“常规”选项卡中,将“启动类型”设置为“自动”。
- 点击“确定”保存设置。
常见问题处理
在配置uWSGI自启动过程中,可能会遇到以下问题:
-
服务启动失败:
- 检查uWSGI配置文件路径是否正确,确保文件存在且可读。
- 查看Windows事件查看器(事件查看器 > Windows日志 > 应用程序),获取uWSGI的错误日志。
- 确保Python和uWSGI的路径在系统PATH中,或使用绝对路径。
-
权限问题:

- 确保运行服务的账户有足够的权限访问项目文件和日志文件。
- 可以在服务属性中修改登录账户,例如使用
LocalSystem或指定具有权限的用户账户。
-
端口占用:
- 如果uWSGI监听的端口已被占用,服务将无法启动,使用
netstat -ano命令检查端口占用情况,并修改uWSGI配置中的端口。
- 如果uWSGI监听的端口已被占用,服务将无法启动,使用
相关FAQs
Q1:如何卸载已安装的uWSGI服务?
A1:使用nssm工具卸载服务的命令为:nssm remove uwsgi_service,如果直接通过uWSGI命令安装的服务,可能需要手动删除注册表中的服务项(不推荐,建议使用nssm管理)。
Q2:uWSGI服务启动后无法访问,如何排查?
A2:首先检查uWSGI日志文件(配置文件中daemonize2指定的路径),查看是否有错误信息,确认防火墙是否阻止了端口访问,可以临时关闭防火墙测试,使用netstat -ano | findstr :8000检查端口是否被正确监听。
标签: uwsgi Windows服务自配置 Windows uwsgi服务启动脚本 uwsgi服务开机自启动设置