【软件工程】Waitress + Nginx 部署 Python Web 服务

下面是完整的 Windows 系统部署方案,使用 Waitress 作为 WSGI 服务器运行 Python 后端,Nginx 作为反向代理同时提供前端服务:

项目结构

text

复制

下载

myapp/
├── backend/               # Python后端
│   ├── app.py             # Flask应用入口
│   ├── requirements.txt   # Python依赖
│   └── api/               # API模块
├── frontend/              # 前端文件
│   ├── index.html
│   ├── css/
│   ├── js/
│   └── assets/
└── deploy/                # 部署相关文件
    ├── nginx/             # Nginx配置
    │   ├── conf/
    │   │   └── nginx.conf
    │   └── html/
    ├── start_backend.bat  # 启动后端脚本
    ├── start_nginx.bat    # 启动Nginx脚本
    └── stop_all.bat       # 停止服务脚本

部署步骤

1. 安装必要软件

powershell

复制

下载

# 安装 Python (3.7+)
https://www.python.org/downloads/windows/

# 安装 Nginx for Windows
https://nginx.org/en/download.html

2. 配置 Python 后端

backend/app.py

python

复制

下载

from flask import Flask, jsonify, send_from_directory
import os

app = Flask(__name__)

# 提供API服务
@app.route('/api/data')
def get_data():
    return jsonify({"message": "Hello from Python backend!", "status": "success"})

# 开发环境提供前端服务(生产环境由Nginx处理)
@app.route('/')
def serve_frontend():
    if os.path.exists('../frontend/index.html'):
        return send_from_directory('../frontend', 'index.html')
    return "Frontend files not found", 404

@app.route('/')
def serve_static(path):
    return send_from_directory('../frontend', path)

if __name__ == '__main__':
    app.run(debug=False)

backend/requirements.txt

text

复制

下载

flask
waitress
python-dotenv

3. 创建部署脚本

deploy/start_backend.bat

batch

复制

下载

@echo off
REM 进入后端目录
cd /d %~dp0..\backend

REM 创建虚拟环境(首次运行)
if not exist venv (
    python -m venv venv
)

REM 激活虚拟环境
call venv\Scripts\

你可能感兴趣的:(nginx,python,WEB)