You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Flask部署Heroku反复报Permission Denied问题求助

解决Heroku部署Flask应用出现Permission denied的问题

核心问题分析

  • 特权端口限制:你在app.run里指定了port=80,Heroku容器以非root用户运行,无法绑定1024以下的特权端口,这是直接触发权限拒绝的原因。
  • 启动逻辑冲突:使用Gunicorn作为生产环境WSGI服务器时,无需调用Flask自带的app.run()——Gunicorn会自行托管Flask应用,重复调用app.run()会引发服务启动冲突,加剧权限问题。

具体修复步骤

1. 修正app.py的启动代码

删除或注释掉原有的app.run(host="0.0.0.0", port=80, threaded=True),建议替换为仅本地开发时启用的判断(更规范):

if __name__ == "__main__":
    # 仅本地开发使用Flask自带服务器,端口选1024以上的非特权端口
    app.run(host="0.0.0.0", port=5000, threaded=True)

2. 优化Procfile配置

让Gunicorn使用Heroku自动分配的动态端口,同时明确指定Flask实例:

web: gunicorn --pythonpath src app:app
  • app:app表示从src目录下的app.py文件导入名为app的Flask实例,避免歧义。
  • Gunicorn会自动读取Heroku的PORT环境变量,无需手动指定端口。

3. 重新部署应用

执行以下命令推送修改到Heroku:

git add .
git commit -m "Fix permission denied issue by adjusting server config"
git push heroku main

验证修复

部署完成后,执行heroku logs --tail查看日志,若看到类似以下内容则说明修复成功:

2022-08-24T17:XX:XX.XXXXXX+00:00 app[web.1]: [2022-08-24 17:XX:XX +0000] [XX] [INFO] Starting gunicorn 20.1.0
2022-08-24T17:XX:XX.XXXXXX+00:00 app[web.1]: [2022-08-24 17:XX:XX +0000] [XX] [INFO] Listening at: http://0.0.0.0:XXXX (XX)

内容的提问来源于stack exchange,提问作者Kirk KD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:36:34