คุณจะสร้างอินสแตนซ์ขนาดเล็ก EC2 ให้บริการสคริปต์ CGI จาก lighthttpd ได้อย่างไร เช่น Python CGI?
มันใช้เวลาครึ่งวัน แต่ฉันได้รับ Python cgi ที่ทำงานบนไมโครอินสแตนซ์ Amazon AWS EC2 ฟรีโดยใช้เซิร์ฟเวอร์ lighttpd ฉันคิดว่ามันจะช่วย noobs เพื่อนของฉันที่จะวางขั้นตอนทั้งหมดในที่เดียว ด้วยขั้นตอนง่าย ๆ ด้านล่างจะใช้เวลาเพียง 15 นาทีในการตั้งค่า!
คำถามของฉันสำหรับผู้ใช้ที่มีประสบการณ์อ่านนี้คือ: มีข้อบกพร่องด้านความปลอดภัยในสิ่งที่ฉันได้ทำ? (ดูการอนุญาตไฟล์และไดเรกทอรี)
ขั้นตอนที่ 1: เริ่มต้นอินสแตนซ์ EC2 ของคุณและ ssh ลงไป
[เห็นได้ชัดว่าคุณจะต้องลงชื่อสมัครใช้ Amazon EC2 และบันทึกคู่กุญแจของคุณลงในไฟล์ * .pem ฉันจะไม่ข้ามเรื่องนี้ไปอย่างที่อเมซอนบอกให้คุณทำอย่างไร]
ลงชื่อเข้าใช้บัญชี AWS ของคุณและเริ่มอินสแตนซ์ EC2 ของคุณ เว็บมีแบบฝึกหัดในการทำเช่นนี้ ขอให้สังเกตว่าขนาดอินสแตนซ์เริ่มต้นที่ Amazon มอบให้คุณคือ "เล็ก" นี่ไม่ใช่ "ไมโคร" และดังนั้นคุณจะเสียค่าใช้จ่าย อย่าลืมเลือก "ไมโคร" ด้วยตนเอง (อินสแตนซ์ขนาดเล็กให้บริการฟรีเฉพาะในปีแรก ... )
ค้นหารหัส DNS สาธารณะสำหรับอินสแตนซ์ที่คุณใช้งานอยู่ หากต้องการทำสิ่งนี้ให้คลิกที่อินสแตนซ์ในบานหน้าต่างด้านบนของแดชบอร์ดและในที่สุดคุณจะเห็นฟิลด์ "สาธารณะ DNS" ซึ่งมีอยู่ในบานหน้าต่างด้านล่าง (คุณอาจต้องทำเล่น ๆ สักหน่อย) DNS สาธารณะจะมีลักษณะดังนี้:
ec2-174-129-110-23.compute-1.amazonaws.com
เริ่มโปรแกรมคอนโซล Unix ของคุณ (บน Max OS X จะเรียกว่า Terminal และอยู่ในโฟลเดอร์ Applications -> Utilities)
cd ไปยังไดเรกทอรีบนระบบเดสก์ท็อปของคุณที่มีไฟล์ * .pem ของคุณมีคู่คีย์ AWS ของคุณ
ssh ไปยังอินสแตนซ์ EC2 ของคุณโดยใช้คำสั่งเช่น:
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 ของคุณ
ในการติดตั้ง lighttpd คุณจะต้องเข้าถึงรูทบนอินสแตนซ์ EC2 ของคุณ ปัญหาคือ: อเมซอนจะไม่ยอมให้คุณลงชื่อเข้าใช้ในฐานะรูท (ไม่ตรงไปตรงมาอย่างน้อย) แต่ก็มีวิธีแก้ปัญหา พิมพ์คำสั่งนี้:
sudo /bin/bash
ตัวอักษรระบบจะเปลี่ยนจาก $ เป็น # เราจะไม่ออกจาก "sudo" จนกว่าจะถึงขั้นตอนสุดท้ายในกระบวนการทั้งหมดนี้
ติดตั้งแอปพลิเคชั่น lighttpd (เวอร์ชั่น 1.4.28-1.3.amzn1 ให้ฉัน):
yum install lighttpd
ติดตั้งไลบรารี FastCGI สำหรับ lighttpd (ไม่จำเป็น แต่ทำไมไม่ทำ):
yum install lighttpd-fastcgi
ทดสอบว่าเซิร์ฟเวอร์ของคุณใช้งานได้:
/etc/init.d/lighttpd start
ขั้นตอนที่ 3: ให้โลกภายนอกมองเห็นเซิร์ฟเวอร์ของคุณ
หากคุณพยายามโจมตีเซิร์ฟเวอร์ของคุณจากเบราว์เซอร์บนเดสก์ท็อปของคุณมันจะล้มเหลว เหตุผล: ตามค่าเริ่มต้น Amazon AWS จะไม่เปิดพอร์ตใด ๆ กับอินสแตนซ์ EC2 ของคุณ ดังนั้นคุณต้องเปิดพอร์ตด้วยตนเอง
ไปที่แดชบอร์ด EC2 ในเบราว์เซอร์เดสก์ท็อปของคุณ คลิกที่ "กลุ่มความปลอดภัย" ในบานหน้าต่างด้านซ้าย กลุ่มความปลอดภัยอย่างน้อยหนึ่งกลุ่มจะปรากฏในบานหน้าต่างด้านขวาบน เลือกอันที่ถูกกำหนดให้กับอินสแตนซ์ EC2 ของคุณเมื่อคุณเปิดใช้งานอินสแตนซ์ของคุณ
ตารางที่ชื่อว่า "การเชื่อมต่อที่อนุญาต" จะปรากฏในบานหน้าต่างด้านขวาล่าง เมนูป๊อปอัปจะให้คุณเลือก "HTTP" เป็นวิธีการเชื่อมต่อ
ค่าอื่น ๆ ในบรรทัดของตารางนั้นควรเป็น: tcp, 80, 80, 0.0.0.0/0
ตอนนี้กดเซิร์ฟเวอร์ของอินสแตนซ์ EC2 ของคุณจากเดสก์ท็อปในเบราว์เซอร์ของคุณ ใช้ที่อยู่ DNS สาธารณะที่คุณใช้ก่อนหน้านี้กับ SSH คุณควรเห็นเว็บเพจทั่วไป lighttpd ถ้าคุณทำไม่ได้ฉันก็ช่วยคุณไม่ได้เพราะฉันเป็นคนไม่มีอะไร :-(
ขั้นตอนที่ 4: กำหนดค่า lighttpd เพื่อให้บริการ CGI
ย้อนกลับไปในโปรแกรมคอนโซล cd ไปยังไดเรกทอรีการกำหนดค่าสำหรับ lighttpd:
cd /etc/lighttpd
ในการเปิดใช้งาน CGI คุณต้องการยกเลิกการคอมเม้นต์หนึ่งบรรทัดในไฟล์ <modules.conf> (ฉันสามารถเปิดใช้งาน Fast CGI ได้ แต่ขั้นตอนเด็กดีที่สุด!) คุณสามารถทำได้ด้วยเครื่องมือ "ed" ดังต่อไปนี้:
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
เกือบจะมี! แน่นอนคุณต้องใส่โปรแกรมทดสอบ CGI ลงในไดเรกทอรี 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
รีสตาร์ทเซิร์ฟเวอร์ lighttpd ของคุณ:
/etc/init.d/lighttpd restart
ทดสอบโปรแกรม CGI ของคุณ ในเบราว์เซอร์ของเดสก์ท็อปของคุณกด URL นี้แทนที่อยู่ DNS สาธารณะของอินสแตนซ์ EC2 ของคุณ:
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
ขอให้โชคดีมีโก้! ฉันขอโทษสำหรับลักษณะที่ไม่ใช่แบบดั้งเดิมของ "คำถาม" นี้ แต่ฉันได้รับความช่วยเหลือมากมายจาก Stackoverflow ที่ฉันอยากจะคืนบางสิ่งบางอย่าง