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 "
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"
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 |
댓글