Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous utilisez Internet Information Services (IIS) comme serveur web sur un ordinateur Windows (y compris machines virtuelles Windows sur Azure), vous devez configurer l’application web Python pour permettre à IIS de traiter correctement le code Python. La configuration est effectuée via les paramètres du fichier web.config pour l’application web Python. Cet article explique comment configurer les paramètres nécessaires.
Conditions préalables
Python sur Windows installé. Pour exécuter une application web, installez d’abord votre version requise de Python directement sur l’ordinateur hôte Windows, comme décrit dans Installer des interpréteurs Python.
- Identifiez l’emplacement de l’interpréteur python.exe . Pour plus de commodité, vous pouvez ajouter cet emplacement à votre variable d’environnement PATH.
Packages requis installés. Pour un hôte dédié, vous pouvez utiliser l’environnement Python global pour exécuter votre application plutôt qu’un environnement virtuel. En conséquence, vous pouvez installer toutes les exigences de votre application dans l’environnement global en exécutant la commande
pip install -r requirements.txt.
Définissez web.config pour pointer vers l’interpréteur Python
Le fichier web.config de votre application Python indique au serveur web IIS (version 7 ou ultérieure) s’exécutant sur Windows sur la façon dont il doit gérer les requêtes Python via HttpPlatformHandler (recommandé) ou FastCGI. Visual Studio versions 2015 et antérieures effectuent automatiquement ces modifications. Pour Visual Studio 2017 et versions ultérieures, vous devez modifier manuellement le fichier web.config .
Si votre projet ne contient pas encore de fichier web.config , vous pouvez en ajouter un en cliquant avec le bouton droit sur le répertoire du projet, en sélectionnant Ajouter > un nouvel élément et en recherchant web.config ou en créant un fichier XML videweb.config .
Option 1 : Configurer HttpPlatformHandler
Le module HttpPlatform transmet les connexions de socket directement à un processus Python autonome. Ce pass-through vous permet d’exécuter n’importe quel serveur web de votre choix, mais nécessite un script de démarrage qui exécute un serveur web local. Cette approche est généralement effectuée à l’aide d’une infrastructure web Python, telle que Flask ou Django. Vous spécifiez le script dans l’élément <httpPlatform> du fichier web.config . L’attribut processPath pointe vers l’interpréteur Python de l’extension de site. L’attribut arguments pointe vers votre script de démarrage qui exécute un serveur web local, dans ce cas runserver.py et tous les arguments que vous souhaitez fournir :
<?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>
Dans cet exemple, la variable d’environnement HTTP_PLATFORM_PORT contient le port sur lequel votre serveur local doit écouter les connexions à partir de localhost. Cet exemple montre également comment créer une autre variable d’environnement, SERVER_PORT. Vous pouvez créer et affecter des variables d’environnement en fonction des besoins.
Option 2 : Configurer le gestionnaire FastCGI
Vous pouvez également utiliser FastCGI pour configurer vos applications. FastCGI est une interface qui fonctionne au niveau de la requête. IIS reçoit des connexions entrantes et transfère chaque requête à une application WSGI (Web Server Gateway Interface) s’exécutant dans un ou plusieurs processus Python persistants.
Remarque
Bien que vous puissiez configurer votre projet à l’aide de FastCGI, nous vous recommandons d’utiliser HttpPlatformHandler pour configurer vos applications, car le projet WFastCGI n’est plus géré et peut entraîner des bogues.
Pour utiliser FastCGI, commencez par installer et configurer le package wfastcgi comme décrit dans pypi.org/project/wfastcgi/.
Ensuite, modifiez le fichier web.config de votre application pour inclure les chemins complets vers l’exécutable python.exe et le fichier wfastcgi.py dans la PythonHandler clé. Les étapes suivantes supposent que Python est installé dans le dossier c :\python36-32 et que le code de l’application se trouve dans le dossier c :\home\site\wwwroot. Ajustez ces valeurs en fonction de vos chemins d’accès.
Modifiez l’entrée
PythonHandlerdans le fichier web.config afin que le chemin corresponde à l’emplacement d’installation de Python. Pour plus d'informations, consultez la Référence de configuration IIS sur 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>Dans la
<appSettings>section du fichier web.config , ajoutez des clés pourWSGI_HANDLER,WSGI_LOG(facultatif) etPYTHONPATH:<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>Ces valeurs
<appSettings>sont disponibles pour votre application en tant que variables d’environnement :- La valeur de la clé
PYTHONPATHpeut être étendue librement, mais elle doit inclure la racine de votre application. - La clé
WSGI_HANDLERdoit pointer vers une application WSGI pouvant être importée à partir de votre application. - La clé
WSGI_LOGest facultative, mais la clé est recommandée pour le débogage de votre application.
- La valeur de la clé
Définissez l’entrée
WSGI_HANDLERdans le fichier web.config le cas échéant pour l’infrastructure que vous utilisez :Bottle: ajoutez des parenthèses après la valeur de
app.wsgi_app, comme illustré dans cet exemple. Les parenthèses sont nécessaires, car l’objet est une fonction plutôt qu’une variable. Vous pouvez voir la syntaxe dans le fichier app.py .<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>Flask: remplacez la valeur
WSGI_HANDLERpar<project_name>.appoù<project_name>correspond au nom de votre projet. Vous trouverez l’identificateur exact en examinant l’instructionfrom <project_name> import appdans le fichier runserver.py . Par exemple, si le projet est nommé FlaskAzurePublishExample, l’entrée apparaît comme suit :<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>Django : deux modifications sont nécessaires au fichier web.config pour les projets Django.
Remplacez la valeur
WSGI_HANDLERpardjango.core.wsgi.get_wsgi_application(). L’objet se trouve dans le fichier wsgi.py .<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>Ajoutez l’entrée suivante immédiatement après l’entrée de la clé
WSGI_HANDLER. Remplacez la valeurDjangoAzurePublishExamplepar le nom de votre projet :<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Applications Django uniquement : dans le fichier settings.py du projet Django, ajoutez votre domaine d’URL de site ou votre adresse IP à l’entrée
ALLOWED_HOSTS. Remplacez « 1.2.3.4 » par votre URL ou adresse IP :# Change the URL or IP address to your specific site ALLOWED_HOSTS = ['1.2.3.4']Si vous n’ajoutez pas votre URL aux résultats du tableau, l’erreur suivante s’affiche :
DisallowedHost at / Invalid HTTP_HOST header: '<site URL>'. You might need to add '<site URL>' to ALLOWED_HOSTS.
Lorsque le tableau est vide, Django autorise automatiquement 'localhost' et '127.0.0.1' en tant qu’hôtes. Si vous ajoutez votre URL de production, ces sites hôtes ne sont pas automatiquement autorisés. Pour cette raison, vous pouvez conserver des copies de développement et de production distinctes du fichier settings.py , ou utiliser des variables d’environnement pour contrôler les valeurs du runtime.
Déployer sur IIS ou une machine virtuelle Windows
Lorsque vous disposez du fichier web.config correct dans votre projet, vous pouvez publier sur l’ordinateur exécutant IIS à partir de l’Explorateur de solutions. Cliquez avec le bouton droit sur le projet, sélectionnez Publier, puis sélectionnez IIS, FTP, etc.. Dans ce cas, Visual Studio copie uniquement les fichiers projet sur le serveur. Vous êtes responsable de toutes les configurations côté serveur.