Bagaimana Anda bisa membuat instance mikro EC2 melayani skrip CGI dari lighthttpd? Misalnya Python CGI?
Yah, butuh setengah hari, tapi saya mendapatkan Python cgi berjalan di Amazon AWS EC2-instance mikro gratis, menggunakan server lighttpd. Saya pikir itu akan membantu sesama noobs saya untuk meletakkan semua langkah di satu tempat. Berbekal langkah-langkah sederhana di bawah ini, Anda hanya perlu 15 menit untuk mengatur segalanya!
Pertanyaan saya untuk pengguna yang lebih berpengalaman yang membaca ini adalah: Apakah ada kelemahan keamanan dalam apa yang saya lakukan? (Lihat izin file dan direktori.)
Langkah 1: Mulai instance EC2 Anda dan ssh ke dalamnya.
[Jelas, Anda harus mendaftar untuk Amazon EC2 dan menyimpan pasangan kunci Anda ke file * .pem. Saya tidak akan membahas ini, karena Amazon memberi tahu Anda bagaimana melakukannya.]
Masuk ke akun AWS Anda dan mulai mesin virtual EC2 Anda. Web memiliki tutorial untuk melakukan ini. Perhatikan bahwa ukuran instance default yang disajikan Amazon kepada Anda adalah "kecil." Ini bukan "mikro" dan karenanya akan dikenakan biaya uang. Pastikan untuk memilih "mikro" secara manual. (Mesin virtual gratis hanya untuk tahun pertama ...)
Temukan kode DNS publik untuk instance Anda yang sedang berjalan. Untuk melakukan ini, klik contoh di panel atas dasbor dan Anda akhirnya akan melihat bidang "DNS Publik" yang terisi di panel bawah. (Anda mungkin perlu bermain-main sedikit.) DNS Publik terlihat seperti:
ec2-174-129-110-23.compute-1.amazonaws.com
Mulai program konsol Unix Anda. (Pada Max OS X, ini disebut Terminal, dan tinggal di folder Applications -> Utilities.)
cd ke direktori di sistem desktop Anda yang memiliki file * .pem Anda yang berisi keypairs AWS Anda.
ssh ke instance EC2 Anda menggunakan perintah seperti:
ssh -i <<your *.pem filename>> ec2-user@<< Public DNS address >>
Jadi, bagi saya, ini adalah:
ssh -i amzn_ec2_keypair.pem [email protected]
Mesin virtual EC2 Anda seharusnya mengizinkan Anda masuk.
Langkah 2: Unduh lighttpd ke instance EC2 Anda.
Untuk menginstal lighttpd, Anda akan membutuhkan akses root pada instance EC2 Anda. Masalahnya adalah: Amazon tidak akan membiarkan Anda masuk sebagai root. (Paling tidak secara langsung, setidaknya.) Tetapi ada solusinya. Ketikkan perintah ini:
sudo /bin/bash
Karakter sistem prompt akan berubah dari $ ke #. Kami tidak akan keluar dari "sudo" hingga langkah terakhir dalam seluruh proses ini.
Instal aplikasi lighttpd (versi 1.4.28-1.3.amzn1 untuk saya):
yum install lighttpd
Instal pustaka FastCGI untuk lighttpd (tidak diperlukan, tetapi mengapa tidak?):
yum install lighttpd-fastcgi
Uji apakah server Anda berfungsi:
/etc/init.d/lighttpd start
Langkah 3: Biarkan dunia luar melihat server Anda.
Jika sekarang Anda mencoba untuk menekan server Anda dari browser di desktop Anda, itu akan gagal. Alasannya: Secara default, Amazon AWS tidak membuka port apa pun ke instance EC2 Anda. Jadi, Anda harus membuka port secara manual.
Buka dasbor EC2 Anda di browser desktop Anda. Klik pada "Grup Keamanan" di panel kiri. Satu atau lebih grup keamanan akan muncul di panel kanan atas. Pilih yang ditugaskan untuk instance EC2 Anda ketika Anda meluncurkan instance Anda.
Tabel yang disebut "Koneksi yang Diizinkan" akan muncul di panel kanan bawah. Menu pop-up akan memungkinkan Anda memilih "HTTP" sebagai metode koneksi.
Nilai-nilai lain di baris tabel tersebut harus: tcp, 80, 80, 0.0.0.0/0
Sekarang tekan server instance EC2 Anda dari desktop di browser Anda. Gunakan alamat DNS Publik yang Anda gunakan sebelumnya untuk SSH. Anda akan melihat halaman web generik lighttpd. Jika tidak, saya tidak dapat membantu Anda karena saya seorang noob. :-(
Langkah 4: Konfigurasikan lighttpd untuk melayani CGI.
Kembali ke program konsol, cd ke direktori konfigurasi untuk lighttpd:
cd /etc/lighttpd
Untuk mengaktifkan CGI, Anda ingin menghapus komentar satu baris dalam file <modules.conf>. (Saya bisa mengaktifkan Fast CGI, tetapi langkah bayi yang terbaik!) Anda dapat melakukan ini dengan editor "ed" sebagai berikut:
ed modules.conf
/include "conf.d\/cgi.conf"/
s/#//
w
q
Buat direktori tempat program CGI akan hidup. (File /etc/lighttpd/lighttpd.conf menentukan di mana ini akan berada.) Kami akan membuat direktori kami di lokasi default, jadi kami tidak perlu melakukan pengeditan file konfigurasi:
cd /var/www/lighttpd
mkdir cgi-bin
chmod 755 cgi-bin
Hampir sampai! Tentu saja Anda perlu memasukkan program tes CGI ke direktori cgi-bin. Ini satu:
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
Mulai ulang server lighttpd Anda:
/etc/init.d/lighttpd restart
Uji program CGI Anda. Di browser desktop Anda, tekan URL ini, gantikan alamat DNS publik instance EC2 Anda:
http://<<Public DNS>>/cgi-bin/hellopyworld.py
Bagi saya, ini adalah:
http://ec2-174-129-110-23.compute-1.amazonaws.com/cgi-bin/hellopyworld.py
Langkah 5: Itu dia! Bersihkan, dan bersyukurlah!
Untuk keluar dari perintah "sudo / bin / bash" yang diberikan sebelumnya, ketik:
exit
Ucapan Terima Kasih: Banyak terima kasih kepada:
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-surity-groups.html
Semoga beruntung, amigos! Saya minta maaf atas sifat non-tradisional dari "pertanyaan" ini tetapi saya telah mendapatkan banyak bantuan dari Stackoverflow sehingga saya ingin sekali memberikan sesuatu kembali.
sumber
Jawaban:
(Posting aneh, jadi semoga ini tidak aneh sebagai balasan)
Mengenai masalah keamanan: dianggap praktik buruk umum untuk menyimpan skrip cgi-bin di dalam root dokumen server web. Bahkan W3C menghindari itu di bawah "Apakah bahasa yang dikompilasi seperti C lebih aman ..." di FAQ Keamanan World Wide Web mereka :
Ini bukan ancaman yang signifikan seperti kemampuan untuk menulis file di dalam root dokumen. Namun, penyerang bisa mendapatkan kode sumber cgi, menyusun serangan terarah terhadapnya, dan menggunakannya sebagai batu loncatan ke server.
Untuk mengurangi ini, Anda dapat menambahkan baris berikut ke lighttpd.conf (atau beberapa variasi di dalamnya) untuk mengarahkan cgi-bin ke direktori yang terpisah dari root dokumen / var / www / lighttpd.
Ini membutuhkan modul cgi dan alias untuk lighttpd.
sumber