Snabbstart: Distribuera en Python-webbapp (Django eller Flask) för att Azure App Service

I den här snabbstarten ska du distribuera en Python-webbapp (Django eller Flask) till Azure App Service. Azure App Service är en fullständigt hanterad webbvärdtjänst som stöder Python 3.7 och högre appar som finns i en Linux-servermiljö.

För att slutföra den här snabbstarten behöver du:

  1. Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
  2. Python 3.9 eller senare installerat lokalt.

Obs! Den här artikeln innehåller aktuella instruktioner om hur du distribuerar en Python-webbapp med hjälp av Azure App Service. Python i Windows stöds inte längre.

1 – Exempelprogram

Den här snabbstarten kan slutföras med antingen Flask eller Django. Ett exempelprogram i varje ramverk tillhandahålls som hjälper dig att följa med i den här snabbstarten. Ladda ned eller klona exempelprogrammet till din lokala arbetsstation.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart

Så här kör du programmet lokalt:

  1. Gå till programmappen:

    cd msdocs-python-flask-webapp-quickstart
    
  2. Skapa en virtuell miljö för appen:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Installera beroendena:

    pip install -r requirements.txt
    
  4. Kör appen:

    flask run
    
  5. Bläddra till exempelprogrammet på http://localhost:5000 i en webbläsare.

    Skärmbild av Flask-appen som körs lokalt i en webbläsare

Har du problem? Berätta för oss.

2 – Skapa en webbapp i Azure

För att vara värd för ditt program i Azure måste du skapa Azure App Service webbapp i Azure. Du kan skapa en webbapp med hjälp av Azure Portal, VS Code, Azure Tools-tilläggspaket eller Azure CLI.

Azure CLI-kommandon kan köras på en dator med Azure CLI installerat.

Azure CLI har ett kommando az webapp up som skapar nödvändiga resurser och distribuerar ditt program i ett enda steg.

Om det behövs loggar du in på Azure med az login.

az login

Skapa webbappen och andra resurser och distribuera sedan koden till Azure med az webapp up.

az webapp up --runtime PYTHON:3.9 --sku B1 --logs
  • Parametern --runtime anger vilken version av Python som din app kör. I det här exemplet används Python 3.9. Om du vill visa en lista över alla tillgängliga körningar använder du kommandot az webapp list-runtimes --os linux --output table.
  • Parametern --sku definierar storleken (CPU, minne) och kostnaden för App Service-planen. I det här exemplet används tjänstplanen B1 (Basic), vilket medför en liten kostnad i din Azure-prenumeration. En fullständig lista över App Service planer finns på sidan App Service prissättning.
  • Flaggan --logs konfigurerar standardloggning som krävs för att aktivera visning av loggströmmen omedelbart efter att webbappen har startats.
  • Du kan också ange ett namn med argumentet --name <app-name>. Om du inte anger ett namn genereras ett namn automatiskt.
  • Du kan också inkludera argumentet --location <location-name> där <location_name> är en tillgänglig Azure-region. Du kan hämta en lista över tillåtna regioner för ditt Azure-konto genom att az account list-locations köra kommandot .

Det kan ta några minuter att slutföra kommandot. När kommandot körs visas meddelanden om hur du skapar resursgruppen, App Service-planen och appresursen, konfigurerar loggning och utför ZIP-distribution. Sedan visas meddelandet "Du kan starta appen på http://< app-name.azurewebsites.net>", som är appens URL i Azure.

The webapp '<app-name>' doesn't exist
Creating Resource group '<group-name>' ...
Resource group creation complete
Creating AppServicePlan '<app-service-plan-name>' ...
Creating webapp '<app-name>' ...
Configuring default logging for the app, if not already enabled
Creating zip with contents of dir /home/cephas/myExpressApp ...
Getting scm site credentials for zip deployment
Starting zip deployment. This operation can take a while to complete ...
Deployment endpoint responded with status code 202
You can launch the app at http://<app-name>.azurewebsites.net
{
  "URL": "http://<app-name>.azurewebsites.net",
  "appserviceplan": "<app-service-plan-name>",
  "location": "centralus",
  "name": "<app-name>",
  "os": "<os-type>",
  "resourcegroup": "<group-name>",
  "runtime_version": "python|3.9",
  "runtime_version_detected": "0.0",
  "sku": "FREE",
  "src_path": "<your-folder-location>"
}

Anteckning

Kommandot az webapp up utför följande åtgärder:

Har du problem? Berätta för oss.

3 – Distribuera programkoden till Azure

Azure App-tjänsten stöder flera metoder för att distribuera din programkod till Azure, inklusive stöd för GitHub Actions och alla viktiga CI/CD-verktyg. Den här artikeln fokuserar på hur du distribuerar din kod från din lokala arbetsstation till Azure.

Eftersom föregående steg skapade nödvändiga resurser och distribuerade ditt program i ett enda steg kan du gå vidare till 4 – Bläddra till appen.


Har du problem? Gå först till felsökningsguiden, annars meddelar du oss.

4 – Bläddra till appen

Bläddra till det distribuerade programmet i webbläsaren på URL:en http://<app-name>.azurewebsites.net. Om du ser en standardappsida väntar du en minut och uppdaterar webbläsaren.

Python-exempelkoden kör en Linux-container i App Service med hjälp av en inbyggd avbildning.

Skärmbild av appen som körs i Azure

Grattis! Du har distribuerat din Python-app för att App Service.

Har du problem? Gå först till felsökningsguiden, annars meddelar du oss.

5 – Strömma loggar

Azure App Service samlar in alla meddelanden till konsolen för att hjälpa dig att diagnostisera problem med ditt program. Exempelapparna innehåller print() instruktioner för att demonstrera den här funktionen.

app = Flask(__name__)


@app.route('/')
def index():
   print('Request for index page received')
   return render_template('index.html')

@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'static'),
                               'favicon.ico', mimetype='image/vnd.microsoft.icon')

@app.route('/hello', methods=['POST'])
def hello():
   name = request.form.get('name')

Innehållet i App Service diagnostikloggar kan granskas i Azure Portal, VS Code eller med hjälp av Azure CLI.

Först måste du konfigurera Azure App Service för att mata ut loggar till App Service-filsystemet med hjälp av kommandot az webapp log config.

az webapp log config \
    --web-server-logging filesystem \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Om du vill strömma loggar använder du kommandot az webapp log tail .

az webapp log tail \
    --name $APP_SERVICE_NAME \
    --resource-group $RESOURCE_GROUP_NAME

Uppdatera startsidan i appen eller försök att skapa några loggmeddelanden. Utdata bör se ut ungefär så här.

Starting Live Log Stream ---

2021-12-23T02:15:52.740703322Z Request for index page received
2021-12-23T02:15:52.740740222Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET / HTTP/1.1" 200 1360 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.841043070Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.884541951Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:53.043211176Z 169.254.130.1 - - [23/Dec/2021:02:15:53 +0000] "GET /favicon.ico HTTP/1.1" 404 232 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"

2021-12-23T02:16:01.304306845Z Request for hello page received with name=David
2021-12-23T02:16:01.304335945Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "POST /hello HTTP/1.1" 200 695 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.398399251Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.430740060Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"

Har du problem? Läs felsökningsguiden först, annars meddelar du oss.

Rensa resurser

När du är klar med exempelappen kan du ta bort alla resurser för appen från Azure. Det medför inga extra avgifter och din Azure-prenumeration är inte rensad. Om du tar bort resursgruppen tas även alla resurser i resursgruppen bort och är det snabbaste sättet att ta bort alla Azure-resurser för din app.

Ta bort resursgruppen med hjälp av kommandot az group delete .

az group delete \
    --name msdocs-python-webapp-quickstart \
    --no-wait

Argumentet --no-wait tillåter att kommandot returneras innan åtgärden har slutförts.

Har du problem? Berätta för oss.

Nästa steg