Pubblicare app Web Python nel servizio app Azure in Linux
Visual Studio offre la possibilità di pubblicare un'app Web Python direttamente in app Azure Servizio in Linux. La pubblicazione in app Azure Servizio in Linux include la copia dei file necessari nel server e la configurazione di un file appropriato web.config
che indica al server Web come avviare l'app.
Nota
Linux è l'unica opzione del sistema operativo per l'esecuzione di app Python in servizio app. Python in Windows non è più supportato, come descritto in servizio app Documentazione linux - Supporto Python. Per Windows, è possibile compilare un'immagine del contenitore Windows personalizzata ed eseguire l'immagine in servizio app. Per altre informazioni, vedere Usare un'immagine Docker personalizzata.
Prerequisiti
Visual Studio. Per installare il prodotto, seguire la procedura descritta in Installare Visual Studio.
Progetto di app Web Python basato sul framework Bottle, Flask o Django. È possibile creare un progetto di test per provare il processo di pubblicazione.
Per pubblicare in Azure, è necessario un servizio app Azure di destinazione per la sottoscrizione di Azure.
Se non si ha già una sottoscrizione di Azure, iniziare con un account Azure completo gratuito. Valutare anche la possibilità di iscriversi a Visual Studio Dev Essentials.
Versioni di Visual Studio
Il processo di pubblicazione è diverso in Visual Studio 2017 e versioni successive e in Visual Studio 2015. Entrambi gli approcci sono descritti in questo articolo.
Visual Studio 2015 automatizza alcuni passaggi di installazione, inclusa la
web.config
creazione del file, ma questa automazione limita la flessibilità e il controllo a lungo termine.Visual Studio 2017 e versioni successive richiede più passaggi di installazione manuali, ma offre un controllo più esatto sull'ambiente Python.
Per altre informazioni sulle modifiche tra Visual Studio 2015 e Visual Studio 2017 e versioni successive, vedere il post di blog Pubblicare in Azure in Visual Studio 2017.
Creare un progetto di test
Se non si dispone di un progetto esistente da pubblicare, è possibile creare un progetto di test per provare il processo.
In Visual Studio selezionare File > nuovo > progetto dal menu della barra degli strumenti per aprire la finestra di dialogo Crea un nuovo progetto .
Nella finestra di dialogo immettere bottle nella casella Cerca , selezionare il modello Progetto Web bottle e quindi selezionare Avanti.
Il modello Progetto Web Bottle è incluso nel carico di lavoro sviluppo Python. Per altre informazioni, vedere Modelli di progetto di applicazione Web Python.
Immettere un nome e un percorso per il progetto, quindi selezionare Crea.
Seguire le istruzioni per installare pacchetti esterni, selezionare Installa in un ambiente virtuale e scegliere l'interprete di base preferito per l'ambiente virtuale.
L'ambiente virtuale corrisponde in genere alla versione di Python installata in servizio app.
Quando si è pronti, è possibile testare il progetto in locale selezionando Debug Avvia debug o usando il tasto di scelta rapida F5>.
Creare il servizio app Azure di destinazione
La pubblicazione in Azure richiede un servizio di app Azure di destinazione per una sottoscrizione di Azure.
Creare un servizio app con un'app Web vuota come indicato di seguito:
Accedere al portale di Azure.
Passare alla pagina servizio app s.
Selezionare Crea e scegliere App Web dal menu a discesa. Verrà visualizzata la pagina Crea app Web.
Configurare i valori seguenti nella scheda Informazioni di base:
Impostazione Descrizione Gruppo di risorse Ignorare questo campo. Il sistema aggiorna questo valore dopo aver scelto l'impostazione di runtime. Nome Immettere un nome per l'app Web. Pubblicazione Selezionare Codice. Stack di runtime Scegliere il runtime Python appropriato dal menu a discesa. Dopo aver scelto un elemento, il sistema aggiorna il campo Gruppo di risorse. Area Selezionare un'area di Azure nelle vicinanze. Piano tariffario Selezionare il piano F1 gratuito. Per gli esempi in questo articolo, è possibile ignorare le impostazioni nelle altre schede.
Selezionare Rivedi e crea. Esaminare le selezioni e quindi selezionare Crea.
(Facoltativo) Dopo aver pronto il servizio app, è possibile passare alla risorsa, selezionare Scarica profilo di pubblicazione e salvare il file in locale.
Configurare Python nel servizio app di Azure
Dopo aver creato un servizio app con un'app Web vuota in esecuzione nella sottoscrizione, installare la versione desiderata di Python. Per la pubblicazione da Visual Studio 2017 e versioni successive, registrare il percorso esatto dell'interprete Python installato con l'estensione del sito. Per altre informazioni, vedere Installare interpreti Python.
Se lo si desidera, è anche possibile installare il bottle
pacchetto. Tuttavia, questo pacchetto viene installato in un passaggio successivo di questa procedura dettagliata.
Pubblicare nel servizio app - Visual Studio 2017 e versioni successive
Durante la pubblicazione nel servizio app di Azure da Visual Studio 2017 e versioni successive vengono copiati solo i file del progetto nel server. È necessario creare i file necessari per configurare l'ambiente server.
In Visual Studio Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Aggiungi > nuovo elemento. Nella finestra di dialogo selezionare il modello Web.config di Azure (Fast CGI) e selezionare Aggiungi. Questo passaggio crea un
web.config
file nella radice del progetto.Modificare la
PythonHandler
voce nelweb.config
file in modo che il percorso corrisponda all'installazione di Python nel server, come descritto in Guida di riferimento alla configurazione di IIS (iis.net). Ad esempio, per Python 3.6.1 x64 la voce sarà la seguente:<system.webServer> <handlers> <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer>
Impostare la
WSGI_HANDLER
voce nelweb.config
file in base alle esigenze del framework in uso:Bottle: aggiungere parentesi dopo il
app.wsgi_app
valore come illustrato in questo esempio. Le parentesi sono necessarie perché l'oggetto è una funzione anziché una variabile. È possibile visualizzare la sintassi nelapp.py
file .<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
Flask: modificare il valore
WSGI_HANDLER
in<project_name>.app
dove<project_name>
corrisponde al nome del progetto. È possibile trovare l'identificatore esatto esaminando l'istruzionefrom <project_name> import app
nelrunserver.py
file. Ad esempio, se il progetto è denominato "FlaskAzurePublishExample", la voce viene visualizzata come segue:<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>
Django: sono necessarie due modifiche al file per i
web.config
progetti Django.Modificare il
WSGI_HANDLER
valore indjango.core.wsgi.get_wsgi_application()
. L'oggetto si trova nelwsgi.py
file.<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
Aggiungere la voce seguente subito dopo la voce per la
WSGI_HANDLER
chiave. Sostituire il valoreDjangoAzurePublishExample
con il nome del progetto:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Solo app Django: nel file del
settings.py
progetto Django aggiungere il dominio o l'indirizzo IP dell'URL delALLOWED_HOSTS
sito alla voce. Sostituire 'vspython-test-02.azurewebsites.net' con l'URL:# Change the URL to your specific site ALLOWED_HOSTS = ['vspython-test-02.azurewebsites.net']
Se non si aggiunge l'URL ai risultati della matrice, viene visualizzato l'errore seguente:
DisallowedHost at / Invalid HTTP_HOST header: '\<site URL\>'. You might need to add '\<site URL\>' to ALLOWED_HOSTS.
Quando la matrice è vuota, Django consente
'localhost'
automaticamente come host. Se si aggiunge l'URL di produzione,'localhost'
non è consentito automaticamente come host. Per questo motivo, è possibile mantenere copie separate di sviluppo e produzione delsettings.py
file oppure usare le variabili di ambiente per controllare i valori di runtime.Selezionare il modello.
- In Esplora soluzioni espandere la cartella del progetto.
- Fare clic con il pulsante destro del mouse sulla cartella statica e scegliere Aggiungi > nuovo elemento.
- Selezionare il modello web.config file statici di Azure e selezionare Aggiungi.
Questa azione crea un altro
web.config
file nella cartella statica che disabilita l'elaborazione Python per tale cartella. Questa configurazione invia richieste di file statici al server Web predefinito, anziché usare l'applicazione Python.In Esplora soluzioni salvare il progetto e quindi fare clic con il pulsante destro del mouse sul progetto e scegliere Pubblica.
Nella finestra Pubblica specificare la destinazione di pubblicazione:
Per Destinazione selezionare Azure e quindi avanti.
Per Destinazione specifica selezionare app Azure Servizio (Windows) e selezionare Avanti.
- Se la finestra di dialogo indica che sono necessari altri componenti obbligatori per completare l'installazione, selezionare Fine. Verrà aperto il Programma di installazione di Visual Studio. Confermare le opzioni e selezionare Installa.
Per il servizio app selezionare il servizio app appropriato per la sottoscrizione e selezionare Fine.
Al termine del processo di creazione della pubblicazione, selezionare Chiudi.
Visual Studio visualizza lo stato in una finestra "Attività pubblicazione Web" e anche nella finestra Stato di avanzamento della creazione del profilo di pubblicazione. Quando viene visualizzato il messaggio "Pronto per la pubblicazione" per l'app Web, selezionare Pubblica.
Quando la pubblicazione ha esito positivo, il browser predefinito viene aperto nell'URL del sito. L'URL del sito viene visualizzato anche nella finestra Pubblica .
Se l'URL del sito non viene aperto automaticamente, selezionare Apri sito per visualizzare l'app Web nel browser:
Quando si apre il browser, è possibile che venga visualizzato il messaggio "Impossibile visualizzare la pagina perché si è verificato un errore interno del server". Questo messaggio indica che l'ambiente Python nel server non è completamente configurato, nel qual caso eseguire la procedura seguente:
Assicurarsi di avere installato un'estensione del sito Python appropriata. Per altre informazioni, vedere Avvio rapido: Distribuire un'app Web Python (Django o Flask) nel servizio app Azure.
Controllare il percorso dell'interprete Python nel file
web.config
. Il percorso deve corrispondere esattamente al percorso di installazione dell'estensione del sito selezionata.Usare la console Kudu per aggiornare tutti i pacchetti elencati nel file dell'app
requirements.txt
. Passare alla stessa cartella Python usata nelweb.config
file, ad esempio/home/python361x64
. Eseguire il comando seguente, come descritto nella sezione della console Kudu:python -m pip install --upgrade -r /home/site/wwwroot/requirements.txt
Se vengono visualizzati errori di autorizzazione quando si esegue questo comando, verificare di eseguire il comando nella cartella dell'estensione del sito. Non eseguire il comando in una cartella con una delle installazioni python predefinite di servizio app. Poiché non è possibile modificare gli ambienti predefiniti, il tentativo di installare i pacchetti ha sicuramente esito negativo.
Per un output dettagliato degli errori, aggiungere la riga seguente al
web.config
file all'interno del<system.webServer>
nodo, che fornisce un output degli errori più dettagliato:<httpErrors errorMode="Detailed"></httpErrors>
Provare a riavviare il servizio app dopo l'installazione dei nuovi pacchetti. Un riavvio non è necessario quando si modifica il
web.config
file, perché servizio app esegue un riavvio automatico ogni volta che ilweb.config
file cambia.Suggerimento
Se si apportano modifiche al file
requirements.txt
dell'app, assicurarsi di usare di nuovo la console di Kudu per installare i pacchetti che sono ora elencati nel file.
Dopo aver configurato completamente l'ambiente server, aggiornare la pagina nel browser per visualizzare l'app Web:
Pubblicare nel servizio app - Visual Studio 2015
Seguire questa procedura per pubblicare l'app Web Python in app Azure Servizio in Visual Studio 2015.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Pubblica.
Nella finestra di dialogo Pubblica selezionare Servizio app di Microsoft Azure:
Selezionare Microsoft app Azure Service come destinazione di pubblicazione. Nella finestra di dialogo successiva selezionare un servizio app esistente o selezionare Nuovo per crearne uno nuovo.
I dettagli servizio app vengono visualizzati nella scheda Connessione ion della finestra di dialogo Pubblica:
In base alle esigenze, selezionare Avanti per esaminare altre impostazioni.
Seleziona Pubblica. Dopo la distribuzione dell'applicazione in Azure, il browser predefinito viene aperto nell'URL del sito.
Nell'ambito di questo processo, Visual Studio completa anche i passaggi seguenti:
- Crea un
web.config
file nel server che contiene puntatori appropriati alla funzione dell'appwsgi_app
e all'interprete Python 3.4 predefinito di servizio app. - Disattiva l'elaborazione per i file nella cartella statica del progetto. Le regole per questa azione si trovano nel
web.config
file. - Pubblica l'ambiente virtuale nel server.
- Aggiunge un
web.debug.config
file e gli strumenti di debug per abilitare il debug remoto. Per Visual Studio 2019 versione 16.4 e precedenti, gli strumenti di debug sono ptvsd. Per Visual Studio 2019 versione 16.5 e successive, gli strumenti di debug sono debugpy.
Come accennato in precedenza, questi passaggi automatici semplificano il processo di pubblicazione, ma possono rendere più difficile controllare l'ambiente Python. Ad esempio, il file web.config
viene creato solo nel server ma non viene aggiunto al progetto. Anche il processo di pubblicazione richiede più tempo poiché copia l'intero ambiente virtuale dal computer di sviluppo anziché basarsi sulla configurazione del server.
Alla fine, è possibile mantenere il proprio web.config
file e usare il requirements.txt
file per gestire direttamente i pacchetti nel server. Quando si usa il requirements.txt
file, in particolare, è possibile garantire che gli ambienti di sviluppo e server corrispondano sempre.
Contenuto correlato
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per