Azure WebApp部署Django应用启动失败排查求助
Django部署Azure WebApp端口无响应问题排查方向
1. 排查启动脚本的执行逻辑
- 确认
start.sh中Celery命令是否后台运行:如果Celery以前台模式启动,会阻塞后续的runserver执行,需给Celery命令添加&让其后台运行,例如celery -A your_project worker --loglevel=info &。 - 检查脚本执行权限:部署后通过Azure WebApp的SSH终端执行
chmod +x start.sh,或在Pipeline中添加权限设置步骤,确保脚本可执行。 - 手动执行脚本验证:在SSH终端直接运行
./start.sh,观察实时输出,定位是否有依赖缺失、配置错误等导致runserver启动失败的问题。
2. 确认runserver的绑定配置
- 确保runserver绑定
0.0.0.0:8000:如果绑定127.0.0.1,容器外部无法探测到端口,正确命令应为python manage.py runserver 0.0.0.0:8000。 - 核对WebApp端口设置:在Azure WebApp的「应用程序设置」中,确认
WEBSITES_PORT配置为8000,保证平台探测端口与应用监听端口一致。
3. 提取启动详细日志
- 查看Kudu日志:进入WebApp的「高级工具」→「Kudu」→「调试控制台」→「日志」目录,查看
docker.log或application.log,里面会记录runserver启动失败的具体错误(如数据库连接失败、环境变量缺失)。 - 在
start.sh中添加日志输出:将runserver的输出重定向到日志文件,例如python manage.py runserver 0.0.0.0:8000 >> /home/site/wwwroot/runserver.log 2>&1 &,后续通过Kudu查看该日志文件。
4. 验证项目文件完整性与路径
- 检查部署后文件结构:通过Kudu文件管理器查看
/home/site/wwwroot目录,确认包含manage.py、项目目录、requirements.txt等关键文件。 - 核对脚本路径:如果项目在子目录中,需在
start.sh中先切换到对应目录再执行runserver,例如cd /home/site/wwwroot/your_project && python manage.py runserver...。
5. 检查依赖安装状态
- 确认Pipeline依赖安装步骤:确保Pipeline中执行了
pip install -r requirements.txt,且无安装失败提示。 - 容器内验证依赖:通过SSH终端执行
pip list,检查是否缺失Django、Celery等核心依赖,或存在版本不兼容情况。
6. 测试端口连通性
- 本地端口测试:在SSH终端执行
curl localhost:8000,如果返回错误说明runserver未正常启动;如果能访问,需排查Azure平台的端口映射或防火墙规则。 - 检查网络配置:确认WebApp的防火墙规则未阻止8000端口,VNet集成配置未影响端口探测。
内容的提问来源于stack exchange,提问作者Juan Botero
相关产品推荐
相关产品推荐

