Python을 Lighttpd와 함께 작동시키는 방법?


25

Raspberry Pi에 Lighttpd를 설치했지만 서버 측 코드를 작동 시키려고합니다. 필자는 PHP에 익숙하지만 Python을 Raspberry Pi의 "go to"언어로 간주하므로 Python을 사용해야한다고 생각합니다. Lighttpd를 통해 파이썬이 서버 측 코드를 처리하도록하려면 어떻게해야합니까?


penzilla.net/tutorials/python/cgi 링크가 끊어졌지만 훌륭한 글을 보내 주셔서 감사합니다. 내 파이가 내일 도착합니다!

답변:


16

lighttpd에 대한 CGI 지원이 필요합니다.

lighttpd 구성 파일 ( /etc/lighttpd/lighttpd.conf )을 열고 "mod_cgi"줄의 주석을 해제하거나 (있는 경우 줄의 시작 부분에서 #을 제거하십시오)없는 경우이 줄을 추가하십시오.

server.modules = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_auth",
            "mod_ssi",
            "mod_cgi",
            "mod_compress",
            "mod_fastcgi",
            "mod_rewrite",
            "mod_magnet",
)

파일 맨 아래에 다음을 추가하십시오.

$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( ".py" => "/usr/bin/python" )
}

lighttpd 데몬을 다시 시작하십시오.

sudo service lighttpd force-reload

그런 다음 웹 서버의 루트 디렉토리 아래에 cgi-bin 디렉토리를 작성하십시오. 이 디렉토리에서 .py로 끝나는 모든 파일은 Python에 의해 처리됩니다.

이제 웹 요청을 처리하기 위해 Python 스크립트를 작성할 수 있습니다. Python으로 CGI 프로그램작성하는 방법대한 이 학습서를 읽으십시오 .

반면에 낮은 수준의 세부 사항을 처리하고 개발자 생산성을 향상시키기 위해 프레임 워크를 사용하려는 경우 web.py를 확인하는 것이 좋습니다 . apt를 사용하여 설치할 수 있습니다.

sudo apt-get install python-webpy

Cloud 101 블로그의 Lucas 는 webpy 프레임 워크를 사용하여 웹 페이지를 작성 하는 방법에 대한 훌륭한 자습서 를 게시했습니다 .


이 FastCGI 또는 CGI입니까?
Mark Ingram

일반 CGI는 모든 요청에 ​​대해 파이썬 인터프리터를 시작해야하므로 가끔 요청에만 적합합니다.
Thorbjørn Ravn Andersen

아아 이것은 부분적으로 만 작동했습니다. "http : // (IP) /cgi-bin/test.py?parameter=xxx"를 호출하여 "http : // (IP) /cgi-bin/test.cgi?parameter=xxx"를 호출하지 않고 파이썬을 실행할 수 있습니다. "-나중에 404 오류가 발생합니다.
576i

@ 576i이 줄 cgi.assign = ( ".py"=> "/ usr / bin / python")을 cgi.assign = ( "".cgi "=>"/ usr / bin / python ")으로 변경해보십시오
Steve Robillard

1
@ 576i 다른 질문에 대한 의견으로이 토론을 계속하기보다는 새로운 질문을 열어서 효과와 시도한 내용을 포함하십시오. 그런 다음이 주석을 삭제합니다. BTW 왜 .py 확장자로 갈 수없는 이유가 있습니까?
Steve Robillard

3

허용 된 답변이 저에게는 효과가 없었으며 Lighttpd에 사용 가능한 사전 구성된 패키지도 무시합니다.

Raspberry 용 Lighttpd에 Python을 설치하는 올바른 방법은 다음과 같습니다.

먼저 cgi를 활성화

sudo lighttpd-enable-mod cgi

Lighttpd에 대한 새로운 구성 파일이 생성됩니다.

/etc/lighttpd/conf-enabled/10-cgi.conf

nano /etc/lighttpd/conf-enabled/10-cgi.conf다음과 유사하게 구성 파일을 편집하십시오.

server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
        alias.url += ( "/cgi-bin/" => "/var/www/cgi-bin" )
        cgi.assign = (
                ".py"  => "/usr/bin/python",
        )
}

다음을 실행하여 Python 2가 설치되어 있는지 확인하십시오.

/usr/bin/python --version

이제 다시 시작

sudo /etc/init.d/lighttpd force-reload

행운을 빕니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.