Использование локального веб-сервера

ispolzovanie lokalnogo veb servera Сценарии на стороне сервера

Ради простоты в этом издании предпринят иной подход. Все примеры будут запускаться под управлением простого веб-сервера, написанного на языке Python. Кроме того, веб-сервер будет выполняться на том же локальном компьютере, что и веб-броузер. Таким образом, теперь все, что осталось сделать, чтобы получить возможность опробовать примеры серверных сценариев, — это запустить сценарий веб-сервера и использовать «localhost» в качестве имени во всех адресах URL (вернитесь к главе 12, если забыли, почему это имя соответствует локальному компьютеру). Например, чтобы просмотреть веб-страницу, введите в адресную строку своего веб-броузера адрес URL следующего вида:

http://localhost/tutor0.html

Этот подход также позволяет избежать некоторых сложностей, связанных с различиями между серверами, и упрощает процедуру изменения программного кода — его можно редактировать непосредственно на локальном компьютере.

Для опробования примеров из этой книги мы будем использовать вебсервер из примера 15.1. Это по сути тот же самый сценарий, который был представлен в главе 1, дополненный возможностью передачи ему пути к рабочему каталогу и номера порта в виде аргументов командной строки (этот же сценарий мы будем запускать в корневом каталоге большого примера в следующей главе). Мы не будем погружаться в особенности всех модулей и классов, использованных в примере 15.1, — за дополнительной информацией обращайтесь к руководству по стандартной библиотеке Python. Но, как описывалось в главе 1, этот сценарий реализует веб-сервер, который:

     Ожидает появления входящих запросов от клиентов, выполняющихся на том же компьютере, прослушивая порт, номер которого указывается в командной строке (по умолчанию используется порт с номером 80 — стандартный порт HTTP).

     Обслуживает страницы HTML из веб-каталога, путь к которому указывается в командной строке (по умолчанию используется каталог, из которого запускается сценарий веб-сервера).

     Запускает CGI-сценарии на языке Python с расширением .py в именах файлов из подкаталога cgi-bin (или htbin), находящегося в вебкаталоге.

Дополнительную информацию о работе веб-сервера можно найти в главе 1.

Пример 15.1. PP4E\Internet\Web\webserver.py

Реализует веб-сервер на языке Python, способный обслуживать страницы HTML и запускать серверные CGI-сценарии на языке Python; этот сервер непригоден для промышленной эксплуатации (например, он не поддерживает протокол HTTPS, медленно запускает/выполняет сценарии на некоторых платформах), но его вполне достаточно для тестирования, особенно на локальном компьютере;

По умолчанию обслуживает файлы и сценарии в текущем рабочем каталоге и принимает соединения на порту 80, если не определены иные значения для этих параметров с помощью аргументов командной строки; CGI-сценарии на языке Python должны сохраняться в подкаталоге cgibin или htbin в веб-каталоге; на одном и том же компьютере может быть запущено несколько серверов для обслуживания различных каталогов при условии, что они прослушивают разные порты;

import os, sys

from http.server import HTTPServer, CGIHTTPRequestHandler

webdir = ‘.’ # каталог с файлами HTML и подкаталогом cgibin для сценариев port = 80 # http://servername/ если 80, иначе http://servername:xxxx/

if len(sys.argv) > 1: webdir = sys.argv[1] # аргументы командной строки

if len(sys.argv) > 2: port = int(sys.argv[2]) # иначе по умолчанию ., 80 print(‘webdir "%s", port %s’ % (webdir, port))

os.chdir(webdir) # перейти в корневой веб-каталог

srvraddr = (», port) # имя хоста, номер порта srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler) srvrobj.serve_forever() # обслуживать клиентов до завершения

Чтобы запустить сервер, обслуживающий примеры сценариев из этой главы, просто выполните этот сценарий из каталога, где находится файл сценария, без аргументов командной строки. Например, из командной строки DOS:

C:\\PP4E\Internet\Web> webserver.py

webdir ".", port 80

В Windows можно просто щелкнуть на значке этого сценария и оставить окно консоли открытым или запустить его из командной строки DOS. В Unix его можно запустить из командной строки в фоновом режиме или в отдельном окне терминала. Некоторые платформы могут потребовать от вас наличия привилегий администратора, чтобы запускать серверы, использующие порты из зарезервированного диапазона, такие как порт HTTP с номером 80. Если это ваш случай, либо запускайте сервер с необходимыми привилегиями, либо используйте иной номер порта (подробнее о портах рассказывается ниже в этой главе).

По умолчанию, когда сценарий выполняется локально, он обслуживает страницы HTML, которые запрашиваются с сервера «localhost», из каталога, где он находится или откуда запускается, и выполняет CGI-сценарии на языке Python, находящиеся в подкаталоге cgi-bin. Измените значение переменной webdir в сценарии или передайте путь к другому каталогу в командной строке. Вследствие такой организации файлы HTML в пакете примеров находятся в том же каталоге, что и сценарий веб-сервера, а CGI-сценарии находятся в подкаталоге cgi-bin. Иными словами, для посещения веб-страниц и запуска сценариев мы будем использовать адреса URL следующего вида соответственно:

http://localhost/somepage.htmlhttp://localhost/cgibin/somescript.py

По умолчанию оба адреса отображаются в каталог, содержащий сценарий веб-сервера (PP4E\Internet\Web). Напомню: чтобы опробовать примеры, находящиеся на другом компьютере, просто замените части «lo- calhost» и «localhost/cgi-bin» этих адресов именем своего сервера и строкой пути к каталогу (подробнее об адресах URL рассказывается ниже в этой главе). Сами примеры при этом будут действовать точно так же, но запросы будут передаваться уже не между программами, выполняющимися на локальном компьютере, а через сеть удаленному серверу.

Сервер в примере 15.1 не предназначен для промышленной эксплуатации, но его можно использовать для экспериментов с примерами из этой книги. Он вполне пригоден для тестирования CGI-сценариев локально, с использованием имени сервера «localhost», прежде чем вы будете развертывать их на действующем удаленном сервере. Если у вас появится желание опробовать примеры под управлением другого веб-сервера, вам потребуется экстраполировать примеры с учетом своих реалий. Такие параметры, как имена серверов и пути к каталогам в адресах URL, расширения в именах файлов CGI-сценариев и другие соглашения могут изменяться в широких пределах. За дополнительными подробностями обращайтесь к документации для своего сервера. В этой и следующей главе будет предполагаться, что используется сценарий webser- ver.py, запущенный на локальном компьютере.

Корневая страница с примерами на стороне сервера

Чтобы убедиться, что все готово к опробованию примеров, запустите сценарий веб-сервера из примера 15.1 и введите следующий адрес URL в адресную строку веб-броузера:

http://localhost/PyInternetDemos.html

По этому адресу загружается страница для запуска программ со ссылками на все файлы примеров (исходный код разметки HTML этой страницы смотрите в пакете с примерами). Сама страница для запуска выглядит в веб-броузере Internet Explorer в Windows 7, как показано на рис. 15.1 (в других броузерах и на других платформах она выглядит аналогично). Для каждого крупного примера на этой странице имеется ссылка, щелчок на которой запускает соответствующий сценарий.

Некоторые примеры можно открыть, щелкнув на соответствующих файлах HTML в окне менеджера файлов. Однако сценарии CGI, которые вызываются ссылками из примеров, должны запускаться веб-сервером. Если просматривать такие страницы непосредственно, то броузер, скорее всего, просто отобразит исходный программный код сценариев вместо того, чтобы выполнить его. Чтобы запускать сценарии CGI, необходимо открывать страницы HTML, вводя соответствующие им адреса URL с именем сервера «localhost» в адресной строке броузера.

Рис. 15.1. PylnternetDemos — страница запуска сценариев

 

Рано или поздно у вас может появиться желание начать использовать более мощный веб-сервер, поэтому мы рассмотрим дополнительные подробности установки CGI ниже в этой главе. Возможно, также у вас появится желание еще раз просмотреть обзор доступных вариантов серверов в главе 12 (немалой популярностью пользуются Apache и mod_ python). Эти подробности можно просто пропустить или прочитать вскользь, если вы не собираетесь устанавливать другой сервер прямо сейчас. А пока будем использовать локальный сервер.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий