Python项目部署到Apache实录

用Trae Work开发的Python Flask项目,部署到windows + Apache实操记录,相关技术栈:Python应用 + Python虚拟环境 + Flask框架 + Waitress WSGI伺服器 + Apache子域名。

一、在windows服务器上准备 Python 与项目文件

  1. 安装 Python 环境
    访问官网(https://www.python.org),下载最新的Python for win 版本
    安装时的重要点:勾选”Add Python to PATH”选项
    验证安装:python –versionpip –version
  2. 复制项目全部文件到服务器
    举例:D:\Pythons\Anonymous_jh
  3. 进入项目目录,创建虚拟环境并安装依赖
    cd D:\Pythons\Anonymous_jh
    python -m venv venv
    .\venv\Scripts\activate
    python -m pip install –upgrade pip
    pip install -r requirements.txt

二、检查 .env 与 config.json 配置是否合适

run_waitress.py 将从 .env 调地址端口等参数

三、手动测试 waitress 服务器

  • cd D:\Pythons\Anonymous_jh
  • .\venv\Scripts\activate
  • python run_waitress.py
  • 检验:服务器上浏览器 http://127.0.0.1:5016

四、把 waitress 做成开机自启服务(用 nssm)

  1. 下载地址:https://nssm.cc/download
  2. 解压到可以全局使用的目录,注意区分32位64位
  3. 把本项目的Waitress服务注册成windows服务
    nssm.exe install Anonymous-jh
    打开界面后填写下列参数:
    Path:D:\Pythons\Anonymous_jh\venv\Scripts\python.exe
    Startup directory:D:\Pythons\Anonymous_jh
    Arguments:run_waitress.py
    Display name:AnonymousEmail jinhui
    Description: 匿名举报邮件系统5016
    Log on 选项卡:勾选 Local System account
    I/O 选项卡:
    Output (stdout):D:\Pythons\Anonymous_jh\logs\service_stdout.log
    Error (stderr):D:\Pythons\Anonymous_jh\logs\service_stderr.log
  4. 启动服务
    nssm start Anonymous-jh
    也可通过 services.msc 找到服务项并启动服务
    若出问题查:D:\Pythons\Anonymous_jh\logs\service_stderr.log

五、安装并配置Apache

  1. 下载地址:https://www.apachelounge.com/download/
    举例解压到 C:\WebSer\Apache24
    对应 Win2016 需先装 Visual C++ Redistributable 2015-2022 x64
    C:\WebSer\Apache24\bin\httpd.exe -t #测试Apache本身能跑
    httpd.exe -k install -n “Apache24” #把Apache注册为服务
  2. 开启Apache的代理模块,编辑 conf\httpd.conf
    找到下面几行,去掉行首的 #
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule rewrite_module modules/mod_rewrite.so
    Include conf/extra/httpd-vhosts.conf
  3. 编辑 conf\extra\httpd-vhosts.conf,加入子域名反向代理
    #文件补充的内容详见文章末尾
  4. 测试配置语法并重启 Apache
    bin\httpd.exe -t
    net stop Apache24
    net start Apache24

六、防火墙放行与验证

  1. 放行 80 端口入站
    New-NetFirewallRule -DisplayName “Apache HTTP 80” -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
  2. 局域网内电脑验证接口
    Invoke-WebRequest http://127.0.0.1/api/captcha -UseBasicParsing
  3. 终极验证:在开发电脑上用浏览器访问项目

七、注意事项

  • 路径分隔符:Apache 配置里用正斜杠 /(如 C:/Apache24/htdocs),PowerShell 命令里用反斜杠。
  • 端口冲突:若 80 被 IIS 占用,停止 IIS,或让 Apache 监听别的端口。
  • 服务账户权限:nssm 服务默认以 LocalSystem 运行

九、conf\extra\httpd-vhosts.conf 补充虚拟机范本

#spAnonymous - 举报邮件系统
<VirtualHost *:80>
    ServerAdmin sandal@jh1999.cn
    ServerName jb.jh1999.cn
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5016/
    ProxyPassReverse / http://127.0.0.1:5016/
    # 上传附件上限 100MB
    <Location />
        LimitRequestBody 104857600
    </Location>
    #日志定义
    ErrorLog "D:/WebSite/logs/error_anymail.log"
    CustomLog "D:/WebSite/logs/access_anymail.log" common
</VirtualHost>

发表评论