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

使用fly.io部署Django站点时因分配异常失败求助

解决Django部署到fly.io的问题

1. 修复ModuleNotFoundError: No module named 'demo'

这个错误源于gunicorn启动命令里的demo.wsgi中的demo并非你实际的Django项目名称。找到你项目中包含wsgi.py文件的文件夹名称(即执行django-admin startproject时指定的项目名),将命令里的demo替换为该名称。

例如,若你的项目文件夹名为myproject,启动命令需改为:

CMD ["gunicorn", "--bind", "0.0.0.0:8080", "--workers", "2", "myproject.wsgi"]

2. 统一端口配置

你的fly.toml设置的PORT为8080,但Dockerfile里EXPOSE的是8000、gunicorn绑定的也是8000,端口不一致会导致fly.io健康检查失败,需统一为8080:

  • 修改Dockerfile的EXPOSE行:
    EXPOSE 8080
    
  • 将gunicorn的bind参数改为0.0.0.0:8080,0.0.0.0表示监听所有网络接口,解决无法绑定公网IP的问题

3. 修正静态文件路径配置

fly.toml中静态文件的guest_path设为/app/public,但Django的collectstatic默认将文件收集到STATIC_ROOT指定的目录,需做如下调整:

  • 在Django项目的settings.py中设置:
    STATIC_ROOT = "/code/public"
    
  • 修改fly.toml的statics部分,将guest_path改为与STATIC_ROOT一致的路径:
    [[statics]]
      guest_path = "/code/public"
      url_prefix = "/static/"
    

4. 重新部署验证

完成上述修改后,执行fly deploy重新部署,之后:

  • 用fly logs查看日志,确认模块错误是否消除
  • 用fly status检查实例是否处于健康状态

内容的提问来源于stack exchange,提问作者YI-CHI HUANG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:50:31