python - 当开发服务器运行时(在 Kudu 上),基于 Django 的 Azure Web App 陷入困境

标签 python django azure azure-web-app-service

为了将应用程序从 Heroku 迁移到 Azure,我最近创建了一个 Django Azure Web 应用程序,将其连接到我的 GitHub 帐户,并通过 git push azure master 将我现有的应用程序代码推送到它上面。经过一些小问题后,我也得到了正确安装所需的所有软件包(小问题是安装需要 pythonwheels 的软件包)。

我尚未在应用程序上运行 syncdb(数据库托管在单独的虚拟机上;它是 postgresql)。但我确实尝试运行 env\scripts\python manage.py runserver 来查看开发服务器是否会启动。 事实并非如此; Kudu 卡住了(如下所示)。 enter image description here

如何让它运行?我的web.config文件如下:

<configuration>
  <appSettings>
    <add key="pythonpath" value="%SystemDrive%\home\site\wwwroot" />
    <add key="WSGI_HANDLER" value="hostingstart-python.application" />
    <add key="DJANGO_SETTINGS_MODULE" value="unconnectedreddit.settings" />
  </appSettings>
</configuration>

我的项目名为 unconnectedreddit,它位于 wwwroot 内。文件 manage.pyProcfileweb.config 也放置在这个级别。 Procfile 是 Heroku 的遗产;它包含有关在 Heroku 上运行什么进程的代码,例如: web: newrelic-admin run-program waitress-serve --port=$PORT unconnectedreddit.wsgi:application

文件夹unconnectedreddit(参见附图)包含settings.pywsgi.py文件。它还包含一个名为 template 的文件夹和一个名为 static 的文件夹。

应用程序文件位于 links 文件夹内(即 models.pyviews.pyforms.py).

所有软件包都安装在 env/Lib/site-packages/ 中。

有人可以解释我的设置缺少什么以及如何纠正它吗?也许是 web.config 配置错误,也许我需要 Azure 中相当于 Heroku 的 Procfile 的内容(尽管这对于开发服务器来说真的有必要吗?),或者可能是其他原因。

如果您觉得需要,我会分享更多信息。

最佳答案

将 Django 应用程序作为 Web 应用程序运行应该没问题。文档建议为应用程序设置一个 virtualenv,请参阅 https://azure.microsoft.com/en-us/documentation/articles/web-sites-python-create-deploy-django-app/#web-app-development---maclinux---command-line

除非您需要使用 HttpPlatformHandler,否则

Web.config 是不必要的。如果您有入门需求,请参阅http://www.iis.net/learn/extensions/httpplatformhandler/httpplatformhandler-configuration-reference .

每个 Web 应用程序都会分配一个端口号,该端口号绑定(bind)到 HTTP_PLATFORM_PORT 环境变量。应用服务将终止传入请求并将其转发到指定端口。如果 Web 应用程序由于某种原因无法运行 Django 应用程序,您可以显式告诉 HttpPlatformHandler 如何执行该应用程序,例如通过编写一个运行 python manage.py runserver 0.0.0.0:%HTTP_PLATFORM_PORT% 的批处理文件并让 HttpPlatformHandler 执行该文件。

关于python - 当开发服务器运行时(在 Kudu 上),基于 Django 的 Azure Web App 陷入困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34005852/

相关文章:

python - @login_required 正在丢失当前指定的语言

azure - 无法在西德区域创建 Azure 函数应用 - 该区域的配额为 0 个实例

python - 将两行中的值附加到 key 对中

python - 如何在 pandas query() 中使用 str 方法

django - Tastypie - 允许未经身份验证的用户只读权限,同时允许授权的写入权限

azure - 是否有任何公开的邮件列表/消费者地址服务或数据库?

java - Azure Java函数,获取BlobOutput路径注释中的HttpTrigger主体属性值

python - 'e' 是格式为 '%e %B %Y' 的错误指令

python - 在 Python 中附加到嵌套列表或字典

python - 使用补丁方法时,出现错误 : "PATCH" not allowed