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

Azure App Service部署时startup.sh文件找不到的问题排查与解决

解决方案

一、确认startup.sh是否已部署到Azure App Service

  1. 打开Kudu管理界面:访问https://<你的应用名称>.scm.azurewebsites.net/
  2. 进入Debug console -> Bash,执行命令:
    ls /home/site/wwwroot
    
    查看输出中是否包含startup.sh。

如果文件不存在:

  • 检查仓库的.gitignore文件,确保没有将startup.sh添加到忽略列表中。
  • 查看GitHub Actions的azure.yml部署脚本,确认部署步骤是否正确包含根目录下的所有文件。例如使用azure/webapps-deploy@v2动作时,确保package参数指向./(根目录)。
  • 查看Azure部署中心的部署日志,确认startup.sh是否被成功上传。

二、修复路径与执行权限问题

如果文件已存在但仍报错:

  1. 修改启动命令为相对路径:
    将原启动命令:

    chmod +x /home/site/wwwroot/startup.sh && /home/site/wwwroot/startup.sh
    

    替换为:

    chmod +x ./startup.sh && ./startup.sh
    

    (App Service Linux容器的默认工作目录就是/home/site/wwwroot,相对路径更可靠)

  2. 修正脚本换行符格式:
    将startup.sh的换行符改为Linux的LF格式(避免Windows CRLF导致的执行异常)。可以在VS Code中点击右下角的CRLF切换为LF,或通过git配置禁用自动转换:

    git config core.autocrlf false
    

    重新提交并推送脚本。

三、优化startup.sh脚本内容(解决后续潜在问题)

原脚本存在两个隐患,即使文件找到也可能导致启动失败:

  1. 缺少sudo权限:执行apt-get需要管理员权限,修改脚本为:
    sudo apt-get update && sudo apt-get install -y libgl1-mesa-glx libglib2.0-0
    
  2. 硬编码端口:Azure App Service会通过PORT环境变量指定监听端口,改为动态获取:
    gunicorn -k uvicorn.workers.UvicornWorker -b 0.0.0.0:$PORT app:app
    

修改后的完整startup.sh:

sudo apt-get update && sudo apt-get install -y libgl1-mesa-glx libglib2.0-0

gunicorn -k uvicorn.workers.UvicornWorker -b 0.0.0.0:$PORT app:app

四、验证部署

修改完成后重新推送代码到GitHub触发部署,然后查看Azure的日志流(App Service -> 监控 -> 日志流),确认启动过程无错误。


内容的提问来源于stack exchange,提问作者Lokmane ZEREG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:04:56