ओएस एक्स 10.8.1 के साथ भेजे गए एक की तुलना में होमब्री या पायथन के एक अलग स्वाद के बिना ओएस एक्स सर्वर 2.0 पर एक Django एप्लिकेशन कैसे तैनात करेगा? मैं एक Django अनुप्रयोग में कोको बाइंडिंग का उपयोग कर रहा हूं और इसे अपने डेस्कटॉप मशीन पर होमब्री के साथ काम करने में परेशानी हो रही है (ओएस एक्स 10.8.1 चल रहा है); इसलिए पायथन के सिस्टम स्थापित संस्करण पर एप्लिकेशन को तैनात करने का अनुरोध।ओएस एक्स सर्वर पर एक django एप्लिकेशन कैसे तैनात करता है?
- ओएस एक्स 10.8.1
- OS X सर्वर 2.0
- अजगर 2.7.2
- अपाचे 2.2:
मैं निम्नलिखित पहले से ही स्थापित के साथ निम्न OS X सर्वर वातावरण है।
012,351: 22
Django 1.4.1 निम्न आदेश का उपयोग कर स्थापित किया गया था
sudo easy_install django
मेरा पहला प्रयास एक खाली वेबसाइट को तैनात करना है, और एक बार यह सफल होने के बाद, उत्पादन में उपयोग किए जाने वाले वास्तविक एप्लिकेशन को तैनात करना है। परियोजना /Library/Server/Web/Data/WebApps/mysite/
पर बनाया गया था निम्न आदेश
django-admin.py startproject mysite
का उपयोग कर रहा निम्न आदेश का उपयोग कर आवेदन भाग गया। यह बस पुष्टि की कि आवेदन ऊपर और चल रहा था। यह मानक है "यह काम किया!" पृष्ठ जब आपने पहली बार एक प्रोजेक्ट बनाया था।
python manage.py runserver 8080
मैं तो निम्न सामग्री के साथ एक फ़ाइल /Library/Server/Web/Config/apache2/httpd_mysite.conf
बनाया:
WSGIScriptAlias /mysite /Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py
मैं आगे निम्नलिखित सामग्री के साथ एक फ़ाइल /Library/Server/Web/Config/apache2/webapps/com.example.mysite.wsgi.plist
बनाया:
<?xml version="1.0" encoding="UTF-7"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>com.example.mysite.wsgi</string>
<key>displayName</key>
<string>Python "My Site" app</string>
<key>launchKeys</key>
<array/>
<key>proxies</key>
<dict/>
<key>installationIndicatorFilePath</key>
<string>/Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py</string>
<key>includeFiles</key>
<array>
<string>/Library/Server/Web/Config/apache2/httpd_mysite.conf</string>
</array>
<key>requiredModuleNames</key>
<array>
<string>wsgi_module</string>
</array>
</dict>
</plist>
फ़ाइल com.example.mysite.wsgi.plist
com.apple.webapp.wsgi.plist
से अनुकूलित किया गया था और httpd_mysite.conf
httpd_wsgi.conf
से अनुकूलित किया गया। सर्वर मैनेजर के माध्यम से कॉन्फ़िगर किए जाने पर इन दोनों फ़ाइलों का उपयोग "स्टैंडअलोन" पायथन एप्लिकेशन को सफलतापूर्वक चलाने के लिए किया जाता है।
मैंने सर्वर प्रबंधक के साथ एक साइट बनाई, पुष्टि की कि मेरा आवेदन वेब अनुप्रयोगों की सूची में था। हालांकि, जब मैं http://example.com/mysite पर जाता हूं तो मुझे 500 त्रुटि मिलती है।
[Sat Sep 01 21:49:17 2012] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Sat Sep 01 21:49:17 2012] [notice] Apache/2.2.22 (Unix) PHP/5.3.13 with Suhosin-Patch mod_wsgi/3.3 Python/2.7.2 mod_fastcgi/2.4.6 mod_ssl/2.2.22 OpenSSL/0.9.8r DAV/2 configured -- resuming normal operations
[Sat Sep 01 21:50:13 2012] [error] [client 1.2.3.4] (8)Exec format error: exec of '/Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py' failed
[Sat Sep 01 21:50:13 2012] [error] [client 1.2.3.4] Premature end of script headers: wsgi.py
यह प्रतीत नहीं होता कि WSGI मॉड्यूल अनुरोध पर कार्य कर रहा है, लेकिन इसके बजाय, अनुरोध FCGI का उपयोग कर कार्रवाई की जा सकती है: लॉग निम्न प्रविष्टियों (IP पते गोपनीयता कारणों 1.2.3.4 के लिए बदल दिया है) । हालांकि, लॉग इंगित करता है कि mod_wsgi/3.3
लोड किया गया था।
जब मैं एक मानक पायथन अनुप्रयोग है कि इस प्रकार दिखता बनाया:
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
और फिर /Library/Server/Web/Data/WebApps/helloworld.wsgi
बजाय /Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py
को इंगित करने के लिए "नमस्ते विश्व" प्रदर्शित किया जाता है फ़ाइलों का अद्यतन। इसलिए मैं मानता हूं कि wsgi सही ढंग से कॉन्फ़िगर किया गया है और अनुप्रयोगों को निष्पादित करने में सक्षम है और मेरे सेटअप के साथ कुछ और गलत है।
यह '/ अनुप्रयोग/सर्वर.एप/सामग्री/सर्वर रूट/usr/libexec/apache2/mod_wsgi.so' – bloudraak
पर स्थापित है, आप सही थे, 'mysite.wsgi' को 'wsgi.py'' का नाम बदलकर 'mod_wsgi'' नाम दिया गया। मैं अन्य समस्याओं में भाग गया जो 'mysite.wsgi' में 'sys.path.append' का उपयोग करके पथ जोड़कर हल किया गया था जैसा कि [इस उत्तर] में वर्णित है (http: // stackoverflow।com/प्रश्न/2587251/विन्यास-समस्याओं-साथ-Django और आधुनिक-WSGI)। धन्यवाद। – bloudraak