Megosztás a következőn keresztül:


Python-webalkalmazások konfigurálása IIS-hez

Ha az Internet Information Servicest (IIS) webkiszolgálóként használja Egy Windows-számítógépen (beleértve Windows rendszerű virtuális gépeket az Azure-on), konfigurálnia kell a Python-webalkalmazást, hogy az IIS megfelelően feldolgozhassa a Python-kódot. A konfiguráció a Python-webalkalmazás web.config fájljának beállításaival történik. Ez a cikk a szükséges beállítások konfigurálását ismerteti.

Előfeltételek

  • A Python telepítve van a Windowson. Webalkalmazás futtatásához először telepítse a Szükséges Python-verziót közvetlenül a Windows gazdagépre a Python-értelmezők telepítése című cikkben leírtak szerint.

    • Azonosítsa a python.exe értelmező helyét. A kényelem érdekében hozzáadhatja ezt a helyet a PATH környezeti változóhoz.
  • A szükséges csomagok telepítve vannak. Dedikált gazdagép esetén a globális Python-környezetet használhatja az alkalmazás futtatásához a virtuális környezet helyett. Ennek megfelelően a pip install -r requirements.txt parancs futtatásával telepítheti az alkalmazás összes követelményét a globális környezetbe.

Állítsa be a web.config-t úgy, hogy a Python-értelmezőre mutasson

A Python-alkalmazás web.config fájlja arra utasítja a Windowson futó IIS-webkiszolgálót (7-es vagy újabb verzió), hogy hogyan kezelje a Python-kérelmeket a HttpPlatformHandler (ajánlott) vagy a FastCGI használatával. A Visual Studio 2015-ös és korábbi verziói automatikusan elvégzik ezeket a módosításokat. A Visual Studio 2017-ben és újabb verzióiban manuálisan kell módosítania a web.config fájlt.

Ha a projekt még nem tartalmaz web.config fájlt, hozzáadhat egyet úgy, hogy a jobb gombbal a projektkönyvtárra kattint, kiválasztja az Új elem hozzáadása > lehetőséget, és web.config keres, vagy létrehoz egy üres web.config XML-fájlt.

1. lehetőség: A HttpPlatformHandler konfigurálása

A HttpPlatform modul közvetlenül egy különálló Python-folyamatnak továbbítja a szoftvercsatorna-kapcsolatokat. Ez az átengedés lehetővé teszi a kívánt webkiszolgálók futtatását, de ehhez helyi webkiszolgálót futtató indítási szkriptre van szükség. Ezt a megközelítést általában Python-webes keretrendszerek, például Flask vagy Django használatával lehet elvégezni. A szkriptet a <httpPlatform>web.config fájl elemében adhatja meg. A processPath attribútum a webhelybővítmény Python-értelmezőjára mutat. Az arguments attribútum a helyi webkiszolgálót futtató indítási szkriptre mutat, ebben az esetben runserver.py, valamint a megadni kívánt argumentumokra:

<?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>

Ebben a példában a HTTP_PLATFORM_PORT környezeti változó azt a portot tartalmazza, amelyen a helyi kiszolgálónak figyelnie kell a localhostkapcsolatait. Ez a példa azt is bemutatja, hogyan hozhat létre egy másik környezeti változót, SERVER_PORT. Szükség szerint létrehozhat és hozzárendelhet környezeti változókat.

2. lehetőség: A FastCGI-kezelő konfigurálása

Másik lehetőségként a FastCGI-t is használhatja az alkalmazások konfigurálásához. A FastCGI egy olyan felület, amely a kérés szintjén működik. Az IIS fogadja a bejövő kapcsolatokat, és minden kérést egy vagy több állandó Python-folyamaton futó Web Server Gateway Interface (WSGI) alkalmazásnak továbbít.

Jegyzet

Bár a projektet a FastCGI használatával is beállíthatja, javasoljuk, hogy a HttpPlatformHandler használatával konfigurálja az alkalmazásokat, mert a WFastCGI projekt már nem tart fenn, és hibákat okozhat.

A FastCGI használatához először telepítse és konfigurálja a wfastcgi csomagot, ahogyan az szerepel a pypi.org/project/wfastcgi/oldalon.

Ezután módosítsa az alkalmazás web.config fájlját úgy, hogy tartalmazza a python.exe végrehajtható fájl és a wfastcgi.py fájl teljes elérési útját a PythonHandler kulcsban. A következő lépések feltételezik, hogy a Python telepítve van a c:\python36-32 mappába, és az alkalmazás kódja a c:\home\site\wwwroot mappában található. Az útvonalaknak megfelelően módosítsa ezeket az értékeket.

  1. Módosítsa a PythonHandler aweb.configfájlban, hogy az elérési út megfeleljen a Python telepítési helyének. További információ: IIS-konfigurációs referencia a 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>
    
  2. A web.config fájl <appSettings> szakaszában adjon hozzá kulcsokat, mint például: WSGI_HANDLER, WSGI_LOG (opcionális) és PYTHONPATH.

    <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>
    

    Ezek a <appSettings> értékek környezeti változókként érhetők el az alkalmazás számára:

    • A PYTHONPATH kulcs értéke szabadon bővíthető, de tartalmaznia kell az alkalmazás gyökerét.
    • A WSGI_HANDLER kulcsnak az alkalmazásból importálható WSGI-alkalmazásra kell mutatnia.
    • A WSGI_LOG kulcs megadása nem kötelező, de az alkalmazás hibakereséséhez a kulcs használata javasolt.
  3. Állítsa be a WSGI_HANDLER aweb.configfájlban a használt keretrendszernek megfelelően:

    • Palack: Zárójelek hozzáadása a app.wsgi_app érték után, ahogyan az ebben a példában látható. A zárójelekre azért van szükség, mert az objektum nem változó, hanem függvény. A szintaxis a app.py fájlban látható.

      <!-- Bottle apps only -->
      <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
      
    • Flask: Módosítsa a WSGI_HANDLER értékét olyan <project_name>.app értékre, ahol <project_name> megegyezik a projekt nevével. A pontos azonosítót from <project_name> import app a runserver.py fájlban található utasítással találja meg. Ha például a projekt neve FlaskAzurePublishExample, a bejegyzés a következőképpen jelenik meg:

      <!-- Flask apps only: Change the project name to match your app -->
      <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>
      
    • Django: Két módosításra van szükség a Django-projektek web.config fájlban.

      • Módosítsa a WSGI_HANDLER értéket django.core.wsgi.get_wsgi_application()értékre. Az objektum a wsgi.py fájlban található.

        <!-- Django apps only -->
        <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
        
      • Közvetlenül a WSGI_HANDLER kulcs bejegyzése után adja hozzá a következő bejegyzést. Cserélje le a DjangoAzurePublishExample értéket a projekt nevére:

        <add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
        
  4. Csak Django-alkalmazások: A Django-projekt settings.py fájljában adja hozzá a webhely URL-címét vagy IP-címét a ALLOWED_HOSTS bejegyzéshez. Cserélje le az 1.2.3.4-et az ÖN URL-címére vagy IP-címére:

    # Change the URL or IP address to your specific site
    ALLOWED_HOSTS = ['1.2.3.4']
    

    Ha nem adja hozzá az URL-címet a tömb eredményeihez, a következő hibaüzenet jelenik meg:

    DisallowedHost at / Invalid HTTP_HOST header: '<site URL>'. You might need to add '<site URL>' to ALLOWED_HOSTS.
    

Ha a tömb üres, a Django automatikusan engedélyezi 'localhost' és '127.0.0.1' gazdagépként. Ha hozzáadja a production URL-címet, ezek a gazdagép-oldalak nem lesznek automatikusan engedélyezve. Ezért érdemes lehet külön fejlesztési és éles példányokat fenntartani a settings.py fájlból, vagy környezeti változókkal szabályozni a futtatókörnyezet értékeit.

Üzembe helyezés IIS-ben vagy Windows rendszerű virtuális gépen

Ha a projektben a megfelelő web.config fájl található, közzéteheti az IIS-t futtató számítógépen a Megoldáskezelőből. Kattintson a jobb gombbal a projektre, válassza a Közzététellehetőséget, majd válassza IIS, FTP stb.. Ebben az esetben a Visual Studio csak a projektfájlokat másolja a kiszolgálóra. Az összes kiszolgálóoldali konfigurációért Ön a felelős.