Python Flask项目发布到Nginx实录

使用Trae AI开发的Python Flask项目在Windows 11上的Nginx服务里部署实操详细记录

一、系统环境准备

  1. 系统更新:确保Windows 11操作系统已安装所有最新的安全更新和功能更新。
    操作路径:打开”设置”(win + i) → 选择”Windows更新”选项卡 → 点击”检查更新”按钮,安装所有可用更新并重启系统。
  2. 开发者模式配置(可选但推荐):
    操作路径:打开”设置”(win + i) → 选择”隐私和安全性” → 点击”开发者选项” → 启用”开发者模式”开关,并确认相关安全提示。

二、核心软件安装与配置

  1. Python环境安装与验证
    a. 访问Python官方网站(https://www.python.org/downloads/),下载最新稳定版Python 3.x解释器(推荐版本3.11及以上)
    b. 运行安装程序,重要:勾选”Add Python to PATH”选项,然后点击”Install Now”完成标准安装
    c. 验证安装结果:
    • 打开命令提示符(CMD)或PowerShell
    • 执行命令:python –version 验证Python版本
    • 执行命令:pip –version 验证pip包管理器版本
    • 若命令无法识别,需手动检查系统环境变量PATH中是否已添加Python安装路径(勾选”Add Python to PATH”选项)
  2. NSSM(Non-Sucking Service Manager)安装配置
    a. 下载最新版NSSM工具(https://nssm.cc/download)
    b. 将下载的压缩包解压至指定目录:c:\nssm
    c. 将c:\nssm路径添加到系统环境变量PATH中,以便在任意命令行窗口直接调用nssm命令
  3. SQL Server ODBC驱动安装说明(可选组件)
    经实际测试,Windows 11操作系统可能已预装SQL Server ODBC驱动,可暂不单独安装。如后续项目运行中出现数据库连接问题,可从Microsoft官方网站下载并安装最新版SQL Server ODBC驱动

三、项目部署(例如项目名称:pcPlan)

  1. 创建项目目录:在本地计算机的C盘根目录下创建名为”pcPlan”的文件夹,路径为C:\pcPlan,确保该目录具有读写权限。
  2. 复制项目文件:将项目所有相关文件完整复制到C:\pcPlan目录中,必须包含以下关键文件,确保文件结构完整且无损坏:
  • webPlan.py(Flask应用主程序,负责Web服务启动与路由管理)
  • pcPlan.py(Excel处理逻辑模块,包含数据导入导出和数据处理等核心功能)
  • mssql_connector.py(数据库连接模块,负责与MSSQL数据库的交互)
  • field_map.py(字段映射配置文件,定义数据字段的映射关系)
  • templates\upload.html(Web界面模板,用户上传文件的前端页面)
  • templates\Logo.png(Web界面Logo图片)
  • templates\favicon.ico(Web界面浏览器网址图标)
  • requirements.txt(项目依赖列表,包含所有必要的Python包及其版本信息)

3.1 创建虚拟环境:在C:\pcPlan目录下打开命令提示符,执行以下命令创建独立的Python虚拟环境(每个项目仅需执行一次):
python -m venv venv

3.2 激活虚拟环境:执行以下命令激活创建的虚拟环境:
venv\Scripts\activate
验证:激活成功后,命令提示符前应显示”(venv)”标识

3.3 安装项目依赖:在激活虚拟环境的状态下,执行以下命令安装项目所需依赖:
pip install -r requirements.txt
补充安装:若requirements.txt中存在缺失依赖,可执行以下命令补充安装:
pip install flask pandas openpyxl pyodbc #本项目用到的依赖
验证:安装完成后,可通过”pip list”命令检查已安装的包是否完整

  1. 安装WSGI服务器(可选步骤):如需在生产环境部署,建议安装Waitress作为WSGI服务器,执行以下命令:
    pip install waitress
    说明:此步骤非开发环境必需,仅推荐在生产环境中使用以提高服务稳定性和性能

四、配置Web服务器(Nginx)

  1. 安装Nginx for Windows(https://nginx.org/):下载Nginx 1.25.3版本的压缩包(nginx-1.25.3.zip),将其解压至指定目录(如C:\WebSer\nginx),确保解压路径中不包含中文或特殊字符。
  2. 验证Nginx的配置文件(在CMD窗口下):
    nginx -t -c conf\nginx.conf
  3. 使用NSSM将Nginx安装为Windows服务:
    a. 导航至nssm程序的win64目录下(CMD窗口)
    b. 执行以下命令完成服务安装与管理:
    nssm install Nginx “C:\WebSer\nginx\nginx.exe” # 将Nginx安装为系统服务
    nssm edit Nginx # 打开图形界面配置Nginx服务参数(建议配置启动目录、依赖项等)
    nssm start Nginx # 启动Nginx服务
    nssm stop Nginx # 停止Nginx服务
    nssm remove Nginx # 卸载Nginx服务(卸载前必须先停止服务)
    c. 验证服务安装:通过Windows服务管理器确认”Nginx”服务已成功创建并可正常启动
  4. 配置Nginx反向代理:
    a. 使用文本编辑器打开Nginx配置文件:C:\nginx\conf\nginx.conf
    b. 举例:配置pcPlan反向代理的核心语法
    location /pcPlan/templates/ {
    proxy_pass http://127.0.0.1:5000/templates/;
    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;
    }
    # /pcPlan/download/ Excel文件下载
    location ~ ^/pcPlan/download/(..xlsx)$ { alias F:/AI/Trae/todoB/$1; add_header Content-Type application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; add_header Content-Disposition attachment; } # /pcPlan/ Excel文件处理 location ~ ^/pcPlan/(..xlsx)$ {
    alias F:/AI/Trae/todoB/$1;
    add_header Content-Type application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;
    add_header Content-Disposition attachment;
    }
    location /pcPlan/ {
    proxy_pass http://127.0.0.1:5000/; #末尾有斜杠,代理时会自动去掉/pcPlan/
    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;
    proxy_set_header X-Forwarded-Prefix /pcPlan;
    }
    d. 通过”nssm restart Nginx”命令重启服务使配置生效
    e. 测试反向代理功能是否正常工作,确保请求能够正确转发并返回响应

五、Flask项目部署为Windows服务

  1. 使用NSSM工具将Flask应用注册为Windows服务
    1.1 打开命令提示符(管理员模式),执行以下命令进入NSSM工具目录:
    cd C:\tools\nssm\win64
    1.2 运行NSSM安装命令创建服务:
    nssm install pcPlan “F:\AI\Trae\todoB\venv\Scripts\python.exe” “F:\AI\Trae\todoB\webPlan.py”
    1.3 在弹出的NSSM图形配置界面中,严格按以下参数配置:
    • Path(可执行文件路径):F:\AI\Trae\todoB\venv\Scripts\python.exe
    • Startup directory(启动目录):F:\AI\Trae\todoB
    • Arguments(启动参数):F:\AI\Trae\todoB\webPlan.py
      1.4 完成配置后点击”Install service”按钮完成服务注册
  2. 服务属性修改与描述信息配置
    2.1 执行以下命令打开服务编辑界面:
    nssm edit pcPlan
    2.2 在”Details”选项卡中,修改”Description”字段为包含中文的服务描述信息(例如:”PC排期追踪:5000″)
    2.3 点击”OK”保存修改
  3. 服务验证与管理
    3.1 启动服务:nssm start pcPlan
    3.2 验证服务状态:nssm status pcPlan
    3.3 如需停止服务:nssm stop pcPlan
    3.4 如需卸载服务:nssm remove pcPlan confirm

注意事项:

  • 确保路径中的大小写与实际文件系统保持一致
  • 服务配置前需确认Python虚拟环境已正确激活且依赖包已安装
  • 修改描述信息时确保中文显示正常,避免编码问题
  • 操作完成后建议重启服务使配置生效

六、整个系统部署验证流程

  1. 服务状态验证:
    • 打开Windows服务管理应用(services.msc)
    • 定位并检查”PCPlan”服务状态,确认其显示为”正在运行”
    • 定位并检查”Nginx”服务状态,确认其显示为”正在运行”

    2. 应用访问验证:

      • 打开Web浏览器(推荐使用Chrome、Edge或Firefox最新版本)
      • 在地址栏分别输入下列地址并进行操作
        http://localhost:5000 #Flask应用地址
        http://127.0.0.1:5000 #Flask应用地址
        http://127.0.0.1/pcPlan #反向代理地址

      3. 日志验证:

        • 打开Windows事件查看器
        • 导航至Windows日志 > 应用程序日志
        • 确认系统生成运行正常的Windows日志记录,具体表现为:无错误或警告级别日志,仅有信息级别启动成功日志。

        发表评论