python - Azure 部署重定向(登录无效。请重试。)
问题描述
我已经在 azure 上的 URL 下部署了 Flask Appbuilder 应用程序的基本版本:Site URL。管理员登录已使用 Kudu 控制台创建,ID 为 admin,密码为 admin 登录继续重定向到自身,并显示“登录无效。请重试。” 错误,但是用户存在于 app.db 文件本身中。重定向不会在 Azure 上创建任何日志。
我们有一个重要的部署即将到来,任何解决此问题的线索将不胜感激。
谢谢
环境
Flask-Appbuilder 版本:最新
解决方案
听起来您构建的 Python 应用程序flask-appbuilder
已部署在适用于 Windows 的 Azure WebApp 上,但无法正常工作。
对于两个现有的 SO 线程Hosting Flask(Python) app throws CGI error和Hosting Flask(python) API on Azure API有我的答案。
我尝试flask-appbuilder
在 Python 3 中创建一个演示并将其部署到 Azure WebApp for Windows,然后它工作正常。以下是我的步骤,您可以参考。
我通过以下命令在我安装了 Python 3 运行时的本地机器上创建了一个虚拟环境,并
virtualenv
通过pip install virtualenv
.virtualenv demo cd demo bin\activate.bat pip install flask-appbuilder fabmanager create-app # use `demoapp` as the `Your new app name` input cd demoapp
使用所有默认选项和简单密码创建管理员,通过
fabmanager create-admin
.Username [admin]: User first name [admin]: User last name [user]: Email [admin@fab.org]: Password: Repeat for confirmation: D:\<your path>\demo\demoapp\lib\python3.6\site-packages\flask_sqlalchemy\__init__.py:794: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. 'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and ' 2019-02-21 15:29:55,309:INFO:flask_appbuilder.security.sqla.manager:Security DB not found Creating all Models from Base 2019-02-21 15:29:55,334:INFO:flask_appbuilder.security.sqla.manager:Security DB Created .......
- 我运行
demoapp
viafabmanager run
,它适用于我的本地。 - 然后,我通过 Kudo Console
demoapp
将包含的所有目录和文件拖到我的 Azure WebApp 中。app.db
https://<your webapp name>.scm.azurewebsites.net/DebugConsole
由于没有直接安装应用依赖
flash-appbuilder
,所以我在 Kudu 中安装了一个 Python 3 运行时Site extensions
,如下图。继续,我回到 Kudu 控制台并运行以下命令来安装
flask-appbuilder
.D:\home>cd python364x64 D:\home\python364x64>python -V Python 3.6.4 D:\home\python364x64>pip install flask-appbuilder 收集 flask-appbuilder 下载https://files.pythonhosted.org/packages/ 3a/b0/edb3e54241203266222c4863ae6eb30fd49f5d331a117b61f1801e8124da/Flask-AppBuilder-1.12.3.tar.gz (2.3MB) 已满足要求:d:\home\python364x86\lib\site-packages 中的 colorama<1,>=0.3.9 -appbuilder) (0.4.1) 已满足要求:在 d:\home\python364x86\lib\site-packages 中单击<8,>=6.7 (来自flask-appbuilder) (7.0) ......
然后,进入
site\wwwroot
创建和配置web.config
文件并更改run.py
. 有两种方法可以使其工作,如下所示。- 不使用 WSGI。Azure WebApp 的默认端口取决于
HTTP_PLATFORM_PORT
IIS 在 Azure 上设置的环境变量。所以我们需要更改方法的port
参数并配置如下。app.run
run.py
web.config
run.py
代码更改如下:from app import app import os app.run(port=int(os.environ['HTTP_PLATFORM_PORT']))
内容如下
web.config
:<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="PYTHONPATH" value="D:\home\site\wwwroot" /> <add key="PATH" value="D:\home\python364x64;D:\home\python364x64\Scripts;%PATH%" /> </appSettings> <system.webServer> <handlers> <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" /> </handlers> <httpPlatform processPath="D:\home\python364x64\python.exe" arguments="D:\home\site\wwwroot\run.py --port %HTTP_PLATFORM_PORT%" stdoutLogEnabled="true" startupRetryCount='10'> </httpPlatform> </system.webServer> </configuration>
- 使用 WSGI 服务器代替生产环境。
run.py
代码如下。from app import app app.run()
内容如下
web.config
。<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="PYTHONPATH" value="D:\home\site\wwwroot" /> <add key="WSGI_HANDLER" value="app.app" /> </appSettings> <system.webServer> <handlers> <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\python364x64\python.exe|D:\home\python364x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer> </configuration>
- 不使用 WSGI。Azure WebApp 的默认端口取决于
推荐阅读
- mongoose - 有没有像在猫鼬中保存这样的方法来删除记录?
- c++ - 为什么动态分配的内存总是 16 字节对齐?
- r - 从 Github 安装 R 包时出错
- npm - 依赖项和devDependencies的区别
- c# - C#如何每秒增加值,增量值基于amount.text文件
- python - 如何有效地识别和分类熊猫数据框中的字符串?
- python - 使用索引获得正确的标签?
- c - 将字符与字符串(两个数组)进行比较并打印结果时遇到问题?
- ubuntu - wireguard 客户端和 openvpn 服务器无法遍历数据包
- node.js - 订阅 URL 在 Apollo Graphql 订阅服务器中不起作用