तुम कैसे एक EC2 माइक्रो उदाहरण बना सकते हैं lgttpd से CGI लिपियों की सेवा? उदाहरण के लिए पायथन सीजीआई?
खैर, इसमें आधा दिन लगा, लेकिन मैंने लाइटटैप सर्वर का उपयोग करके एक मुफ्त अमेज़ॅन एडब्ल्यूएस ईसी 2 माइक्रो-इंस्टेंस पर चलने वाले पायथन सीटीआई को प्राप्त किया है। मुझे लगता है कि यह मेरे साथी को एक ही स्थान पर सभी कदम रखने में मदद करेगा। नीचे दिए गए सरल चरणों के साथ, आपको चीजों को स्थापित करने में केवल 15 मिनट लगेंगे!
इसे पढ़ने वाले अधिक अनुभवी उपयोगकर्ताओं के लिए मेरा प्रश्न है: क्या मैंने जो किया है, उसमें कोई सुरक्षा खामी है? (फ़ाइल और निर्देशिका अनुमतियाँ देखें।)
चरण 1: अपना EC2 उदाहरण शुरू करें और उसमें ssh करें।
[जाहिर है, आपको Amazon EC2 के लिए साइन अप करना होगा और अपने प्रमुख जोड़े को * .pem फ़ाइल में सहेजना होगा। मैं इस पर नहीं जाऊंगा, क्योंकि अमेज़न आपको बताता है कि यह कैसे करना है।]
अपने AWS खाते में साइन इन करें और अपना EC2 उदाहरण शुरू करें। वेब के पास ऐसा करने के लिए ट्यूटोरियल हैं। ध्यान दें कि डिफ़ॉल्ट उदाहरण-आकार जो अमेज़ॅन आपके लिए प्रस्तुत करता है वह "छोटा" है। यह "माइक्रो" नहीं है और इसलिए यह आपको पैसा खर्च करेगा। मैन्युअल रूप से "माइक्रो" चुनना सुनिश्चित करें। (सूक्ष्म उदाहरण केवल पहले वर्ष के लिए स्वतंत्र हैं ...)
अपने चलने के उदाहरण के लिए सार्वजनिक DNS कोड खोजें। ऐसा करने के लिए, डैशबोर्ड के शीर्ष फलक में इंस्टेंस पर क्लिक करें और अंत में आपको "पब्लिक डीएनएस" फ़ील्ड नीचे वाले फलक में दिखाई देगी। (आपको थोड़ी सी बेला करने की आवश्यकता हो सकती है।) सार्वजनिक DNS कुछ इस तरह दिखता है:
ec2-174-129-110-23.compute-1.amazonaws.com
अपना यूनिक्स कंसोल प्रोग्राम शुरू करें। (अधिकतम OS X पर, इसे टर्मिनल कहा जाता है, और एप्लिकेशन -> यूटिलिटीज फ़ोल्डर में रहता है।)
अपने डेस्कटॉप सिस्टम पर निर्देशिका के लिए cd जिसमें आपकी * .pem फ़ाइल होती है जिसमें आपका AWS keypairs होता है।
अपने EC2 उदाहरण के लिए एक कमांड का उपयोग करके ssh जैसे:
ssh -i <<your *.pem filename>> ec2-user@<< Public DNS address >>
तो, मेरे लिए, यह था:
ssh -i amzn_ec2_keypair.pem ec2-user@ec2-174-129-110-23.compute-1.amazonaws.com
आपका EC2 उदाहरण आपको अंदर जाने देना चाहिए।
चरण 2: lighttpd को अपने EC2 उदाहरण में डाउनलोड करें।
लाइटटैप को स्थापित करने के लिए, आपको अपने EC2 उदाहरण पर रूट एक्सेस की आवश्यकता होगी। समस्या यह है: अमेज़न आपको रूट के रूप में साइन इन नहीं करने देगा। (सीधे तौर पर नहीं, कम से कम।) लेकिन वर्कअराउंड है। यह कमांड टाइप करें:
sudo /bin/bash
सिस्टम प्रॉम्प्ट-कैरेक्टर $ # से बदल जाएगा। हम इस पूरी प्रक्रिया में अंतिम चरण तक "सुडो" से बाहर नहीं निकलेंगे।
Lighttpd एप्लिकेशन इंस्टॉल करें (मेरे लिए संस्करण 1.4.28-1.3.amzn1):
yum install lighttpd
लाइटकैप के लिए FastCGI लाइब्रेरी स्थापित करें (आवश्यक नहीं, लेकिन क्यों नहीं?);
yum install lighttpd-fastcgi
परीक्षण करें कि आपका सर्वर काम कर रहा है:
/etc/init.d/lighttpd start
चरण 3: बाहरी दुनिया को अपना सर्वर देखने दें।
यदि आपने अब अपने सर्वर को अपने डेस्कटॉप पर ब्राउज़र से हिट करने का प्रयास किया है, तो यह विफल हो जाएगा। कारण: डिफ़ॉल्ट रूप से, अमेज़न AWS आपके EC2 उदाहरण के लिए कोई पोर्ट नहीं खोलता है। इसलिए, आपको मैन्युअल रूप से पोर्ट खोलना होगा।
अपने डेस्कटॉप के ब्राउज़र में अपने EC2 डैशबोर्ड पर जाएं। बाएँ फलक में "सुरक्षा समूह" पर क्लिक करें। ऊपरी दाएं फलक में एक या अधिक सुरक्षा समूह दिखाई देंगे। जब आपने अपना उदाहरण लॉन्च किया था, तो उसे अपने EC2 उदाहरण में चुना गया था।
निचले दाहिने फलक में "अनुमत कनेक्शन" नामक एक तालिका दिखाई देगी। एक पॉप-अप मेनू आपको कनेक्शन विधि के रूप में "HTTP" चुनने देगा।
तालिका की उस पंक्ति में अन्य मान होना चाहिए: tcp, 80, 80, 0.0.0.0/0
अब अपने ब्राउज़र में डेस्कटॉप से अपने EC2 इंस्टेंस के सर्वर को हिट करें। सार्वजनिक DNS पते का उपयोग करें जिसका उपयोग आपने पहले SSH में किया था। आपको लाइटटैप जेनेरिक वेब पेज देखना चाहिए। यदि आप ऐसा नहीं करते हैं, तो मैं आपकी मदद नहीं कर सकता क्योंकि मैं इस तरह के एक noob हूँ। :-(
चरण 4: सीजीआई की सेवा करने के लिए लाइटटैप को कॉन्फ़िगर करें।
कंसोल प्रोग्राम में cd, lighttpd के लिए कॉन्फ़िगरेशन निर्देशिका में cd:
cd /etc/lighttpd
CGI को सक्षम करने के लिए, आप <mod.conf> फ़ाइल में एक पंक्ति को अनइंस्टॉल करना चाहते हैं। (मैं फास्ट सीजीआई सक्षम कर सकता था, लेकिन बच्चे के कदम सबसे अच्छे हैं!) आप इसे "एड" संपादक के साथ निम्नानुसार कर सकते हैं:
ed modules.conf
/include "conf.d\/cgi.conf"/
s/#//
w
q
वह निर्देशिका बनाएं जहां CGI प्रोग्राम लाइव होंगे। (/Etc/lighttpd/lighttpd.conf फ़ाइल यह निर्धारित करती है कि यह कहां होगा।) हम अपनी निर्देशिका को डिफ़ॉल्ट स्थान पर बनाएंगे, इसलिए हमें कॉन्फ़िगरेशन फ़ाइलों का कोई संपादन नहीं करना होगा:
cd /var/www/lighttpd
mkdir cgi-bin
chmod 755 cgi-bin
लगभग वहाँ! बेशक आपको सीजीआई-बिन निर्देशिका में एक परीक्षण सीजीआई कार्यक्रम डालने की आवश्यकता है। यहाँ एक है:
cd cgi-bin
ed
a
#!/usr/bin/python
print "Content-type: text/html\n\n"
print "<html><body>Hello, pyworld.</body></html>"
.
w hellopyworld.py
q
chmod 655 hellopyworld.py
अपने लाइटटैप सर्वर को पुनरारंभ करें:
/etc/init.d/lighttpd restart
अपने CGI प्रोग्राम का परीक्षण करें। अपने डेस्कटॉप के ब्राउज़र में, इस URL को हिट करें, जो आपके EC2 उदाहरण के सार्वजनिक DNS पते को प्रतिस्थापित करता है:
http://<<Public DNS>>/cgi-bin/hellopyworld.py
मेरे लिए, यह था:
http://ec2-174-129-110-23.compute-1.amazonaws.com/cgi-bin/hellopyworld.py
चरण 5: यह बात है! सफाई करो, और धन्यवाद दो!
पहले दिए गए "sudo / bin / bash" कमांड से बाहर निकलने के लिए टाइप करें:
exit
आभार: धन्यवाद के ढेर:
wiki.vpslink.com/Install_and_Configure_lighttpd
www.cyberciti.biz/tips/lighttpd-howto-setup-cgi-bin-access-for-perl-programs.html
aws.typepad.com/aws/2010/06/building-three-tier-architectures-with-security-groups.html
सौभाग्य, अमीगो! मैं इस "प्रश्न" के गैर-पारंपरिक स्वभाव के लिए माफी माँगता हूँ, लेकिन मुझे स्टैकवर्फ़फ़्लो से इतनी मदद मिली है कि मैं कुछ वापस देने के लिए उत्सुक था।