Làm thế nào bạn có thể tạo một cá thể vi EC2 phục vụ các tập lệnh CGI từ lighthttpd? Ví dụ Python CGI?
Chà, mất nửa ngày, nhưng tôi đã nhận được Python cgi chạy trên một cá thể vi mô Amazon AWS EC2 miễn phí, sử dụng máy chủ lighttpd. Tôi nghĩ rằng nó sẽ giúp các đồng nghiệp của tôi đặt tất cả các bước ở một nơi. Được thực hiện với các bước đơn giản dưới đây, bạn sẽ chỉ mất 15 phút để thiết lập mọi thứ!
Câu hỏi của tôi cho những người dùng có nhiều kinh nghiệm hơn khi đọc điều này là: Có bất kỳ lỗi bảo mật nào trong những gì tôi đã làm không? (Xem quyền truy cập tệp và thư mục.)
Bước 1: Bắt đầu EC2 của bạn và ssh vào nó.
[Rõ ràng, bạn sẽ cần đăng ký Amazon EC2 và lưu các cặp khóa của bạn vào tệp * .pem. Tôi sẽ không giải quyết vấn đề này vì Amazon cho bạn biết cách thực hiện.]
Đăng nhập vào tài khoản AWS của bạn và bắt đầu phiên bản EC2 của bạn. Web có hướng dẫn về việc này. Lưu ý rằng kích thước cá thể mặc định mà Amazon trình bày cho bạn là "nhỏ". Đây không phải là "vi mô" và vì vậy nó sẽ khiến bạn mất tiền. Hãy chắc chắn chọn thủ công "vi mô". (Các phiên bản vi mô chỉ miễn phí trong năm đầu tiên ...)
Tìm mã DNS công khai cho ví dụ đang chạy của bạn. Để thực hiện việc này, nhấp vào ví dụ trong khung trên cùng của bảng điều khiển và cuối cùng bạn sẽ thấy trường "DNS công cộng" được điền ở khung bên dưới. (Bạn có thể cần mân mê một chút.) DNS công cộng trông giống như:
ec2-174-129-110-23.compute-1.amazonaws.com
Bắt đầu chương trình giao diện điều khiển Unix của bạn. (Trên Max OS X, nó được gọi là Terminal và nằm trong thư mục Ứng dụng -> Tiện ích.)
cd vào thư mục trên hệ thống máy tính để bàn có tệp * .pem của bạn chứa khóa bàn phím AWS của bạn.
ssh đến phiên bản EC2 của bạn bằng cách sử dụng một lệnh như:
ssh -i <<your *.pem filename>> ec2-user@<< Public DNS address >>
Vì vậy, đối với tôi, đây là:
ssh -i amzn_ec2_keypair.pem ec2-user@ec2-174-129-110-23.compute-1.amazonaws.com
Ví dụ EC2 của bạn sẽ cho phép bạn tham gia.
Bước 2: Tải lighttpd về thể hiện EC2 của bạn.
Để cài đặt lighttpd, bạn sẽ cần quyền truy cập root trên thể hiện EC2 của bạn. Vấn đề là: Amazon sẽ không cho phép bạn đăng nhập bằng root. (Không đơn giản, ít nhất.) Nhưng có một cách giải quyết. Gõ lệnh này:
sudo /bin/bash
Ký tự nhắc hệ thống sẽ thay đổi từ $ thành #. Chúng tôi sẽ không thoát khỏi "sudo" cho đến bước cuối cùng trong toàn bộ quá trình này.
Cài đặt ứng dụng lighttpd (phiên bản 1.4.28-1.3.amzn1 cho tôi):
yum install lighttpd
Cài đặt thư viện FastCGI cho lighttpd (không cần thiết, nhưng tại sao không?):
yum install lighttpd-fastcgi
Kiểm tra xem máy chủ của bạn có hoạt động không:
/etc/init.d/lighttpd start
Bước 3: Hãy để thế giới bên ngoài nhìn thấy máy chủ của bạn.
Nếu bây giờ bạn cố gắng đánh máy chủ của bạn từ trình duyệt trên máy tính để bàn của bạn, nó sẽ thất bại. Lý do: Theo mặc định, Amazon AWS không mở bất kỳ cổng nào tới phiên bản EC2 của bạn. Vì vậy, bạn phải mở các cổng bằng tay.
Chuyển đến bảng điều khiển EC2 của bạn trong trình duyệt trên máy tính để bàn của bạn. Nhấp vào "Nhóm bảo mật" trong khung bên trái. Một hoặc nhiều nhóm bảo mật sẽ xuất hiện trong khung phía trên bên phải. Chọn một cái đã được gán cho thể hiện EC2 của bạn khi bạn khởi chạy thể hiện của mình.
Một bảng có tên "Kết nối được phép" sẽ xuất hiện ở khung bên phải phía dưới. Một menu bật lên sẽ cho phép bạn chọn "HTTP" làm phương thức kết nối.
Các giá trị khác trong dòng đó của bảng phải là: tcp, 80, 80, 0.0.0.0/0
Bây giờ hãy nhấn máy chủ EC2 của bạn từ máy tính để bàn trong trình duyệt của bạn. Sử dụng địa chỉ DNS công cộng mà bạn đã sử dụng trước đó để SSH. Bạn sẽ thấy trang web chung lighttpd. Nếu bạn không, tôi không thể giúp bạn bởi vì tôi là một người mới. :-(
Bước 4: Cấu hình lighttpd để phục vụ CGI.
Quay lại chương trình giao diện điều khiển, cd vào thư mục cấu hình cho lighttpd:
cd /etc/lighttpd
Để bật CGI, bạn muốn bỏ ghi chú một dòng trong tệp <module.conf>. (Tôi có thể đã bật Fast CGI, nhưng các bước bé là tốt nhất!) Bạn có thể làm điều này với trình chỉnh sửa "ed" như sau:
ed modules.conf
/include "conf.d\/cgi.conf"/
s/#//
w
q
Tạo thư mục nơi các chương trình CGI sẽ sống. (Tệp /etc/lighttpd/lighttpd.conf xác định vị trí của nó.) Chúng tôi sẽ tạo thư mục của chúng tôi ở vị trí mặc định, vì vậy chúng tôi không phải thực hiện bất kỳ chỉnh sửa tệp cấu hình nào:
cd /var/www/lighttpd
mkdir cgi-bin
chmod 755 cgi-bin
Sắp đến rồi! Tất nhiên bạn cần đặt một chương trình CGI thử nghiệm vào thư mục cgi-bin. Đây là một:
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
Khởi động lại máy chủ lighttpd của bạn:
/etc/init.d/lighttpd restart
Kiểm tra chương trình CGI của bạn. Trong trình duyệt của máy tính để bàn của bạn, nhấn URL này, thay thế địa chỉ DNS công khai của đối tượng EC2 của bạn:
http://<<Public DNS>>/cgi-bin/hellopyworld.py
Đối với tôi, đây là:
http://ec2-174-129-110-23.compute-1.amazonaws.com/cgi-bin/hellopyworld.py
Bước 5: Thế đấy! Dọn dẹp, và cảm ơn!
Để thoát khỏi lệnh "sudo / bin / bash" được đưa ra trước đó, gõ:
exit
Lời cảm ơn: Hàng đống lời cảm ơn:
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
Chúc may mắn, amigos! Tôi xin lỗi vì bản chất phi truyền thống của "câu hỏi" này nhưng tôi đã nhận được rất nhiều sự giúp đỡ từ Stackoverflow đến nỗi tôi rất muốn trả lại một cái gì đó.