Bir EC2 mikro örneğini, lighthttpd'den CGI betikleri ile nasıl sunabilirsiniz? Örneğin Python CGI?
Yarım gün sürdü, ancak ücretsiz bir Amazon AWS EC2 örneğinde çalışan Python cgi'yi lighttpd sunucusunu kullanarak elde ettim. Sanırım noo arkadaşlarımın bütün adımları bir yere koymasına yardımcı olacak. Aşağıdaki basit adımlarla donanmış, işleri ayarlamak sadece 15 dakikanızı alacak!
Bunu okuyan daha deneyimli kullanıcılar için sorum şu: Yaptıklarımda herhangi bir güvenlik açığı var mı? (Bkz. Dosya ve dizin izinleri.)
Adım 1: EC2 örneğinizi başlatın ve içine ssh.
[Açıkçası, Amazon EC2'ye kaydolmanız ve anahtar çiftlerinizi bir * .pem dosyasına kaydetmeniz gerekir. Amazon size nasıl yapılacağını anlattığı gibi, bunun üzerinden geçmeyeceğim.]
AWS hesabınıza giriş yapın ve EC2 örneğinizi başlatın. Web bu konuda öğreticiler var. Amazon'un size sunduğu varsayılan örnek boyutunun "küçük" olduğuna dikkat edin. Bu "mikro" değildir ve bu yüzden size paraya mal olur. El ile "mikro" yu seçtiğinizden emin olun. (Mikro örnekler yalnızca ilk yıl için ücretsizdir ...)
Çalışan örneğinizin genel DNS kodunu bulun. Bunu yapmak için, kontrol panelinin üst bölmesindeki örneğe tıklayın; sonunda alt bölmede doldurulmuş olan "Genel DNS" alanını göreceksiniz. (Biraz keman yapmanız gerekebilir.) Public DNS şöyle bir şeye benziyor:
ec2-174-129-110-23.compute-1.amazonaws.com
Unix konsol programınızı başlatın. (Max OS X'te, buna Terminal denir ve Uygulamalar -> Yardımcı Programlar klasöründe bulunur.)
AWS klavyelerinizi içeren * .pem dosyanızın bulunduğu masaüstünüzdeki dizine cd.
EC2 örneğinize ssh gibi bir komut kullanarak:
ssh -i <<your *.pem filename>> ec2-user@<< Public DNS address >>
Yani, benim için bu şuydu:
ssh -i amzn_ec2_keypair.pem ec2-user@ec2-174-129-110-23.compute-1.amazonaws.com
EC2 örneğiniz size izin vermelidir.
Adım 2: lighttpd'yi EC2 örneğinize indirin.
Lighttpd'yi kurmak için EC2 örneğinizde root erişimine ihtiyacınız olacak. Sorun şudur: Amazon, root olarak giriş yapmanıza izin vermeyecektir. (En azından basitçe değil.) Ama bir geçici çözüm var. Bu komutu yazın:
sudo /bin/bash
Sistem bilgi istemi karakteri $ 'dan #' a değişecektir. Bu süreçte en son adıma kadar "sudo" dan çıkmayacağız.
Lighttpd uygulamasını kurun (benim için sürüm 1.4.28-1.3.amzn1):
yum install lighttpd
Lighttpd için FastCGI kütüphanelerini kurun (gerekli değil, neden olmasın?):
yum install lighttpd-fastcgi
Sunucunuzun çalıştığını test edin:
/etc/init.d/lighttpd start
Adım 3: Dış dünyanın sunucunuzu görmesine izin verin.
Şimdi sunucunuzu masaüstünüzdeki tarayıcıdan vurmaya çalıştıysanız, başarısız olur. Sebep: Varsayılan olarak, Amazon AWS, EC2 örneğinize herhangi bir bağlantı noktası açmaz. Bu yüzden portları manuel olarak açmak zorundasınız.
Masaüstünüzün tarayıcısından EC2 panonuza gidin. Sol bölmedeki "Güvenlik Grupları" üzerine tıklayın. Sağ üst bölmede bir veya daha fazla güvenlik grubu görünecektir. Örneğinizi başlattığınızda EC2 örneğinize atanmış olanı seçin.
Sağ alt bölmede "İzin Verilen Bağlantılar" adlı bir tablo görünecektir. Bir açılır menü, bağlantı yöntemi olarak "HTTP" yi seçmenize izin verecektir.
Tablonun bu satırındaki diğer değerler şöyle olmalıdır: tcp, 80, 80, 0.0.0.0/0
Şimdi EC2 örneğinizin sunucusuna tarayıcınızdaki masaüstünden basın. Daha önce kullandığınız Genel DNS adresini SSH'ye kullanın. Lighttpd genel web sayfasını görmelisiniz. Eğer yapmazsan, sana yardım edemem çünkü ben çok asilim. :-(
Adım 4: lighttpd'yi CGI'ye hizmet edecek şekilde yapılandırın.
Konsol programına geri döndüğümde, lighttpd yapılandırma dizinine cd:
cd /etc/lighttpd
CGI'yı etkinleştirmek için, <module.conf> dosyasındaki bir satırı yorumlamak istemezsiniz. (Fast CGI'ı etkinleştirebilirdim, ancak bebek adımları en iyisidir!) Bunu "ed" editörüyle aşağıdaki gibi yapabilirsiniz:
ed modules.conf
/include "conf.d\/cgi.conf"/
s/#//
w
q
CGI programlarının yaşayacağı dizini oluşturun. (/Etc/lighttpd/lighttpd.conf dosyası bunun nerede olacağını belirler.) Dizinimizi varsayılan konumda oluşturacağız, bu nedenle yapılandırma dosyalarında herhangi bir düzenleme yapmamız gerekmez:
cd /var/www/lighttpd
mkdir cgi-bin
chmod 755 cgi-bin
Neredeyse! Elbette cgi-bin dizinine bir test CGI programı eklemeniz gerekir. İşte burada:
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 sunucunuzu yeniden başlatın:
/etc/init.d/lighttpd restart
CGI programınızı test edin. Masaüstünüzün tarayıcısında, EC2 örneğinizin genel DNS adresini değiştirerek, bu URL'ye basın:
http://<<Public DNS>>/cgi-bin/hellopyworld.py
Benim için bu:
http://ec2-174-129-110-23.compute-1.amazonaws.com/cgi-bin/hellopyworld.py
Adım 5: İşte bu! Temizleyin ve teşekkür edin!
Daha önce verilen "sudo / bin / bash" komutundan çıkmak için şunu yazın:
exit
Teşekkürler: Teşekkür yığınları:
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
İyi şanslar amigos! Bu "sorunun" geleneksel olmayan doğası için özür dilerim ama Stackoverflow'tan çok fazla yardım aldım, bir şeyleri geri vermeye istekliyim.