EC2 마이크로 인스턴스가 lighthttpd의 CGI 스크립트를 제공하도록하려면 어떻게해야합니까? 예를 들어 Python CGI?
반나절 걸렸지 만 lighttpd 서버를 사용하여 무료 Amazon AWS EC2 마이크로 인스턴스에서 실행되는 Python cgi를 얻었습니다. 나는 동료 멍청한 놈들이 모든 단계를 한곳에 두는 데 도움이 될 것이라고 생각합니다. 아래의 간단한 단계로 무장하면 설정하는 데 15 분 밖에 걸리지 않습니다!
경험이 많은 사용자가 이것을 읽고 내 질문은 : 내가 한 일에 보안 결함이 있습니까? (파일 및 디렉토리 권한을 참조하십시오.)
1 단계 : EC2 인스턴스를 시작하고 시작합니다.
[분명히 Amazon EC2에 가입하고 키 페어를 * .pem 파일에 저장해야합니다. 아마존이 그 방법을 알려 주듯이, 나는 이것을 다루지 않을 것이다.]
AWS 계정에 로그인하고 EC2 인스턴스를 시작하십시오. 웹에는이 작업에 대한 자습서가 있습니다. 아마존이 제시하는 기본 인스턴스 크기는 "작음"입니다. 이것은 "마이크로"가 아니므로 비용이 많이 듭니다. "마이크로"를 수동으로 선택하십시오. (마이크로 인스턴스는 첫해에만 무료입니다 ...)
실행중인 인스턴스의 퍼블릭 DNS 코드를 찾으십시오. 이렇게하려면 대시 보드의 상단 창에서 인스턴스를 클릭하면 하단 창에 "Public DNS"필드가 채워집니다. (조금씩 바이올린이 필요할 수도 있습니다.) 공용 DNS는 다음과 같습니다.
ec2-174-129-110-23.compute-1.amazonaws.com
유닉스 콘솔 프로그램을 시작하십시오. (Max OS X에서는 터미널이라고하며 응용 프로그램-> 유틸리티 폴더에 있습니다.)
AWS 키쌍이 포함 된 * .pem 파일이있는 데스크탑 시스템의 디렉토리로 cd하십시오.
다음과 같은 명령을 사용하여 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 인스턴스에 다운로드하십시오.
lighttpd를 설치하려면 EC2 인스턴스에서 루트 액세스 권한이 필요합니다. 문제는 : Amazon은 루트로 로그인 할 수 없다는 것입니다. (적어도 간단하지는 않습니다.) 그러나 해결 방법이 있습니다. 이 명령을 입력하십시오 :
sudo /bin/bash
시스템 프롬프트 문자가 $에서 #으로 변경됩니다. 우리는이 전체 과정의 마지막 단계까지 "스도"에서 빠져 나오지 않습니다.
lighttpd 응용 프로그램을 설치하십시오 (버전 1.4.28-1.3.amzn1).
yum install lighttpd
lighttpd 용 FastCGI 라이브러리를 설치하십시오 (필요하지는 않지만 왜 그렇지 않습니까?).
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 인스턴스 서버를 누르십시오. 이전에 SSH에 사용한 공용 DNS 주소를 사용하십시오. lighttpd 일반 웹 페이지가 표시됩니다. 당신이하지 않으면, 나는 그런 멍청한 사람이기 때문에 당신을 도울 수 없습니다. :-(
4 단계 : CGI를 제공하도록 lighttpd를 구성하십시오.
콘솔 프로그램으로 돌아가서 lighttpd의 구성 디렉토리로 cd하십시오.
cd /etc/lighttpd
CGI를 활성화하려면 <modules.conf> 파일에서 한 줄의 주석을 해제하십시오. (빠른 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을 클릭하여 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
행운을 빈다! 나는이 "질문"의 비 전통적인 성격에 대해 사과하지만 Stackoverflow로부터 많은 도움을 받아 무언가를 돌려주기를 간절히 바랐습니다.