साझा IIS सर्वर को चलाने वाले पायथन-नौसिखिया को Django / पायथन संस्थापन की व्याख्या कैसे करें [बंद]


9

मेरे नियंत्रण से परे कारणों के लिए, हमारी वेबसाइट एक होस्टिंग प्रदाता के साथ होस्ट की जाती है जो अपने सर्वर के लिए IIS का उपयोग करता है। वे वर्तमान में PHP और ASP की पेशकश करते हैं, और cgi- स्क्रिप्ट के माध्यम से पायथन और पर्ल भी।

मैं हमारी वेबसाइट का री-डिजाइन, री-राइट करना चाहता हूं और PHP से Python / Django सेटअप में बदलना चाहता हूं। होस्टिंग प्रदाता सुझावों के लिए खुला है, लेकिन स्पष्ट है कि "हम वास्तव में यह नहीं जानते हैं कि पायथन क्या है, या यह कैसे काम करता है, लेकिन अगर आप इसे हमें समझा सकते हैं, तो हम आपको जो कुछ भी ज़रूरत है, उसके साथ सेट करने का प्रयास करेंगे" ।

हालाँकि, मुझे पता है कि अपाचे / mod_python पर एक साझा होस्टिंग वातावरण में Django कैसे सेट किया जाए, लेकिन मुझे कोई सुराग नहीं है कि इसे IIS पर कैसे सेट किया जाएगा, और निश्चित रूप से यह साझा होस्टिंग वातावरण के लिए कैसे सेट नहीं किया जाएगा। मैं थोड़ा सा गुगली कर रहा हूं, लेकिन अधिकांश संसाधन मुझे लगता है कि sysadmin 1) जानता है कि पायथन / Django और 2) अपनी साइट के लिए समर्पित IIS होस्टिंग का उपयोग कर रहा है।

क्या कोई समझा सकता है कि मैं अपने होस्टिंग प्रदाता को प्रक्रिया कैसे समझा सकता हूं, या मुझे अच्छे, विस्तृत संसाधन दे सकता हूं, जो मैं अपने होस्टिंग प्रदाता को अग्रेषित कर सकता हूं? ध्यान रखें कि होस्टिंग चलाने वाले लोग IIS के बारे में "सब कुछ" जान सकते हैं, लेकिन यह नहीं जानते कि पायथन से कैसे निपटें।

जवाबों:


8

यदि आप IIS का उपयोग कर रहे हैं, तो यदि आप कर सकते हैं तो CGI के बजाय PyISAPIe का उपयोग करें। PyISAPIe के लिए निर्देश और लिंक नीचे हैं। यदि वे IIS को Python की तुलना में प्रबंधित करते हैं, तो आपके वेब होस्ट को ISAPI एक्सटेंशन के बारे में बहुत कुछ पता होगा, और उन्हें PyISAPI के साथ Python के बारे में अधिक जानने की आवश्यकता नहीं है।

ऐसा करने का एक बहुत ही बुरा तरीका है Py PyAPAPI, IS ISI EXTENSION । PyISAPIe IIS7 पर CGI की तुलना में बहुत तेज है। यह क्या करता है Apache पर mod_python के समान है। PyISAPIe प्रोजेक्ट होमपेज में PyGAPIe पर WSGI के साथ Django स्थापित करने के निर्देश हैं। यह आपके प्रदर्शन को एक सार्वजनिक / उच्च यातायात वेबसाइट के लिए उचित गति तक लाएगा।

CGI पर्यावरण के माध्यम से IIS + Python में Django की स्थापना किसी भी उत्पादन उपयोग के लिए बहुत धीमी गति से होने जा रही है। आपको इसका उपयोग कभी ऐसी वेबसाइट के लिए नहीं करना चाहिए, जिस पर आप प्रति मिनट मुट्ठी भर अनुरोधों की तुलना में अधिक सेवा की उम्मीद करते हैं। यह आपको गंभीर रूप से सीमित करता है कि आप Django के कैशिंग फ्रेमवर्क में मेमोरी को कैश कर सकते हैं, क्योंकि Django ऐप की प्रक्रिया को प्रत्येक नए अनुरोध के साथ पुनरारंभ किया जाता है।

Mod_python के साथ Apache, lighttpd आदि जैसे एक समझदार वेब सर्वर में, Django प्रक्रिया को चलाने वाला पायथन दुभाषिया स्मृति में बना रहता है और प्रत्येक नए Apache कार्यकर्ता थ्रेड के साथ आरंभीकृत किया जाता है जो समय के दौरान कई अनुरोधों को संभालता है। इसका मतलब यह है कि पायथन + Django से बाहर नहीं निकले हैं और प्रत्येक नए अनुरोध के लिए पुनरारंभ किया गया है। FastCGI सेटअप में, वेब सर्वर (उदाहरण के लिए Apache या lighttpd) एक सॉकेट (UNIX डोमेन या टीसीपी) बनाता है, जिसके पार यह FastCGI प्रोटोकॉल (आपका Django वेब एप्लिकेशन) FastCGI प्रोटोकॉल के साथ संचार करता है। HTTP प्रॉक्सी सेटअप के लिए Ditto (वे FastCGI के बजाय HTTP बोलते हैं)। CGI वातावरण में, Python दुभाषिया को कहा जाता है जो Django एप्लिकेशन को चलाता है, प्रत्येक अनुरोध के लिए पूरी तरह से नए सिरे से, इसलिए एप्लिकेशन मेमोरी में अनुरोधों को राज्य में नहीं रख सकता है और कहीं भी लेकिन डेटाबेस में ठीक से कैश नहीं कर सकता है।

: पर्याप्त ranting, यदि आप आईआईएस + सीजीआई + Django का उपयोग करना चाहिए, यहाँ कैसे इस भयानक भयानक चीज़ पूरा करने के लिए है का उपयोग करें निम्नलिखित कोड अपने खुद के CGI स्क्रिप्ट जो आपके Django app (यह CGI और WSGI के बीच तब्दील) चलाता है बनाने के लिए। आपको अपने Django ऐप और कोड को इंगित करने के लिए स्क्रिप्ट को थोड़ा संपादित करना होगा। यह CGI स्क्रिप्ट है जिसके लिए आपको अनुरोधों को पारित करना होगा। इसके बाद, आपको अपने CGI स्क्रिप्ट के सभी अनुरोधों को अग्रेषित / फिर से करना होगा ...

IIS6 के तहत, आपको IISRewrite जैसे एक mod_rewrite समकक्ष की आवश्यकता होगी, जो मुझे लगता है कि स्वतंत्र नहीं है और यह बंद स्रोत है। IIS7 के तहत, Microsoft ने अंततः एक URL पुनर्लेखन मॉड्यूल शामिल किया। इसके लिए प्रलेखन यहाँ स्थित है । IIS7 में पुनर्लेखन नियम बनाने के निर्देश यहां दिए गए हैं । आप लक्ष्य आधार URL पर अपनी सीजीआई लिपि द्वारा संभाला जाना चाहते हैं।


चूंकि होस्टिंग साझा की गई है, इसलिए मुख्य मुद्दा यह है कि होस्टिंग प्रदाता मेरी जरूरतों को पूरा करने के लिए PyISAPIe को कैसे कॉन्फ़िगर करेगा, और उनके अन्य ग्राहकों की विभिन्न आवश्यकताओं को भी। मुझे होमपेज पर WSGI के साथ Django स्थापित करने के लिए निर्देश नहीं मिल सके ... यदि बाकी सब विफल रहता है, तो मैं बस CGI दृष्टिकोण का उपयोग करूंगा। प्रति सप्ताह 400 से कम अनुरोधों के साथ , मुझे लगता है कि हम सीजीआई समाधान के साथ रह सकते हैं जब तक हम होस्टिंग स्विच करने का निर्णय नहीं लेते।
एपकॉनिन

1

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 सॉकेट्स का उपयोग करके इसे सेट करने में सक्षम होना चाहिए, लेकिन मैं यह पता लगाने में सक्षम नहीं था कि किस पोर्ट का उपयोग किया जाता है (मेरा मानना ​​है कि स्टडिन को पोर्ट में बदलना चाहिए जो तब () एड का चयन कर सकता है लेकिन मैंने ऐसा नहीं किया कोई भी प्रयास)


0

मैंने पायथन के साथ यह कोशिश नहीं की है, लेकिन इसने पर्ल के साथ सीजीआई के रूप में बहुत अच्छा काम किया। ActiveState के उत्पाद IIS के साथ उचित रूप से एकीकृत होते हैं। मुझे ActivePerl से बड़ी सफलता मिली। उनके पास ActivePython भी है जो शायद (शायद) वहां भी ट्रिक करेगा। तब मुझे लगता है कि आप सिर्फ Django डाउनलोड इसे स्थापित करेंगे

संपादित करें: ठीक है, तो IIS के साथ अटूट एकीकरण खरोंच ... कैसे , यहाँ एक लेख है कि कैसे IIS में एकीकृत करने के लिए । आप आयरन पायथन को विंडोज बॉक्स के लिए अपना डिस्ट्रो भी मान सकते हैं ।

प्रदाता के लिए, मुझे संदेह होगा कि उन्हें एएसपी / एएसपी.नेट जैसे वेब विकास मंच से अधिक जानने की आवश्यकता है और पायथन वह भाषा है जिसे इसके साथ विकसित करने के लिए उपयोग किया जाता है।

जहाँ तक मैंने ऊपर उल्लेख किया है, मैं कोशिश कर रहा हूँ कि देखें और देखें कि यह कैसा है। अगर मुझे यह ठीक काम आता है तो मैं इस पर नोट्स पोस्ट करूँगा!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.