这是我第一次将 Flask Web 应用部署到 Azure 上的经历。我按照这个 教程 进行操作。
他们提供的默认演示应用程序对我来说可以正常工作。
之后,我通过 git 推送了我的 Flask 应用程序。日志显示部署成功。然而,当我通过“应用程序属性”中提供的链接浏览托管的应用程序时,我会收到以下 500 错误消息:
我的理解是,在GIT成功推送后,Azure会pip安装在requirements.txt中找到的任何不存在的软件包。 但对我来说似乎并没有发生。
我是否做错了什么,缺少的软件包只是症状,还是可能是问题的原因?
备注:
- 我的Flask应用在本地(Linux)和第三方VPS上都运行良好 - 我从头开始重新部署了多次,但无济于事(我使用本地GIT方法) - 我将Azure Flask演示应用程序克隆到本地,仅更改了应用程序文件夹,并推回Azure,但仍然没有成功。 - Azure设置为Python 2.7,与我本地的虚拟环境相同 - 如上面链接的教程中建议的那样,我删除了“env”文件夹并重新部署以欺骗Azure重新安装虚拟环境。 它确实这样做了,但使用其自己的默认软件包而不是我requirements.txt中的软件包。
我的 requirements.txt 文件包含以下内容:
他们提供的默认演示应用程序对我来说可以正常工作。
之后,我通过 git 推送了我的 Flask 应用程序。日志显示部署成功。然而,当我通过“应用程序属性”中提供的链接浏览托管的应用程序时,我会收到以下 500 错误消息:
通过KUDU浏览wwwroot,我唯一发现的问题是,尽管在wwwroot中存在“requirements.txt”文件,但我的本地虚拟环境中安装的任何软件包都没有安装到Azure上。页面无法显示,因为发生了内部服务器错误。
最可能的原因:IIS 收到请求;然而,在处理请求时发生了内部错误。此错误的根本原因取决于哪个模块处理请求以及在发生此错误时工作进程正在进行什么操作。IIS 无法访问 Web 站点或应用程序的 web.config 文件。如果 NTFS 权限设置不正确,则可能会发生这种情况。IIS 无法处理 Web 站点或应用程序的配置。经过身份验证的用户没有权限使用此 DLL。请求被映射到托管处理程序,但未安装 .NET 可扩展性功能。
我的理解是,在GIT成功推送后,Azure会pip安装在requirements.txt中找到的任何不存在的软件包。 但对我来说似乎并没有发生。
我是否做错了什么,缺少的软件包只是症状,还是可能是问题的原因?
备注:
- 我的Flask应用在本地(Linux)和第三方VPS上都运行良好 - 我从头开始重新部署了多次,但无济于事(我使用本地GIT方法) - 我将Azure Flask演示应用程序克隆到本地,仅更改了应用程序文件夹,并推回Azure,但仍然没有成功。 - Azure设置为Python 2.7,与我本地的虚拟环境相同 - 如上面链接的教程中建议的那样,我删除了“env”文件夹并重新部署以欺骗Azure重新安装虚拟环境。 它确实这样做了,但使用其自己的默认软件包而不是我requirements.txt中的软件包。
我的 requirements.txt 文件包含以下内容:
bcrypt==3.1.0 cffi==1.7.0 click==6.6 Flask==0.11.1 Flask-Bcrypt==0.7.1 Flask-Login==0.3.2 Flask-SQLAlchemy==2.1 Flask-WTF==0.12 itsdangerous==0.24 Jinja2==2.8 MarkupSafe==0.23 pycparser==2.14 PyMySQL==0.7.7 python-http-client==1.2.3 six==1.10.0 smtpapi==0.3.1 SQLAlchemy==1.0.14 Werkzeug==0.11.10 WTForms==2.1
.skipPythonDeployment
的文件?在部署任务期间,是否收到任何错误消息?如果可能,请提供您的requirements.txt
文件。 - Gary Liu