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:
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- 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.
Så här kör du programmet lokalt:
Gå till programmappen:
cd msdocs-python-flask-webapp-quickstart
Skapa en virtuell miljö för appen:
py -m venv .venv .venv\scripts\activate
Installera beroendena:
pip install -r requirements.txt
Kör appen:
flask run
Bläddra till exempelprogrammet på
http://localhost:5000
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 kommandotaz 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 attaz 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:
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 versionsautomatisering 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 andraaz 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-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.
- Distribuera med VS Code
- Distribuera med Azure CLI
- Distribuera med hjälp av lokal Git
- Distribuera med en ZIP-fil
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.
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.