2009-09-10 1 views
0

bash에서 지역 python 스크립트를 호출하여 로컬 Python 응용 프로그램의 구문 분석을위한 명령 줄 옵션으로 URL에 포함 된 쿼리 문자열이나 이름 - 값 쌍을 전달하면서 lighttpd를 구성하는 가장 간단한 방법은 무엇입니까?bash에서 lighttpd가 특정 URL을 기반으로 로컬 파이썬 스크립트를 호출하도록 구성하는 가장 간단한 방법은 무엇입니까?

Example: 
www.myapp.com/sendtopython/app1.py?Foo=Bar 
results in the following occurring on the system. 
>python app1.py Foo=Bar 

www.myapp.com/sendtopython/app2.py?-h 
results in the following occurring on the system. 
>python app2.py –h 

다음은 lighttpd 설치 및 구성 스크립트의 예입니다.

#!/bin/bash 
# Install and configure web console managed by lighttpd 
# Suggested Amazon EC2 AMI : ami-0d729464 
# 
# The console installed into /opt/web-console and 
# available on the http://_the_server_dns_/web-console 

set -e -x 
export DEBIAN_FRONTEND=noninteractive 

function die() 
{ 
    echo -e "[email protected]" >> /dev/console 
    exit 1 
} 

apt-get update && apt-get upgrade -y 
apt-get -y install python 
apt-get -y install unzip 
apt-get -y install lighttpd 

# web directory defaults to /var/www. 
WEBDIR=/var/www/logs 
mkdir $WEBDIR || die "Cannot create log directory." 

PYTHON=`which python` 
echo $? 
if [ ! $? ] 
then 
echo "Python interpreter not installed or not found in system path!!!" >> /dev/console 
echo "Exiting setup-instance..." 
exit 1 
fi 

#Download web-console 
FILE_DOWNLOAD_URL=http://downloads.sourceforge.net/web-console/web-console_v0.2.5_beta.zip 
wget $FILE_DOWNLOAD_URL -O web-console.zip || die "Error downloading file web-console.zip" 

# Install the web-console 
INSTALL_DIR=/opt/web-console 

mkdir $INSTALL_DIR 
unzip -u -d $INSTALL_DIR web-console.zip || die "Error extracting web-console.zip" 
chown www-data:www-data $INSTALL_DIR 

# Configure lighttpd 
cat > $INSTALL_DIR/webconsole.conf <<EOF 
server.modules += ("mod_cgi") 
alias.url  += ("/web-console/wc.pl" => "/opt/web-console/wc.pl") 
alias.url  += ("/web-console/" => "/opt/web-console/wc.pl") 
\$HTTP["url"] =~ "^/web-console/" { 
     cgi.assign = (".pl" => "/usr/bin/perl") 
} 
EOF 

ln -s $INSTALL_DIR/webconsole.conf /etc/lighttpd/conf-enabled/ 
/etc/init.d/lighttpd force-reload 

exit 0 
+0

왜 설치 스크립트가 표시됩니까? 그게 무슨 상관이야? –

+0

서버를 계속 실행하지 않고 필요할 때 EC2 인스턴스를 다시 빌드합니다. 내가 작업하고있는 환경에 대한 의사 소통을 돕기위한 스크립트가 포함되었습니다. – Chris

답변

3

니켈 수소, 내가 설치 스크립트 엉망 않겠지 만 한 번 실행 한 다음 (귀하의 경우 webconsole.conf) 결과 lighttpd를 구성 파일을 편집 한가지.

그런 다음 CGI 용 Python 스크립트를 등록해야합니다. 예를 들어 설치 스크립트에서 Perl을 수행하는 것과 같습니다. 당신은 밑줄

cgi.assign = (".py" => "/usr/bin/python") 

을 추가 할 수있는 당신이 에서 CGI로 평 등록 할 경우 lighttpd를 워드 프로세서를 검색합니다 (/ 웹 콘솔/경로에 대한 또 다른 CGI 옵션 파이썬을 만들 것 .pl로 라인을 해당 모든 경로).

그런 다음 Python CGI 스크립트 app1.py, app2.py, ...는 을 준수해야합니다. correclty가 환경 변수로 URL 매개 변수를 전달한다는 것을 상기하는 CGI 사양에을 준수하십시오. 따라서 sys.argv를 단순히 사용할 수는 없습니다. 필자는 매개 변수 추출을 수행하는 파이썬 모듈이 있다고 확신한다. (Perl에서 Lincoln Stein의 CGI 모듈은 env와 명령 행 인자 모두 사용할 수 있지만 Python의 경우에는 잘 모르겠습니다.)

관련 문제