python web server

By | 2012년 8월 22일

python 2.* 에서 유효한듯..
원본 : http://www.linuxjournal.com/content/tech-tip-really-simple-http-server-python

Tech Tip: Really Simple HTTP Server with Python
Sep 22, 2009 By Mohammed hisamuddin
inHOW-TOs
If you need a quick web server running and you don’t want to mess with setting up apache or something similar, then Python can help. Python comes with a simple builtin HTTP server. With the help of this little HTTP server you can turn any directory in your system into your web server directory. The only thing you need to have installed is Python.
Practically speaking this is very useful to share files inside your local network. Implementing this tiny but hugely useful HTTP server is very simple, its just a single line command.
Assume that I would like to share the directory /home/hisam and my IP address is 192.168.1.2
Open up a terminal and type:
$ cd /home/somedir
$ python -m SimpleHTTPServer
That’s it! Now your http server will start in port 8000. You will get the message:
Serving HTTP on 0.0.0.0 port 8000 …
Now open a browser and type the following address:
http://192.168.1.2:8000
You can also access it via:
http://127.0.0.1:8000
If the directory has a file named index.html, that file will be served as the initial file. If there is no index.html, then the files in the directory will be listed.
If you wish to change the port that’s used start the program via:
$ python -m SimpleHTTPServer 8080
If you want to only serve on localhost you’ll need to write a custom Python program such as:
import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

HandlerClass = SimpleHTTPRequestHandler
ServerClass = BaseHTTPServer.HTTPServer
Protocol = “HTTP/1.0”
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000
server_address = (‘127.0.0.1’, port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print “Serving HTTP on”, sa[0], “port”, sa[1], “…”
httpd.serve_forever()
Note also that this should also work on Windows or Cygwin.

# tested in python 3.1.2
import sys
from http.server import HTTPServer
from http.server import SimpleHTTPRequestHandler

HandlerClass = SimpleHTTPRequestHandler
ServerClass = HTTPServer
Protocol = “HTTP/1.0”

if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000

server_address = (‘127.0.0.1’, port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)

sa = httpd.socket.getsockname()
print (“Serving HTTP on”, sa[0], “port”, sa[1], “…”)
httpd.serve_forever()

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.