Простой HTTP-сервер с помощью Python

Tech Tip: Really Simple HTTP Server with Python
Sep 22, 2009 By Mohammed hisamuddin in HOW-TOs

http://www.linuxjournal.com/content/tech-tip-really-simple-http-server-p...

Если нужно быстро запустить веб-сервер, но нет желания возиться с настройками Apache или чего-то подобного, тогда Python как всегда может помочь. С помощью встроенного веб-сервера вы можете превратить любой каталог вашей машины в корневой каталог веб-ресурса. Всё что вам нужно - иметь установленный Python.

Практически, это, например, удобный способ расшарить файлы в локальной сети. Поскольку реализация сервера компактна, но вместе с тем обладает некоторыми возможностями, всё сводится к одной консольной команде.

К примеру, я хочу расшарить каталог /home/samdir и мой IP-адрес 192.168.1.2 .

Откройте терминал и напечатайте:

$ cd /home/somedir
$ python -m SimpleHTTPServer

Собственно, это всё. Теперь ваш веб-сервер стартанёт на порту 8000. Вы получите сообщение:

Serving HTTP on 0.0.0.0 port 8000 ...

Теперь откройте браузер и введите адрес:

http://192.168.1.2:8000

Также можно на локальной машине использовать "этот хост":

http://127.0.0.1:8000

Если каталог имеет в корне index.html, он и будет использован в качестве стартовой страницы. В противном случае мы увидим листинг файлов каталога.

Если хотим изменить порт:

$ python -m SimpleHTTPServer 8080

Если хотим обслуживать только локальную машину, напишем программульку:

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()

Обратите внимание, что всё это будет работать и в Windows или Cygwin.



Тематический каталог
Переводы статей из Linux Journal