Win10 x64环境下32位Apache2.4部署Flask WSGI服务加载失败求助
Flask 32位Apache2.4部署加载失败排查
代码硬错误
- 路径配置错误:原WSGI脚本中
sys.path.insert(0, "C/xampp/htdocs/wsgi scripts/the_app.wsgi")缺失盘符冒号,且错误指向WSGI脚本文件本身而非Flask项目根目录,无法完成模块导入 - WSGI脚本框架混淆:脚本内
WSGIHandler未导入、web.Application()/web.run_app()属于aiohttp框架代码,mod_wsgi仅需暴露名为application的可调用对象即可,无需编写额外web服务器启动逻辑,未使用的one函数为冗余代码可直接删除 - Main.py语法错误:
- 装饰器拼写及语法错误:
@app.routye(/应为@app.route('/contact'),路由字符串未加引号会直接触发Python解析报错 - 冗余重复导入Flask模块
- 开发服务器参数类型错误:
port='5000'、debug='True'为字符串类型,应改为整数port=5000和布尔值debug=True
- 装饰器拼写及语法错误:
环境适配问题
- mod_wsgi版本不匹配:当前Apache为32位版本,必须安装对应32位、匹配自身Python大版本的mod_wsgi组件,64位mod_wsgi无法被32位Apache正常加载
- 权限配置:确认Apache运行账号对项目根目录、模板目录、静态资源目录有读取权限
参考修复代码
修复后的WSGI脚本(the_app.wsgi)
import sys # 替换为Flask项目根目录的绝对路径,使用正斜杠避免转义问题 sys.path.insert(0, 'C:/xampp/htdocs/your_project_root') # 导入Flask实例并重命名为application,供mod_wsgi调用 from main import app as application
修复后的Main.py
from flask import Flask, render_template, url_for from jinja2 import Template app = Flask(__name__, static_url_path='/static/images/') @app.route('/', methods=['GET','POST']) def home(): return render_template('index.html') @app.route('/contact', methods=['GET','POST']) def contact(): return render_template('contact.html') if __name__ == "__main__": # 仅本地开发时执行,Apache部署不会触发该段逻辑 app.run(host='127.0.0.1', port=5000, debug=True)
Apache配置注意事项
- 开启mod_wsgi模块,在httpd.conf中添加对应模块的加载规则
- 虚拟主机配置中添加路由映射:
WSGIScriptAlias / "你的项目根目录/the_app.wsgi",路径含空格需用双引号完整包裹
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

