IIS'de FastCGI'de Python nasıl kurulur
FastCGI IIS 7+ üzerinde Python'u nasıl kuracağınız aşağıda iyi bir DJango kurulumunun yolunu açar
... Python kodunuzda ilerlemenizi sağlayan bir hata ayıklayıcıyı sürece bağlayabilirsiniz
Bu örnekte IIS yönetim konsolu kullanılmaz, ancak sonuçta elde edilen yapılandırma dosyalarının içeriği listelenir
Aşama 1
Python + iyi bir hata ayıklayıcı yükleyin (bu örnekte mükemmel bir araç bulduğum WingIDE kullanılıyor) Bu örnekte c: \ python27 klasörü varsayılmıştır
Adım 2
Bir web klasörü oluşturun, örneğin localhost c: \ inetpub \ wwwroot \ mypythonfolder üzerine ve aşağıdaki web.config dosyasını buraya yerleştirin:
| scriptProcessor yönergesindeki dikey çizgi karakteri. Bu, IIS tarafından komut dosyasını bir fastCgi uygulamasına eşlemek için kullanılır (3. adım). Aşağıdaki 3. adımdaki tam yol + dikey çizgi karakteri + bağımsız değişken ayarlarını karakter karakter eşleştirmelidir.
Aşama 3
C: \ windows \ system32 \ inetsrc \ config klasöründeki applicationHost.config dosyasında, aşağıdaki bölüme yer verin:
<fastCgi>
<application fullPath="c:\python27\python.exe" arguments="c:\python27\lib\mylib\myfcgi.py" monitorChangesTo="C:\Python27\Lib\r4a\r4afcgi.py" stderrMode="ReturnStdErrIn500" maxInstances="4" idleTimeout="300" activityTimeout="300" requestTimeout="90" instanceMaxRequests="200" protocol="NamedPipe" queueLength="1000" flushNamedPipe="true" rapidFailsPerMinute="10" />
</fastCgi>
4. Adım
C: \ python27 \ lib \ mylib \ myfcgi.py dosyasında aşağıdaki kodu girin:
import wingdbstub
import os, io, sys ret = "ortam: \ r \ n" os.environ.keys () içindeki param için (): ret = ret + "% s =% s \ r \ n"% (param, os.environ [ param]) ret = ret + "\ r \ nArgs:" sys.argv'deki arg için: ret = ret + arg handle = io.open ("c: \ temp \ myfcgi.log", 'wb') handle.write (ret) handle.close ()
Adım 5
IUSR'nin c: \ temp klasörünüze yazma haklarına sahip olduğundan emin olun
6. Adım
Wingdbstub.py ve wingdebugpw'yi c: \ python27 \ lib \ mylib \ klasörünüze koyun. Bu kanat tarafında hata ayıklamayı mümkün kılacaktır. Bu dosyalar kanat kurulumunuzla birlikte verilir. Not: Python'un da kodunuzu wingstub.pyc'ye derlemesi gerekiyorsa, python işlemi IIS tarafından bu hesap altında başlatılacağı için IUSR'ın bu klasörde yazma haklarına ihtiyacı vardır.
6. Adım
Wingdb'yi açın ve 'import os, io, sys' satırında bir kesme noktası ayarlayın
Adım 7
Tarayıcınızda vurun http: // localhost / mypythonfolder
Her şey yolunda giderse, çalışan kodun kesme noktanızda görüntülenmesi için wingide tetiklenmelidir. Değilse: - ya bir güvenlik duvarı sorunu var. Python işlemi, bir tcp bağlantısı aracılığıyla WingIDE arayüzü ile iletişim kurar - veya wingide'da güvenlikle ilgili bir sorun vardır. Wingdebugpw dosyasının, temel olarak wingide yüklemenize karşı erişimi doğrulayan bir parola veya jeton içeren doğru sürümüne ihtiyacı vardır. Bu durumda olmasaydı, bilgisayarınıza tcp erişimi olan herkes kodunuza karşı hata ayıklama olabilir.
8. Adım
C: \ temp'de günlük dosyasının oluşturulduğunu doğrulayın. 7. adıma devam edemiyorsanız bu da işe yaramalıdır
9. Adım
Bu sayfanın hata ayıklayıcıyı tetiklediğini, ancak web sayfasını tarayıcıya döndürmediğini unutmayın. Bazı arka plan bilgileri: web sunucusu fastcgi'yi 'kayıtlar' aracılığıyla iletir. Bu, her bir kullanıcı isteğinin uygulamanıza birden fazla ayrı 'kayıt' halinde paketlendiği anlamına gelir. Her kayıt, bir isteğin başlangıcını, sorgu dizesini, değişkenleri vb. Gösteren bir veri yapısıdır. Bu kayıtların tek bir istekte paketinin açılması biraz zahmetlidir, http: //www.fastcgi'nin fastcgi belirtimini izler.
.com / devkit / doc / fcgi-spec.html # S1
C: \ python27 \ lib \ mylib \ myfcgi.py içeriği olarak helicontech tarafından sağlanan zoofcgi.py dosyasının bir kopyasını bıraktım. Bu python dosyası bu kayıtları çözebilir ve bir sayfayı sunabilir ve hata ayıklamak için oldukça ilginçtir. Ayrıca helicontech isteğe bağlı olarak IIS ve zoofcgi.py arasında oturan bir dll sağlar ancak bu dll kesinlikle gerekli değildir. Ben msft tarafından sağlanan fastcgi uygulamasının biraz geliştirilmiş ve genel bir sürümünü uyguladığına inanıyorum. Ancak kendi dll kullandığınızda, kodunuzda adım atmak istediğinizde işlem oldukça hızlı bir şekilde sonlandırılır ve IIS / DLL hiçbir yanıt bir sn veya 2 içinde geri geldiği sonucuna varınca python işlemini öldürür.
Bu kadar. Prensip olarak, IIS ile python kodunuz arasındaki iletişim adlandırılmış kanallarla yapılır. Tcp soketlerini kullanarak ayarlayabilmelisiniz, ancak hangi bağlantı noktasının kullanıldığını anlayamadım (stdin'in daha sonra seçilebilecek () edilebileceği bağlantı noktasına dönüştürülmesi gerektiğine inanıyorum ama bunu vermedim herhangi bir girişim)