返回文章列表
服务器

Windows service服务器怎么部署Flask?

牧云
2026-02-26
2天前
Windows service服务器怎么部署Flask?

1. 环境准备

操作系统: Windows Server 2016/2019/2022

Python: 安装最新稳定版(如 Python 3.10+),确保勾选 Add Python to PATH。

Nginx for Windows: 从 官网 下载 Windows 版本(如 nginx/Windows-1.25.3)。

依赖工具: Git(可选,用于代码拉取)、文本编辑器(如 VS Code)。

2. 创建 Flask 应用

2.1 项目结构

C:\flask-app\   ├── app.py          # Flask 主程序   ├── requirements.txt   ├── static\         # 静态文件   └── venv\           # Python 虚拟环境

2.2 示例 app.py

from flask import Flaskapp = Flask(__name__)@app.route('/')def home():    return "Hello, World! Flask on Windows Server with Nginx!"if __name__ == '__main__':    app.run(host='0.0.0.0', port=5000)

2.3 安装依赖

# 创建虚拟环境python -m venv venvvenv\Scripts\activate# 安装 Flask 和 Waitress(生产级 WSGI 服务器)pip install flask waitress

3. 使用 Waitress 启动 Flask

3.1 启动命令

waitress-serve --port=5000 --threads=4 app:app

参数说明: --port: 监听端口 --threads: 线程数(根据 CPU 核心调整)

3.2 创建启动脚本 start_server.bat

@echo offcall venv\Scripts\activatewaitress-serve --port=5000 --threads=4 app:app

4. 配置 Nginx 反向代理

4.1 修改 Nginx 配置文件 nginx.conf

worker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    # 反向代理配置    upstream flask_app {        server 127.0.0.1:5000;  # Waitress 监听地址    }    server {        listen       80;        server_name  your_domain.com;  # 替换为域名或服务器 IP        # 静态文件处理(由 Nginx 直接代理)        location /static {            alias C:/flask-app/static;  # 替换为实际路径            expires 30d;        }        # 动态请求代理到 Flask        location / {            proxy_pass http://flask_app;            proxy_set_header Host $host;            proxy_set_header X-Real-IP $remote_addr;            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            proxy_set_header X-Forwarded-Proto $scheme;        }    }}

4.2 启动 Nginx

# 检查配置语法nginx -t# 启动 Nginxstart nginx# 重启(修改配置后)nginx -s reload

5. 配置 Windows 服务(开机自启)

5.1 使用 NSSM 工具(推荐) 下载 nssm.exe 注册 Nginx 服务

nssm install Nginx "C:\nginx\nginx.exe"  # 替换为 Nginx 实际路径nssm start Nginx

注册 Waitress 服务:

nssm install FlaskApp "C:\flask-app\venv\Scripts\python.exe" "C:\flask-app\venv\Scripts\waitress-serve.exe" --port=5000 app:appnssm start FlaskApp

6. 常见问题与解决方案

6.1 端口冲突 错误: bind() to 0.0.0.0:5000 failed: 仅允许使用一个套接字地址

解决: 检查是否有其他程序占用端口,使用 netstat -ano | findstr :5000 并终止进程。

6.2 静态文件 404 错误: 浏览器无法加载 /static/style.css

解决: 确保 Nginx 配置中的 alias 路径使用正斜杠(C:/flask-app/static),且目录存在。

6.3 Nginx 502 Bad Gateway 原因: Nginx 无法连接后端 Flask 服务。

排查: 检查 Waitress 是否运行 (tasklist | findstr waitress)。

检查防火墙是否允许端口 5000。

7. 扩展知识

7.1 启用 HTTPS 使用 Let’s Encrypt 获取免费证书(需域名)。 修改 Nginx 配置

server {    listen 443 ssl;    ssl_certificate     C:/ssl/your_domain.crt;    ssl_certificate_key C:/ssl/your_domain.key;    # ... 其他配置}

7.2 负载均衡

upstream flask_app {    server 127.0.0.1:5000;    server 127.0.0.1:5001;  # 启动第二个实例    least_conn;  # 使用最少连接算法}

8. 注意事项

生产环境禁用调试模式:

确保 Flask 的 app.run(debug=False)。

日志管理: 配置 Nginx 和 Flask 的日志路径,定期归档。 备份配置: 修改关键文件前备份(如 nginx.conf)。

通过以上步骤, Flask 应用将在 Windows Server 上以高可靠性的方式运行


本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。

分享文章
合作伙伴

本站所有广告均是第三方投放,详情请查询本站用户协议