IIS पर FastCGI पर पायथन कैसे स्थापित करें
यहां बताया गया है कि FastCGI IIS 7+ पर पायथन को कैसे स्थापित किया जाए ताकि एक अच्छे डीजेंगो सेटअप का रास्ता खुल सके
... और इस प्रक्रिया में एक डिबगर को हुक करने में सक्षम होने के लिए आप अपने पायथन कोड के माध्यम से कदम बढ़ा सकते हैं
यह उदाहरण IIS प्रबंधन कंसोल का उपयोग नहीं करता है, लेकिन परिणामी कॉन्फ़िगरेशन फ़ाइलों की सामग्री को सूचीबद्ध करता है
चरण 1
Python + एक अच्छा डीबगर स्थापित करें (यह उदाहरण WingIDE का उपयोग करता है जो मुझे एक उत्कृष्ट उपकरण मिला है) यह उदाहरण फ़ोल्डर को मानता है: \ python27
चरण 2
एक वेब फ़ोल्डर बनाएँ, जैसे कि लोकलहोस्ट c: \ inetpub \ wwwroot \ mypythonfolder पर और इसमें निम्नलिखित web.config फ़ाइल डालें:
नोट | स्क्रिप्टप्रोसेसर निर्देश में पाइप चरित्र। इसका उपयोग IIS द्वारा स्क्रिप्ट को fastCgi एप्लिकेशन (चरण 3) में मैप करने के लिए किया जाता है। यह नीचे चरण 3 से पूर्णपथ + पाइप चरित्र + तर्क सेटिंग्स द्वारा चरित्र से मेल खाना चाहिए।
चरण 3
ApplicationHost.config फ़ाइल में c: \ windows \ system32 \ inetsrc \ config फ़ोल्डर में अनुभाग में निम्नलिखित जगह है:
<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
C: \ python27 \ lib \ mylib \ myfcgi.py में निम्नलिखित कोड डालें:
import wingdbstub
आयात os, io, sys ret = "वातावरण: \ r \ n" के लिए os.environ.keys (): ret = ret + "% s =% s \ r \ n"% (param, os.environ [] param]) ret = "+ r \ n \ n": sys.argv में arg के लिए: ret = ret + arg handle = io.open ("c: \ temp \ myfcgi.log", 'wb') handle.write (सेवानिवृत्त)
चरण 5
सुनिश्चित करें कि IUSR को आपके c: \ temp फ़ोल्डर में लिखने के अधिकार हैं
चरण 6
Wingdbstub.py और wingdebugpw को अपने c: \ python27 \ lib \ mylib \ फ़ोल्डर में रखें। यह विंगड में डिबगिंग को सक्षम करेगा। ये फाइलें आपके विंग इंस्टॉलेशन के साथ दी गई हैं। नोट: यदि पायथन को भी अपने कोड को विंगस्टब.पाइक में संकलित करने की आवश्यकता है, तो IUSR को उस फ़ोल्डर पर अधिकार लिखने की आवश्यकता है क्योंकि IIS द्वारा उस खाते के तहत अजगर प्रक्रिया शुरू की जाएगी
चरण 6
Wingdb खोलें और 'import os, io, sys' लाइन पर एक ब्रेकपॉइंट सेट करें
चरण 7
अपने ब्राउज़र में हिट करें http: // localhost / mypythonfolder
यदि सब कुछ सही काम करता है, तो आपके ब्रेकपॉइंट पर रनिंग कोड प्रदर्शित करने के लिए विंगाइड को ट्रिगर किया जाना चाहिए। यदि नहीं: - या तो वहाँ एक फ़ायरवॉल मुद्दा है। अजगर प्रक्रिया विंग इंटरफ़ेस के साथ एक टीसीपी कनेक्शन के माध्यम से संचार करती है - या विंगाइड के भीतर सुरक्षा के साथ एक समस्या है। इसे wingdebugpw फ़ाइल के उचित संस्करण की आवश्यकता है, जिसमें मूल रूप से एक पासवर्ड या टोकन होता है जो आपके विंगाइड इंस्टॉलेशन के खिलाफ पहुंच को मान्य करता है। यदि ऐसा नहीं होता, तो आपके पीसी पर tcp पहुंच वाला कोई भी व्यक्ति आपके कोड के विरुद्ध डिबग कर सकता है।
चरण 8
सत्यापित करें कि c: \ temp में लॉगफ़ाइल बनाया गया है। यदि आपको चरण 7 नहीं मिल रहा है तो भी यह काम करना चाहिए
चरण 9
ध्यान दें कि यह पृष्ठ डीबगर को चलाता है, लेकिन वेबब्रोसर के किसी भी पृष्ठ को वापस नहीं करता है। कुछ पृष्ठभूमि: वेबसर्वर तथाकथित 'रिकॉर्ड' के माध्यम से फास्टगि का संचार करता है। इसका अर्थ है कि प्रत्येक एकल उपयोगकर्ता-अनुरोध आपके एप्लिकेशन में कई अलग-अलग 'रिकॉर्ड' में पैक किया गया है। प्रत्येक रिकॉर्ड एक डेटा संरचना है जो एक अनुरोध की शुरुआत, क्वेरिस्ट्रिंग, पोस्ट चर आदि को इंगित करता है। एकल रिकॉर्ड के लिए इन रिकॉर्डों की अन-पैकिंग एक प्रकार का बोझिल है, यह http: //www.fastcgi के फास्टेंगी विनिर्देश का अनुसरण करता है।
.com / devkit / doc / fcgi-spec.html # एस 1
C: \ python27 \ lib \ mylib \ myfcgi.py की सामग्री के रूप में मैं अभी हेलीकॉप्टर द्वारा प्रदान किए गए zoofcgi.py की एक प्रति में गिरा हूं। यह अजगर फ़ाइल इन रिकॉर्ड्स को डीकोड करने और एक पेज की सेवा करने में सक्षम है और डीबग करने के लिए काफी दिलचस्प है। यह भी ध्यान दें कि हेलीकॉप्टर वैकल्पिक रूप से एक dll प्रदान करता है जो IIS और zoofcgi.py के बीच बैठता है लेकिन यह dll सख्ती से आवश्यक नहीं है। मेरा मानना है कि यह एमएसएफटी द्वारा प्रदान किए जाने वाले फास्टसीजी कार्यान्वयन के थोड़े बेहतर और सामान्य संस्करण को लागू करता है। हालाँकि, जब आप उनके dll का उपयोग करते हैं, जब आप अपने कोड के माध्यम से कदम रखना चाहते हैं तो प्रक्रिया को क्विकली समाप्त कर दिया जाता है और IIS / DLL आपकी पायथन प्रक्रिया को मारता है जब यह निष्कर्ष निकालता है कि कोई प्रतिक्रिया 2 सेकंड के भीतर वापस आ रही है।
बस। सिद्धांत रूप में IIS और आपके अजगर कोड के बीच संचार नामांकित पाइप के साथ किया जाता है। आपको tcp सॉकेट्स का उपयोग करके इसे सेट करने में सक्षम होना चाहिए, लेकिन मैं यह पता लगाने में सक्षम नहीं था कि किस पोर्ट का उपयोग किया जाता है (मेरा मानना है कि स्टडिन को पोर्ट में बदलना चाहिए जो तब () एड का चयन कर सकता है लेकिन मैंने ऐसा नहीं किया कोई भी प्रयास)