본문 바로가기

IT/Python

파이썬 웹서버 모듈(BaseHTTPServer, SimpleHTTPServer) 사용하기

/* 
written by kaspy (kaspyx@gmail.com)
*/ 


 파이썬(Python)을 사용해서 간단하게 웹서버를 구축할수 있습니다. 이번 포스팅에서는 파이썬을 이용해서 웹서버를 구축하는 내용을 다루도록 하겠습니다.


* 웹서버용 파이썬 라이브러리 모듈

(세번째 CGIHTTServer 모듈은 다음 포스팅에 다루도록한다.)


모듈

내용

처리 기능

BaseHTTPServer

기반 서버 클래스용으로, HTTPServer 정의

핸들러 클래스용으로, BaseHTTPRequestHndler 정의

테스트용 서버를 실행하는, test() 함수 정의

기반클래스로,

HTTP 프로토콜 처리

SimpleHTTPServer

기반 서버 클래스인 HTTPServer 임포트하여 사용

핸들러 클래스용으로, SimpleHTTPRequestHandler 정의

테스트용 서버를 실행하는, test() 함수 정의

GET HEAD 메소드

처리 가능

CGIHTTPServer

기반 서버 클래스인 HTTPServer 임포트하여 사용

핸들러 클래스용으로, CGIHTTPRequestHandler 정의

테스트용 서버를 실행하는 함수 test() 정의

POST CGI 처리

 


1. BaseHTTPServer 모듈


  1. #!/usr/bin/env python
  2.  
  3. from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
  4.  
  5. class MyHandler(BaseHTTPRequestHandler):
  6.     def do_GET(self):
  7.         self.wfile.write("Hello world")
  8.  
  9. if __name__ == '__main__':
  10.     server = HTTPServer(('',8888), MyHandler)
  11.     print "Started WebServer on port 8888..."
  12.     print "Press ^C to quit webserver"
  13.     server.serve_forever()


3,5번 라인, BaseHTTPRequestHandler를 상속받아, 원하는 로직으로 핸들러 클래스를 정의합니다. 웹서버를 만드는 가장 기본적인 방법이다. 10번 번 라인에서 HTTPServer() 함수를 통해 서버 객체를 생성한후 13번 라인의 serve_forever() 함수를 통해 서버를 실행한다. 위의 파이썬 코드를 실행하면 아래와 같이 웹서버 객체가 실행되어 생성된다.


웹서버 실행


웹서버 접속했을때 결과


2. SimpleHTTPServer 모듈


 앞절에서는 웹서버를 만들기 위해 MyHandler라는 핸들러를 코딩하였다. SimpleHTTPServer 모듈 내에는 SimpleHTTPRequestHandler 클래스가 정의되어있는데, 이 핸들러에는 do_GET() 및 do_HEAD() 함수가 정의 되어있어서 아래와 간단한 명령어로 코딩없이 웹서버를 작동시킬수 있다. 아래 명령어는 실행한 경로에 디렉토리 리스팅이 되는 기능을 하는 웹서버이다.


python -m SimpleHTTPServer 8888 

#아래는 동일한 명령어

python -c 'import SimpleHTTPServer; SimpleHTTPServer.test()' 8888



파이썬 명령어를 실행한 모습

웹서버에 접속했을때 모습

* 참고 자료

django로 배우는 쉽고 빠른 파이썬 웹프로그래밍