Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 204

строку http://localhost:8000, то должны увидеть список каталогов, и сервер вы-

ведет на экран строки обращения к журналам наподобие следующих:

127.0.0.1 -- [20/Feb/2013 22:02:37] "GET / HTTP/1.1" 200 -

localhost и 127.0.0.1 являются для TCP синонимами вашего локального компью-

тера, поэтому они сработают независимо от того, подключены ли вы к Интернету.

Вы можете интерпретировать эти строки следующим образом.

 127.0.0.1 — это IP-адрес клиента.

 Первый символ - — это имя удаленного пользователя, если он присутствует.

 Второй символ - — это имя авторизующегося пользователя, если требуется.

 [20/Feb/2013 22:02:37] — это дата и время доступа.

 "GET / HTTP/1.1" — это команда, отправленная веб-серверу:

y метод HTTP (GET);

y запрошенный ресурс (/, верхний уровень);

y версия HTTP (HTTP/1.1).

 Последнее число (200) — это код статуса HTTP, возвращенный веб-сервером.

Щелкните на любом файле. Если ваш браузер может распознать его формат

(HTML, PNG, GIF, JPEG и т. д.), он должен отобразить его, и сервер занесет этот

запрос в журнал. Например, если в вашем текущем каталоге имеется файл

oreilly.png, запрос http://localhost:8000/oreilly.png должен вернуть изображение

встревоженной зверушки, показанное на рис. 7.1, а в журнале должна появиться

похожая запись:

127.0.0.1 -- [20/Feb/2013 22:03:48] "GET /oreilly.png HTTP/1.1" 200 -

Если у вас в этой папке находятся и другие файлы, их названия должны появить-

ся в списке. Можете щелкнуть на одном из файлов, чтобы загрузить его. Если ваш

браузер сконфигурирован так, чтобы отображать формат этого файла, вы увидите

результат на экране, в противном случае браузер спросит, хотите ли вы загрузить

и сохранить файл.

По умолчанию используется порт 8000, но вы можете указать любой другой:

$ python -m http.server 9999

Веб-серверы

265

Вы должны увидеть следующее:

Serving HTTP on 0.0.0.0 port 9999 ...

Этот сервер, написанный только на Python, лучше всего подходит для быстрых

тестов. Мы можете выключить его, остановив его процесс с помощью комбинации

клавиш Ctrl+C.

Вы не должны использовать этот простой сервер для загруженного производ-

ственного сайта. Традиционные веб-серверы вроде Apache и Nginx гораздо быстрее

работают со статическими файлами. Кроме того, этот простой сервер не может

работать с динамическим содержимым, на что оказываются способны более про-

двинутые серверы, принимая дополнительные параметры.

Web Server Gateway Interface

Довольно быстро необходимость в простых файлах исчезает, и нам уже нужен сер-

вер, который может запускать программы динамически. В первые годы существо-

вания Всемирной паутины общий интерфейс шлюза (Common Gateway Interface,

CGI) был разработан для того, чтобы веб-серверы могли запускать внешние про-

граммы и возвращать результаты. CGI также обрабатывал получение входных ар-

гументов от клиента, передавая их через сервер сторонним программам. Однако

программы запускались заново при каждом обращении клиента. Масштабировать

такие системы было трудно, поскольку даже у небольших программ время загруз-