ведет на экран строки обращения к журналам наподобие следующих:
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 также обрабатывал получение входных ар-
гументов от клиента, передавая их через сервер сторонним программам. Однако
программы запускались заново при каждом обращении клиента. Масштабировать
такие системы было трудно, поскольку даже у небольших программ время загруз-