Flask Azure Web应用已成功部署,但显示默认页面

时间:2019-07-21 21:12:43

标签: python azure flask web-applications azure-web-app-service

我使用本地git在azure Web服务中部署了python flask应用程序。部署中心的状态显示为“成功”,但是当我转到网页时,它仍然是默认页面,告诉我我正在运行python 3.6.6。

当我导航到kudu git clone uri时,它说“没有为'/testapp1.git'注册的路线”

kudu中的/ wwwroot文件夹还具有以下文件。

{% extends "layout.html" %}
{% block content %}
    {% for post in posts.items %}
        <article class="media content-section">
            <img class="rounded-circle article-img" src="{{ url_for('static', filename='profile_pics/' + post.author.image_file) }}">

          <div class="media-body">
            <div class="article-metadata">

                <div align="left">
                    <a class="mr-2 text-secondary" href="{{ url_for('user_posts', username=post.author.username) }}">{{ post.author.username }}</a>
                </div>

                <div align="left">
                    <small class="text-muted">Posted on: {{ post.date_posted.strftime('%Y-%m-%d') }}</small>
                </div>

                <div align="right">
                    <a class="mr-2 text-secondary" href="{{ url_for('flag', post_id=post.id, user_id=current_user.id) }}">Flag Post</a>
                </div>

                <div align="right">
                    <a class="mr-2 text-secondary" href="{{ url_for('add_favorite', post_id=post.id, user_id=current_user.id) }}">Favorite Post ({{ get_favorite_count(post.id) }})</a>
                </div>

                <div align="right">
                    <a class="mr-2 text-secondary" href="{{ url_for('post', post_id=post.id) }}">Comments ({{ get_comment_count(post.id) }})</a>
                </div>


            </div>
                <h3><a class="article-title" href="{{ url_for('post', post_id=post.id) }}">{{ post.title }}</a></h3>
                <p class="article-content justify-content-center">{{ post.content }}</p>
                <br>
                {% for url in post.urls.split('||') %}
                    {% if 'youtube.com' in url %}
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe class="embed-responsive-item"
                                    src="{{ get_youtube_id_from_url(url) }}" allowfullscreen="" frameborder="0">
                            </iframe>
                        </div>
                        <a href="{{ url }}">Link</a>
                    {% elif 'soundcloud.com' in url %}
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe class="embed-responsive-item" scrolling="no" frameborder="no"
                                 src="{{ 'https://w.soundcloud.com/player/?url=' + url }}">
                            </iframe>
                        </div>
                        <a href="{{ url }}">Link</a>
                    {% elif 'spotify.com' in url %}
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe class="embed-responsive-item"
                                    src="{{ get_spotify_embed_url(url) }}" allowfullscreen allow="encrypted-media">
                            </iframe>
                        </div>
                        <a href="{{ url }}">Link</a>
                    {% elif 'vimeo.com' in url %}
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe class="embed-responsive-item" scrolling="no" frameborder="no"
                                 src="{{ 'https://player.vimeo.com/video/' + url.split('https://vimeo.com/')[1] }}">
                            </iframe>
                        </div>
                        <a href="{{ url }}">Link</a>
                    {% elif 'tumblr.com' in url %}
                        <div class="embed-responsive embed-responsive-16by9">
                            <iframe class="embed-responsive-item"
                                    src="{{ url }}" frameborder="0">
                            </iframe>
                        </div>
                        <a href="{{ url }}">Link</a>
                    {% else %}
                        <a href="{{ url }}">Link</a>
                        <br>
                    {% endif %}
                {% endfor %}
                <br>
                <br>
                <p class="text-muted"><strong>Tags:</strong></p>
                  {% for tag in post.tags.replace('  ', ' ').strip(',').split(' ') %}
                    <a class="btn btn-light" href="{{url_for('tag_posts', tag=tag)}}">{{tag.strip('#').strip(' ').lower() }}</a>
                  {% endfor %}
                  <br>
                    <form method="POST" action="" enctype="multipart/form-data">
                        {{ comment_form.hidden_tag() }}
                        <fieldset class="form-group">

                            <br>
                            <br>
                            <p class="text-muted"><strong>Add a comment:</strong></p>
                            <div class="form-group">

                                {% if comment_form.comment_string.errors %}
                                    {{ comment_form.comment_string(class="form-control form-control-lg is-invalid") }}
                                    <div class="invalid-feedback">
                                        {% for error in comment_form.comment_string.errors %}
                                            <span>{{ error }}</span>
                                        {% endfor %}
                                    </div>
                                {% else %}
                                    {{ comment_form.comment_string(class="form-control form-control-lg") }}
<!--                                    {{ add_comment(post_id=post.id) }}-->
                                {% endif %}

                            </div>

                        </fieldset>
                        <div class="form-group">
                            {{ comment_form.submit(class="btn btn-secondary") }}
                        </div>
                    </form>
                  <br>
                  <p class="text-muted mt-4"><strong>Street Cred:  </strong>{{ get_upvote_count(post.id) }}</p>
                <a class="btn btn-secondary mb-4" href="{{url_for('upvote', user_id=post.author.id, post_id=post.id)}}">Upvote</a>
          </div>
        </article>

    {% endfor %}
    {% for page_num in posts.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
        {% if page_num %}
            {% if posts.page == page_num %}
                <a class="btn btn-secondary mb-4" href="{{ url_for('home', page=page_num) }}">{{ page_num }}</a>
            {% else %}
                <a class="btn btn-outline-info mb-4" href="{{ url_for('home', page=page_num) }}">{{ page_num }}</a>
            {% endif %}
        {% else %}
            ...
        {% endif %}
    {% endfor %}
{% endblock content %}

潜在的问题可能是因为web.config文件仍在引用hostingstart-python.application。

env
static (css folder)
__pycache__
app.py
hostingstart-python.html
hostingstart-python.py
index.html
requirements.txt
web.config

我尝试按照https://docs.microsoft.com/en-us/azure/app-service/containers/how-to-configure-python上的说明进行操作,但这是针对Linux的,因此我不确定在运行Windows 10时该怎么做。

1 个答案:

答案 0 :(得分:0)

请参考我的工作步骤,看看错误是否仍然出现。

您在Managing Python on Azure App Service中发现,Azure App Service为您提供了site extension。您可以在KUDU console上安装软件包。

第1步:创建一个Azure Web应用并添加扩展程序(这里是Python 3.6.4 x64)

enter image description here

第2步:发布您的flask项目并添加web.config

web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="WSGI_HANDLER" value="<Your Project Name>.app"/>
    <add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
    <add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
  </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>

第3步:切换到Kudu CMD并命令cd Python361x64touch get-pip.py,然后通过“编辑”按钮将网址https://bootstrap.pypa.io/get-pip.py的内容复制到get-pip.py中,然后运行{ {1}}安装点子工具。

enter image description here

第4步:通过python get-pip.py

安装所需的任何软件包

enter image description here

顺便说一句,您可以删除默认主页。