본문 바로가기
Python/파이썬 프로그래밍 연습

CGI 서버 예제

by 가므자 2012. 5. 7.

CGI 서버가 있다.

CommonGateWay 약자로 일반적인 웹서버와 기능은 비슷하지만, 실제 client request 받아서 CGI서버에서 처리하여 결과를 사용자에게 response 한다. 웹서버에 처리기능이 들어가 있다.

다음과 같은 폴더를 만든다.

·     c:\httpd : index.html 파일과 httpd.py(서버프로그램) 저장할 공간

·     c:\httpd\cgi-bin : 만든 cgi 파일들을 저장할 공간

·     c:\httpd\html : html파일들을 저장할 공간

다음과 같이 코드를 작성 한다.

# httpd.py

from BaseHTTPServer import HTTPServer # from module>import , HTTPServer
에서는 소켓을 생성하고, 요청

# 사항들을 핸들러(처리기) 전달해 준다.
from CGIHTTPServer import CGIHTTPRequestHandler # Unix
window 시스템에서 CGI scripts(python) 실행 시킨다.
import os # os
모듈을 사용함으로 해당 os 명령을 내릴 있게 된다.

os.chdir("c:\\httpd")
serv = HTTPServer(("", 1234), CGIHTTPRequestHandler)# ip
주소를 생략하면 자동적으로 localhost 된다.

serv.serve_forever()# shutdown() request 받기 전까지 handle request 동작 한다.( 명령처리기)

아래와 같이 만든 index.html httpd 폴더안에 넣어 둔다.



index.html 파일입니다.

 

 

나도 웹서버를 만들 있다. 놀랍지 않나요?



접속해보자. http://localhost:1234



c:\httpd\cgi-bin\hello.py 같이 hello.py 만들어 실행시켜 본다.

#!/usr/bin/env python

print "Content-Type: text/html"

print

print ""

print "

Hello world

"Hello world

# c:\httpd\html\name.html 같이 name.html 파일을 아래와 같이 만든다.

<form method="get" action="/cgi-bin/name.py"></form>
이름을 입력하세요
:
<input size="30" name="name" />
<input value="
확인" type="submit" />

c:\httpd\cgi-bin\name.py 경로로 아래와 같이 name.py 만든다.

# -*- coding: 949 -*-

# c:\httpd\cgi-bin\name.py
#!/usr/bin/env python #  유닉스 계열 시스템에서 cgi 실행시 python cgi임을 명시해 준다.

import cgi#  cgi 모듈의 호출을 통해 python scripts 실행할 있게 된다.

form = cgi.FieldStorage()#  FieldStorage dicionary처럼 동작한다(key,value)사용자가 입력한 내용을 cgi에서 사용하게함

name = form["name"].value#  form[key이름], value 사용하여 string 값으로 만들어 준다.
print "Content-Type: text/html; charset=euc-kr"
print

print ""
print "당신의 이름은 %s 입니다." % name





환경변수를 불러보자.

#c:\httpd\cgi-bin\environ.py

#!/usr/bin/env python

import os

print "Content-Type: text/html; charset=euc-kr"

print

keyList = os.environ.keys()# keys DB파일에 포함된 key 리스트들을 돌려 준다

keyList.sort() # keyList 내용들을 정리한다.

for i in keyList:    

print "%s : %s" % (i, os.environ[i]) # key:value 형태로 출력 한다.

[출처] 【┣┫³】 CGI서버|작성자 450ml

 

'Python > 파이썬 프로그래밍 연습' 카테고리의 다른 글

운영 체제와 작업하기  (0) 2012.04.27
데이터베이스 작업  (0) 2012.04.25
실전에 사용되는 파이썬  (0) 2012.04.25
사례 연구  (0) 2012.04.25
기능적 프로그래밍  (0) 2012.04.25

댓글