Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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ükleme bölümünde açıklandığı gibi gerekli Python sürümünüzü 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.txtkomutunu ç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 birweb.config dosyası içermiyorsa, proje dizinine sağ tıklayıp Yeni Öğe Ekle'yi > 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.
<httpPlatform> öğesini web.config dosyasında 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 durumda runserver.py ve sağlamak istediğiniz bağımsız değişkenleri işaret eder:
<?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 localhostbağlantılarından gelen bağlantılar için hangi bağlantı noktasında dinlemesi gerektiğini belirtir. Bu örnek, SERVER_PORTbaş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.
Seçenek 2: 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 Web Sunucusu Ağ Geçidi Arabirimi (WSGI) uygulamasına iletir.
Not
Projenizi FastCGI kullanarak ayarlayabilmenize rağmen, WFastCGI projesi artık korunmadığından 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ı, PythonHandler anahtarına python.exe yürütülebilir dosyasına ve wfastcgi.py dosyasına ait tam yolları ekleyecek ş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.
PythonHandleryolun Python yükleme konumuyla eşleşmesi için web.config dosyasındaki girdiyi değiştirin. Daha fazla bilgi için bkz. iis.net üzerinde IIS Yapılandırma Başvurusu.<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><appSettings>web.config dosyasının<appSettings>bölümünde,WSGI_HANDLERve (isteğe bağlı)WSGI_LOGilePYTHONPATHiç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:-
PYTHONPATHanahtarının değeri serbestçe genişletilebilir, ancak uygulamanızın kökünü içermelidir. -
WSGI_HANDLERanahtarı, uygulamanızdan içeri aktarılabilen bir WSGI uygulamasını işaret etmelidir. -
WSGI_LOGanahtarı isteğe bağlıdır, ancak anahtarın uygulamanızda hata ayıklaması için kullanılması önerilir.
-
WSGI_HANDLERweb.config dosyasındaki girdiyi kullanmakta olduğunuz çerçeveye uygun olarak ayarlayın:Bottle: Bu örnekte gösterildiği gibi
app.wsgi_appdeğerinden sonra parantez ekleyin. Nesne bir değişken yerine bir işlev olduğundan parantezler gereklidir. söz dizimini app.py dosyasında görebilirsiniz.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>flask :
WSGI_HANDLERdeğerini,<project_name>.appprojenizin adıyla eşleştiği<project_name>olarak değiştirin.from <project_name> import appdosyasındaki deyimine bakarak tam tanımlayıcıyı bulabilirsiniz. Örneğin, projenin adı FlaskAzurePublishExample ise, giriş 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_HANDLERdeğerinidjango.core.wsgi.get_wsgi_application()olarak değiştirin. Nesnesi wsgi.py dosyasındadır.<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>Aşağıdaki girdiyi
WSGI_HANDLERanahtarının girdisinden hemen sonra ekleyin.DjangoAzurePublishExampledeğerini projenizin adıyla değiştirin:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Yalnızca Django uygulamaları: Django projesinin settings.py dosyasında, girişe
ALLOWED_HOSTSsite URL etki alanınızı veya IP adresinizi 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ı korumak 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ı varsa , Çözüm Gezgini'nden 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.