IIS için Python web uygulamalarını yapılandırma
Bir Windows bilgisayarda web sunucusu olarak Internet Information Services (IIS) kullandığınızda (Azure 'daWindows sanal makineleri dahil), Python web uygulamasını IIS'nin Python kodunu düzgün şekilde işlemesini sağlayacak şekilde yapılandırmanız gerekir. Yapılandırma, Python web uygulamasının web.config
dosyasındaki ayarlar aracılığıyla gerçekleştirilir. Bu makalede, gerekli ayarların nasıl yapılandırıldığı açıklanmaktadır.
Önkoşullar
Windows üzerinde Python yüklü. Bir web uygulamasını çalıştırmak için, önce Python yorumlayıcılarını yüklemebölümünde açıklandığı gibi, ihtiyacınız olan Python sürümünü doğrudan Windows ana bilgisayar makinesine yükleyin.
-
python.exe
yorumlayıcının konumunu belirleyin. Kolaylık sağlamak için bu konumu PATH ortam değişkeninize ekleyebilirsiniz.
-
Gerekli paketler yüklendi. Özel bir sunucu için, uygulamanızı sanal ortam yerine çalıştırmak üzere genel Python ortamını kullanabilirsiniz. Buna göre,
pip install -r requirements.txt
komutunu çalıştırarak uygulamanızın tüm gereksinimlerini genel ortama yükleyebilirsiniz.
Python yorumlayıcısını işaret etmesi için web.config'ı ayarla
Python uygulamanızın web.config
dosyası, Windows üzerinde çalışan IIS web sunucusuna (sürüm 7 veya üzeri) HttpPlatformHandler (önerilen) veya FastCGI aracılığıyla Python isteklerini nasıl işlemesi gerektiği hakkında bilgi verir. Visual Studio 2015 ve önceki sürümleri bu değişiklikleri otomatik olarak yapar. Visual Studio 2017 ve üzeri için web.config
dosyasını el ile değiştirmeniz gerekir.
Projeniz henüz bir web.config
dosyası içermiyorsa, proje dizinine sağ tıklayıp Yeni Öğe Ekle seçip >web.config
arayarak veya boş bir web.config
XML dosyası oluşturarak bir dosya ekleyebilirsiniz.
Seçenek 1: HttpPlatformHandler'ı yapılandırma
HttpPlatform modülü, yuva bağlantılarını doğrudan tek başına python işlemine geçirir. Bu geçiş, istediğiniz herhangi bir web sunucusunu çalıştırmanıza olanak tanır, ancak yerel bir web sunucusu çalıştıran bir başlangıç betiği gerektirir. Bu yaklaşım genellikle Flask veya Django gibi bir Python web çerçevesi kullanılarak yapılır. Betiği web.config
dosyasının <httpPlatform>
öğesinde belirtirsiniz.
processPath
özniteliği, site uzantısının Python yorumlayıcısını gösterir.
arguments
özniteliği, yerel bir web sunucusu çalıştıran başlangıç betiğinizi( bu örnekte runserver.py
) ve sağlamak istediğiniz bağımsız değişkenleri gösterir:
<?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>
HTTP_PLATFORM_PORT
ortam değişkeni, bu örnekte, yerel sunucunuzun localhost
bağlantılarından gelen bağlantılar için hangi bağlantı noktasında dinlemesi gerektiğini belirtir. Bu örnek, SERVER_PORT
başka bir ortam değişkeninin nasıl oluşturulacağını da gösterir. Ortam değişkenlerini gerektiği gibi oluşturabilir ve atayabilirsiniz.
2. Seçenek: FastCGI işleyicisini yapılandırma
Alternatif olarak, uygulamalarınızı yapılandırmak için FastCGI kullanabilirsiniz. FastCGI, istek düzeyinde çalışan bir arabirimdir. IIS gelen bağlantıları alır ve her isteği bir veya daha fazla kalıcı Python işlemi içinde çalışan bir WSGI uygulamasına iletir.
Not
Projenizi FastCGI kullanarak ayarlayabilmenize rağmen, WFastCGI projesi artık korunmaz ve hatalara neden olabileceğinden, uygulamalarınızı yapılandırmak için HttpPlatformHandler kullanmanızı öneririz.
FastCGI'yi kullanmak için önce pypi.org/project/wfastcgi/'de açıklandığı gibi wfastcgi paketini yükleyin ve yapılandırın.
Ardından, uygulamanızın web.config
dosyasını python.exe
yürütülebilir dosyanın ve wfastcgi.py
dosyasının tam yollarını PythonHandler
anahtarına içerecek şekilde değiştirin. Aşağıdaki adımlarda Python'ın c:\python36-32 klasörüne yüklendiği ve uygulama kodunun c:\home\site\wwwroot klasöründe olduğu varsayılır. Yollarınız için bu değerleri uygun şekilde ayarlayın.
yolun Python yükleme konumuyla eşleşmesi için
web.config
dosyasındakiPythonHandler
girdisini değiştirin. Daha fazla bilgi için bkz. IIS Yapılandırma Başvurusu (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>
web.config
dosyasının<appSettings>
bölümündeWSGI_HANDLER
,WSGI_LOG
(isteğe bağlı) vePYTHONPATH
için anahtarlar ekleyin:<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>
Bu
<appSettings>
değerleri uygulamanızda ortam değişkenleri olarak kullanılabilir:-
PYTHONPATH
anahtarının değeri serbestçe genişletilebilir, ancak uygulamanızın kökünü içermelidir. -
WSGI_HANDLER
anahtarı, uygulamanızdan içeri aktarılabilen bir WSGI uygulamasını işaret etmelidir. -
WSGI_LOG
anahtarı isteğe bağlıdır, ancak anahtarın uygulamanızda hata ayıklaması için kullanılması önerilir.
-
web.config
dosyasındakiWSGI_HANDLER
girdisini kullanmakta olduğunuz çerçeveye uygun olarak ayarlayın:Bottle: Bu örnekte gösterildiği gibi
app.wsgi_app
değerinden sonra parantez ekleyin. Nesne bir değişken yerine bir işlev olduğundan parantezler gereklidir. söz diziminiapp.py
dosyasında görebilirsiniz.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
flask :
WSGI_HANDLER
değerini,<project_name>
projenizin adıyla eşleştiği<project_name>.app
olarak değiştirin.runserver.py
dosyasındakifrom <project_name> import app
deyimine bakarak tam tanımlayıcıyı bulabilirsiniz. Örneğin, projenin adıFlaskAzurePublishExample
ise, girdi aşağıdaki gibi görünür:<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>
Django: Django projeleri için
web.config
dosyasında iki değişiklik yapılması gerekir.WSGI_HANDLER
değerinidjango.core.wsgi.get_wsgi_application()
olarak değiştirin. nesnesiwsgi.py
dosyasındadır.<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
Aşağıdaki girdiyi
WSGI_HANDLER
anahtarının girdisinden hemen sonra ekleyin.DjangoAzurePublishExample
değerini projenizin adıyla değiştirin:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Django uygulamaları yalnızca: Django projesinin
settings.py
dosyasında sitenizin URL alan adını veya IP adresiniziALLOWED_HOSTS
girişine ekleyin. '1.2.3.4' değerini URL veya IP adresinizle değiştirin:# Change the URL or IP address to your specific site ALLOWED_HOSTS = ['1.2.3.4']
URL'nizi dizi sonuçlarına eklemezseniz aşağıdaki hatayı görürsünüz:
DisallowedHost at / Invalid HTTP_HOST header: '\<site URL\>'. You might need to add '\<site URL\>' to ALLOWED_HOSTS.
Dizi boş olduğunda, Django otomatik olarak konak olarak 'localhost'
ve '127.0.0.1'
izin verir. Üretim URL'nizi eklerseniz, bu konak sitelerine otomatik olarak izin verilmez. Bu nedenle, settings.py
dosyasının ayrı geliştirme ve üretim kopyalarını tutmak veya çalışma zamanı değerlerini denetlemek için ortam değişkenlerini kullanmak isteyebilirsiniz.
IIS'ye veya Windows sanal makinesine dağıtma
Projenizde doğru web.config
dosyası olduğunda, Çözüm Gezgini'den IIS çalıştıran bilgisayara yayımlayabilirsiniz. Projeye sağ tıklayın, Yayımlaöğesini seçin ve ardından IIS, FTP vb. seçin. Bu durumda, Visual Studio yalnızca proje dosyalarını sunucuya kopyalar. Tüm sunucu tarafı yapılandırmaları sizin sorumluluğundadır.
İlgili içerik
- IIS Yapılandırma Referansı (iis.net)
- Python yorumlayıcılarını yükleme
- Azure üzerinde Windows sanal makineleri