Snabbstart: Distribuera en Python-webbapp (Django eller Flask) till Azure App Service

I den här snabbstarten distribuerar du 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-appar som finns i en Linux-servermiljö.

Följande krävs för att slutföra den här snabbstarten:

Kommentar

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 i http://localhost:5000 en webbläsare.

    Screenshot of the Flask app running locally in a browser

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 En Azure App Service-webbapp i Azure. Du kan skapa en webbapp med hjälp av Azure CLI, VS Code, Azure Tools-tilläggspaketet eller Azure-portalen.

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 med priser för App Service.
  • 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 något 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. 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>"
}

Kommentar

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

  • Skapa en standardresursgrupp.

  • Skapa en standardplan för App Service.

  • Skapa en app med det angivna namnet.

  • Zip-distribuera alla filer från den aktuella arbetskatalogen, med build automation aktiverat.

  • Cachelagra parametrarna lokalt i .azure/config-filen så att du inte behöver ange dem igen när du distribuerar dem senare med az webapp up eller andra az webapp kommandon från projektmappen. De cachelagrade värdena används automatiskt som standard.

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

3 – Distribuera programkoden till Azure

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

az webapp up Eftersom kommandot skapade nödvändiga resurser och distribuerade programmet i ett enda steg kan du gå vidare till 4 – Bläddra till appen.


Har du problem? Gå först till felsökningsguiden, annars kan du meddela 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.

Screenshot of the app running in Azure

Grattis! Du har distribuerat Python-appen till App Service.

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

5 – Stream-loggar

Azure App Service samlar in alla meddelanden som skickas 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-diagnostikloggarna kan granskas med hjälp av Azure CLI, VS Code eller Azure-portalen.

Först måste du konfigurera Azure App Service till utdataloggar till App Service-filsystemet med 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 med andra begäranden om att generera vissa 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? Gå först till felsökningsguiden, annars kan du meddela 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 kommandot az group delete .

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

Argumentet --no-wait gör att kommandot kan returneras innan åtgärden är klar.

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

Nästa steg