Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si usa Internet Information Services (IIS) come server Web in un computer Windows (incluso macchine virtuali Windows in Azure), è necessario configurare l'applicazione Web Python per consentire a IIS di elaborare correttamente il codice Python. La configurazione viene eseguita tramite le impostazioni nel file web.config
per l'app Web Python. Questo articolo descrive come configurare le impostazioni necessarie.
Prerequisiti
Python in Windows installato. Per eseguire un'app Web, installare prima di tutto la versione richiesta di Python direttamente nel computer host Windows, come descritto in Installare interpreti Python.
- Identificare la posizione dell'interprete
python.exe
. Per praticità, è possibile aggiungere tale posizione alla variabile di ambiente PATH.
- Identificare la posizione dell'interprete
Pacchetti necessari installati. Per un host dedicato, è possibile usare l'ambiente Python globale per eseguire l'app anziché un ambiente virtuale. Di conseguenza, puoi installare tutti i requisiti dell'app nell'ambiente globale eseguendo il comando
pip install -r requirements.txt
.
Impostare web.config in modo che punti all'interprete Python
Il file web.config
per l'applicazione Python indica al server Web IIS (versione 7 o successiva) in esecuzione in Windows come deve gestire le richieste Python tramite HttpPlatformHandler (scelta consigliata) o FastCGI. Visual Studio versioni 2015 e precedenti apportano automaticamente queste modifiche. Per Visual Studio 2017 e versioni successive, è necessario modificare manualmente il file web.config
.
Se il progetto non contiene già un file di web.config
, è possibile aggiungerne uno facendo clic con il pulsante destro del mouse sulla directory del progetto, selezionando Aggiungi > nuovo elemento e cercando web.config
o creando un file XML web.config
vuoto.
Opzione 1: Configurare HttpPlatformHandler
Il modulo HttpPlatform passa le connessioni socket direttamente a un processo Python autonomo. Questo pass-through consente di eseguire qualsiasi server Web desiderato, ma richiede uno script di avvio che esegue un server Web locale. Questo approccio viene in genere eseguito usando un framework Web Python, ad esempio Flask o Django. Specifichi lo script nell'elemento <httpPlatform>
del file web.config
. L'attributo processPath
punta all'interprete Python dell'estensione del sito. L'attributo arguments
punta allo script di avvio che esegue un server Web locale, in questo caso runserver.py
e qualsiasi argomento da fornire:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="c:\python36-32\python.exe"
arguments="c:\home\site\wwwroot\runserver.py --port %HTTP_PLATFORM_PORT%"
stdoutLogEnabled="true"
stdoutLogFile="c:\home\LogFiles\python.log"
startupTimeLimit="60"
processesPerApplication="16">
<environmentVariables>
<environmentVariable name="SERVER_PORT" value="%HTTP_PLATFORM_PORT%" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
In questo esempio, la variabile di ambiente HTTP_PLATFORM_PORT
contiene la porta che il server locale dovrebbe utilizzare per le connessioni da localhost
. Questo esempio illustra anche come creare un'altra variabile di ambiente, SERVER_PORT
. È possibile creare e assegnare variabili di ambiente in base alle esigenze.
Opzione 2: Configurare il gestore FastCGI
In alternativa, è possibile usare FastCGI per configurare le app. FastCGI è un'interfaccia che funziona a livello di richiesta. IIS riceve le connessioni in ingresso e inoltra ogni richiesta a un'app WSGI in esecuzione in uno o più processi Python persistenti.
Nota
Sebbene sia possibile configurare il progetto usando FastCGI, è consigliabile usare HttpPlatformHandler per configurare le app, perché il progetto WFastCGI non viene più gestito e potrebbe causare bug.
Per usare FastCGI, installare e configurare innanzitutto il pacchetto wfastcgi come descritto in pypi.org/project/wfastcgi/.
Modificare quindi il file di web.config
dell'applicazione in modo da includere i percorsi completi dell'eseguibile python.exe
e il file wfastcgi.py
nella chiave PythonHandler
. I passaggi seguenti presuppongono che Python sia installato nella cartella c:\python36-32 e che il codice dell'app si trova nella cartella c:\home\site\wwwroot. Regolare di conseguenza questi valori per i tuoi percorsi.
Modificare la voce
PythonHandler
nel fileweb.config
in modo che il percorso corrisponda al percorso di installazione di Python. Per ulteriori informazioni, vedere Riferimento alla configurazione IIS (iis.net).<system.webServer> <handlers> <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\python36-32\python.exe|c:\python36-32\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer>
Nella sezione
<appSettings>
del file diweb.config
aggiungere chiavi perWSGI_HANDLER
,WSGI_LOG
(facoltativo) ePYTHONPATH
:<appSettings> <add key="PYTHONPATH" value="c:\home\site\wwwroot"/> <!-- The handler here is specific to Bottle; see the next section. --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/> <add key="WSGI_LOG" value="c:\home\LogFiles\wfastcgi.log"/> </appSettings>
Questi valori
<appSettings>
sono disponibili per l'app come variabili di ambiente:- Il valore della chiave
PYTHONPATH
può essere esteso liberamente, ma deve includere la radice dell'app. - La chiave
WSGI_HANDLER
deve puntare a un'applicazione WSGI importabile dalla tua app. - La chiave
WSGI_LOG
è facoltativa, ma la chiave è consigliata per il debug dell'app.
- Il valore della chiave
Impostare la voce
WSGI_HANDLER
nel fileweb.config
in base alle esigenze del framework in uso:Bottle: aggiungere parentesi dopo il valore
app.wsgi_app
, come illustrato in questo esempio. Le parentesi sono necessarie perché l'oggetto è una funzione anziché una variabile. È possibile visualizzare la sintassi nel fileapp.py
.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
Flask: modificare il valore
WSGI_HANDLER
in<project_name>.app
in cui<project_name>
corrisponde al nome del progetto. È possibile trovare l'identificatore esatto esaminando l'istruzionefrom <project_name> import app
nel filerunserver.py
. Ad esempio, se il progetto è denominatoFlaskAzurePublishExample
, 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 di
web.config
per i progetti Django.Modificare il valore
WSGI_HANDLER
indjango.core.wsgi.get_wsgi_application()
. L'oggetto si trova nel filewsgi.py
.<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
Aggiungere la voce seguente immediatamente dopo la voce per la chiave di
WSGI_HANDLER
. Sostituire il valoreDjangoAzurePublishExample
con il nome del progetto:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
app Django solo: nel file di
settings.py
del progetto Django aggiungere il dominio o l'indirizzo IP dell'URL del sito alla voceALLOWED_HOSTS
. Sostituire '1.2.3.4' con l'URL o l'indirizzo IP:# Change the URL or IP address to your specific site ALLOWED_HOSTS = ['1.2.3.4']
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 automaticamente 'localhost'
e '127.0.0.1'
come host. Se si aggiunge l'URL di produzione, questi siti host non sono consentiti automaticamente. Per questo motivo, è possibile mantenere copie separate di sviluppo e produzione del file di settings.py
oppure usare le variabili di ambiente per controllare i valori di runtime.
Eseguire la distribuzione in IIS o in una macchina virtuale Windows
Quando si dispone del file web.config
corretto nel progetto, è possibile pubblicare nel computer che esegue IIS, dall'Esplora Soluzioni . Fare clic con il pulsante destro del mouse sul progetto, selezionare Pubblicae quindi selezionare IIS, FTP e così via.. In questo caso, Visual Studio copia solo i file di progetto nel server. Si è responsabili di tutte le configurazioni lato server.