Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009

.pdf
Скачиваний:
4972
Добавлен:
14.05.2016
Размер:
14.64 Mб
Скачать

15.Vl/еЬ-приложенияи Web-серверы

613

При возникновении ошибок во время установки следует устранить причины ошибок и повторить последовательность действий по установке сервера Apache.

Администрирование сервера

Описание всех особенностей администрирования сервера Apache выходит за рамки книги. Ниже рассматриваются основные операции, необходимые для начала работы с сервером Apache.

Сервер Apache конфигурируется с помощью файлов, находящихся в каталоге CONF. Для конфигурирования сервера Apache в основном используется файл httpd.conf, в котором находятся различные директивы администрирования. Файлы access.conf и srm.conf — это старые файлы, не используемые большинством администраторов, но присутствующие в установке для совместимости с предыдущими версиями сервера (в них по умолчанию директивы отсутствуют).

В файле Httpd.conf содержится вспомогательная информация, являющаяся комментариями (комментарии начинаются с символа "#"), остальные строки являются директивами сервера Apache.

Директивы администрирования сервера Apache сгруппированы в три основные секции:

управления сервером Apache в целом (управления глобальными переменными окружения сервера);

определяющие параметры сервера по умолчанию, которые относятся ко всем виртуальным хостам;

отвечающие за установки параметров для конкретных виртуальных хостов. Рассмотрим особенности использования наиболее важных директив фай-

ла Httpd.conf для первоначального использования сервера.

Директива ServerRoot используется для установки корневого домашнего каталога для Web-cepBepa и имеет следующий формат:

ServerRoot directory-filename

Например, директива

ServerRoot "C:/Program Files/Apache Group/Apache"

устанавливает каталог "C:/Program Files/Apache Group/Apache" в качестве корневого домашнего каталога.

Директива Alias используется для создания псевдонима (алиаса) виртуального каталога Web-узла и имеет следующий формат:

Alias url-path directory-filename

где: url-path — имя (алиас) виртуального каталога; directory-filenam — относительный путь к соответствующему локальному каталогу.

614

Часть 4. Публикация баз данных в Интернете

Псевдонимы позволяют хранить файлы Web-узла не только в корневом домашнем каталоге. Например, если использовать директиву вида

Alias / т у /ftp/pub/image

то для обращения к файлу /ftp/pub/image/index.html можно использовать следующий запрос:

http://myserver/my/index.html

Директива ScriptAlias используется с целью создания псевдонима виртуального каталога Web-узла для хранения сценариев и имеет такой же формат записи, как у предыдущей директивы. Например, после задания директивы

ScriptAlias /cgi-bin/ /web/cgi-bin/

для обращения к сценарию /web/cgi-bin/foo можно использовать следующий запрос:

http://myserver/cgi-bin/my.

Отметим, что при установке сервера Apache рассмотренные директивы используются в файле Httpd.conf с параметрами по умолчанию. Вместе с файлом Httpd.conf находится файл Httpd.conf.default, в котором хранится первоначальное содержимое файла Httpd.conf, используемое для установки параметров сервера по умолчанию.

15.7. Варианты создания Web-узла

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

Во-первых, организация, управление и администрирование такого Webузла не требует больших знаний и опыта. Решением этих вопросов будет заниматься профессиональный персонал провайдера, с помощью которого можно качественно оформить узел, выбрать дизайнерский стиль, наделить сайт набором сетевых услуг. В перечень этих услуг входит сбор статистики по числу обращений к узлу, числу повторяющихся обращений, продолжительности времени, проведенного пользователями на определенных Web-страницах, адреса пользователей, ведение регистрационных журналов ошибок, сообщений, и публикации отчетов, использование БД для хранения различной структурированной информации. При сотрудничестве с опытным персоналом узла провайдера можно быстро приобрести опыт, изучать и сравнивать различные услуги и типы серверных сред.

15.Vl/еЬ-приложенияи Web-серверы

615

Во-вторых, потребуется гораздо меньше денежных средств и времени на организацию и содержание такого узла, чем на установку и поддержку собственного Web-cepeepa.

Подключение организации к Интернету для публикации собственной информации представляет собой важную и, бесспорно, не простую задачу. Перед тем как приступить к установке своего Web-cepeepa, желательно изучить как можно больше чужой опыт во избежание лишней траты времени и денег.

Таким образом, для организации собственного Web-узла можно реализовать следующие варианты:

открыть свой собственный сайт на узле надежного провайдера;

организовать управление своим узлом через удаленный сервер, принадлежащий провайдеру;

подготовить или нанять специалистов и разработать Wcb-узел собственными силами.

Вариантов построения Web-узла существует очень много. Прежде чем приступать к выбору варианта разработки собственного Web-узла, следует разобраться с технологиями в области разработки Web-приложений, лежащих в основе любого Web-узла, и в том числе с публикацией БД на страницах Webузла — принципиально важной технологией, применяемой в большинстве Web-узлов сети Интернет и особенно сетей интранет.

Контрольные вопросы и задания

1.Приведите упрощенную схему функционирования Web-приложения.

2.Назовите принципы построения сетей интранет.

3.Изобразите архитектуру Web-приложения с модулями расширения сервера.

4.Охарактеризуйте интерфейсы CGI и WinCGI.

5.Какие способы могут использоваться для запуска модуля расширения сервера?

6.Охарактеризуйте интерфейсы ISAPI/NSAPI.

7.Приведите схему Web-приложения с использованием модулей расширения обозревателя.

8.Охарактеризуйте средства, используемые для разработки модулей расширения клиентской части.

9.Изобразите архитектуру и опишите схему функционирования двухуровневого Web-приложения, использующего БД.

10.Охарактеризуйте архитектуру трехуровневого Web-приложения, использующего БД.

11.Изобразите архитектуру и опишите схему функционирования многоуровневого Web-приложения с сервером приложений.

12.Приведите архитектуру многоуровневого смешанного Web-приложения.

13.Охарактеризуйте архитектуру многоуровневого Web-приложения на основе технологии CORBA.

616

Часть 4. Публикация баз данных в Интернете

14.Дайте общую характеристику интерфейсам OLE DB, ADO и ODBC.

15.Что представляет собой Web-сервер и для каких целей он используется?

16.Дайте краткую характеристику основным операционным системам, используемым в качестве платформ Web-серверов.

17.Охарактеризуйте сервер Apache и укажите поддерживаемые им функции.

18.Назовите достоинства и недостатки сервера Internet Information Server

всравнении с сервером Apache.

19.Какие возможности обеспечивает сервер М icrosoft Personal Web Server?

20.Каким образом осуществляется администрирование серверами Personal Web Server и Internet Information Server?

21.С помощью какой среды и как выполняется компилирование исходных модулей сервера Apache?

22.Назовите возможные варианты создания Web-узла.

Литература

1. ВеберДж. Технология JavaO в подлиннике / Пер. с англ. — СПб.: BHV-Санкт- Петербург, 1999.

2.Дунаев С.Б. Технологии Интернет-программирования. — СПб.: БХВ-Петер- бург, 2001.

3.Коннолли Т., Бегг К. Базы данных. Проектирование. Реализация и сопровождение. Теория и практика. — М.: Вильяме, 2003.

4.Мещеряков Е. В., Хомоненко А. Д. Публикация баз данных в Интернете. — СПб.: БХВ-Петербург, 2001.

5.Орфали Р., ХаркиД. Java и CORBA в приложениях клиент-сервер / Пер. с англ. - М.: ЛОРИ, 2000.

6.Фролов А.В., Фролов Г.В. Базы данных в Интернете: практическое руководство по созданию Web-приложений с базами данных. — М.: Издательско-тор- говый дом «Русская редакция», 2000.

16. Интерфейсы программирования Web-приложения

617

16. Интерфейсы программирования Web-приложений

В главе рассматриваются особенности создания Web-приложений с применением модулей расширения Web-сервера, используемых для публикации БД на HTML-страницах на основе интерфейсов программирования серверных расширений CGI и ISAPI. Интерфейс CGI продолжают широко использовать в UNIX-подобных системах благодаря быстроте разработки и надежности функционирования Web-приложений, использующих этот интерфейс. Интерфейс WinCGI редко используется для разработки Web-приложений, так как он предназначен для серверов, функционирующих в Windows-подоб- ных операционных системах, в которых предпочтительно использовать интерфейс ISAPI. Поэтому интерфейс WinCGI нами не рассматривается.

Интерфейсы программирования расширений сервера предоставляют более широкий спектр возможностей по сравнению с технологиями ASP, IDC/ НТХ, поэтому разработанные на их основе модули можно использовать для реализации нестандартных функций.

Например, эти модули могут использоваться обеспечения дополнительных мер по обеспечению безопасности передачи данных по линиям связи (создание ISAPI-фильтров), для организации доступа к данным через нестандартные интерфейсы или внешние устройства (например, в случае создания Интернет-магазина при передаче данных о платежах клиентов) и т. д. В главе освещены также основные интерфейсы ODBC, OLE DB и ADO, используемые в модулях расширения Web-сервера для доступа к БД.

Приводятся примеры, реализованные в среде системы программирования Visual С++6.0. При подготовке материала главы предполагалось, что читатель знаком с основами программирования на языке С++.

16.1. Общий интерфейс взаимодействия CGI

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

618 Часть 4. Публикация баз данных в Интернете

CGI-модуль может вызываться из обозревателя для динамического формирования HTML-доку ментов на основании данных, введенных посетителями сервера Web при помощи форм или путем выбора ими ссылок. Напомним, что обработка данных, введенных пользователем в интерфейсные элементы формы, может быть выполнена с помощью обработчика, URL которого задается параметром ACTION тега формы, а способ передачи данных из формы на Web-сервер определяет параметр METOD тега формы.

Напомним, что параметр METHOD позволяет выбрать метод передачи данных Web-cepeepy. При разработке CGI-модуля необхадимо учитывать, каким методом HTTP-протокола будут передаваться данные между обозревателем и сервером.

Основными методами передачи параметров запроса являются методы POST

и GET. Метод POST применяется для передачи информации, включенной в HTTP-запрос и относящейся к ресурсу, указанному URL-адресом CGI-моду- ля. Метод GET используется для извлечения информации, передаваемой в URL-адресе CGI-модуля. В зависимости от используемого метода в HTTP-за- просе сервер формирует передаваемые для CGI-модуля параметры различными способами. В случае применения метода GET для получения параметров запроса используются переменные окружения (переменные операционной системы MS-DOS, устанавливаемые командой SET), в случае применения метода POST данные передаются через стандартный поток ввода (рис. 16.1).

Рис. 16.1. Схема взаимодействия сервера и CGI-модуля

16. Интерфейсы программирования Web-приложения

619

Например:

<HTMLXHEAD><TITLE>npnMep СС1-модуля</ТГП_Е> </HEAD>

<BODY>

<А href="http://localhost/scripts/my_cgi.exe?TEST=modul"> Загрузить CGI-модуль по запросу http://localhost/Scripts/ my_cgi.exe?TEST=modul</A>

<FORM action=http://localhost/scripts/my_cgi.exe method=post> <В>Введите ваше имя:</В>

<INPUT maxLength=60 name=NAME size=40 value="My_login"> <BR>Tnn действия: <INPUT CHECKED name=TYPE type=radio value=Registry> Зарегистрировать

<INPUT name=TYPE type=radio value=Execute>BbinonHHTb сценарий

<BRXINPUT name=Submit type=submit value=Send> <BRXINPUT name=Reset type=reset value=C6pocXBR>

</ F O R M X / P X / B O D Y X / H T M L >

В этом примере в окне обозревателя будут отображены ссылка — Загрузить CGI-модуль по запросу http://localhost/Scripts/ my_cgi.exe?TEST=modul и элементы управления, входящие в состав формы. По нажатию на специальную кнопку "Послать запрос", имеющую тип Submit, обозреватель посылает запрос Web-cepeepy. Последний, в свою очередь, запускает CGI-модуль, находящийся по URL-адресу http://localhost/ scripts/my_cgi.exe. При этом данные, введенные пользователем в интерфейсные элементы формы, передаются через стандартный поток ввода. При выборе пользователем ссылки "Загрузить CGI-модуль по запросу http:/ /localhost/Scripts/my_cgi.exe?TEST=modul" обозреватель передает запрос Web-серверу 11а загрузку CGI-модуля, находящегося по URL-адресу http://localhost/Scripts/my_cgi.exe. При этом для передачи запроса используется метод GET и сервер передает CGI-модулю только данные, находящиеся в командной строке — "TEST=modul" через переменную окружения QUERY_STRING.

Метод GET может использоваться и при передачи данных формы. В этом случае в теге формы указывается METOD=GET. При использовании метода GET данные находятся в переменной окружения QUERY_STRING в следующем формате:

"Имя 1 ^Значение 1 &Имя2=Значение2&ИмяЗ=ЗначениеЗ"

где Имя1 ,...,ИмяЗ — значения параметров NAME, задающих имена полей формы. При этом количество параметров определяется количеством элементов формы (в данном случае — три). Вместо значений параметров подставляются данные из соответствующих полей.

620

Часть 4. Публикация баз данных в Интернете

Отметим, что значения не всех интерфейсных элементов формы передаются на сервер. Например, значение служебного элемента типа reset

CINPUT name=Reset type=reset value=C6poc><BR>

не передается на сервер, так как оно не несет полезной информации.

Если в приведенном выше примере HTML-документа параметру METHOD задать значение GET, то переменная QUERY_STRING примет значение

NAME=MyJogin&TYPE=Registry&Submit=Send

При этом значением переменной QUERY_STRING является закодированная строка. В этой строке символы пробелов заменяются на символы "+", а при использовании специальных и управляющих символов производится их замена на последовательность символов вида "Ххх", где "хх" — шестнадцатеричный код символа.

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

Например, если первый интерфейсный элемент заменить на следующий

CINPUT maxLength=60 пате=ИМЯ size=40 value-'MOE ИМЯ">, то переменная QUERY_STRING будет иметь следующее значение

%C8%CC%DF=%CC%CE%C5+%C8%CC%DF&TYPE=Registry&Submit=Send

В результате работы CGI-модуль генерирует HTML-документ, который помещается в стандартный поток вывода. Web-сервер использует для управления и передачи различных данных CGI-модулю много переменных окружения. Рассмотрим особенности использования переменных окружения и стандартных потоков ввода/вывода.

Переменные окружения

Переменные окружения используются в CGI-модуле для получения от Web-cepeepa служебной информации о программном обеспечении Web-cep- вера, параметрах HTTP-запроса и другой информации, передаваемой Webсервером CGI-модулю. Например, в случае использования метода GET при формировании HTTP-запроса в переменной QUERY_STRING находятся передаваемые пользовательские данные, а при использовании метода POST в переменных окружения CONTENT_TYPE и CONTENT_LENGTH содержатся тип и длина передаваемой информации соответственно, сами данные в этом случае передаются через стандартный входной поток.

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

SERVER_NAME — символическое имя или IP-адрес компьютера, на котором запущен Web-cepeep (задается в URL при обращении к этому Web-cepeepy);

16. Интерфейсы программирования Web-приложения

621

SERVER_SOFTWARE — название и версия Web-сервера, разделенные символом "/";

GATEWAYJNERFACE - версия CGI-интерфейса;

SERVER_PROTOCOL — название и версия протокола передачи данных, используемого на сервере, разделенные символом "/";

SERVER_PORT — номер порта, на который обозреватель посылает запросы Web-cepeepy;

REQUEST_METHOD - метод HTTP-запроса;

• CONTENT LENGTH — число символов в стандартном входном потоке;

CONTENT_TYPE — тип данных, находящихся в стандартном входном потоке;

SCRIPT_NAME — виртуальный путь к исполняемому CGI-модулю, используемый для получения URL в CGI-модуле;

•PATHJNFO — полученный от клиента виртуальный путь к CGI-мо- дулю;

PATH_TRANSLATED — физический путь до CGI-модуля, преобразованный из значения PATHJNFO;

QUERY_STRING — строка символов, следующая за знаком "?" в URL данного запроса;

REMOTE_HOST — символическое имя удаленной машины, с которой произведен запрос;

REMOTE_ADDRESS - IP-адрес клиента;

•AUTH_TYPE — метод аутентификации (подтверждения подлинности), если Web-cepeep поддерживает аутентификацию пользователей и CGIмодуль защищен от постороннего доступа;

REMOTE_USER — имя пользователя в случае аутентификации;

REMOTEJDENT — имя пользователя, полученное от сервера (если сервер поддерживает аутентификацию);

НТТР_АССЕРТ — список типов MIME, известных клиенту и отделенных друг от друга запятой (тип/подтип, тип/подтип и т. д.);

HTTP_USER_AGENT — имя обозревателя, с которого послан запрос;

HTTP_REFER — адрес URL документа HTML, из которого осуществляется вызов CGI-модуля;

НТТР_АССЕРТ — типы данных MIME, которые могут быть приняты обозревателем от Web-cepBepa;

HTTP_ACCEPT_LANGUAGE — идентификатор национального языка для получения ответа от Web-cepBepa;

HTTP_UA_PIXELS — разрешение видеоадаптера, установленное в компьютере пользователя;

HTTP_UA_COLOR — допустимое число цветов в системе пользователя;

HTTP_UA_CPU — тип центрального процессора в компьютере пользователя;

622

Часть 4. Публикация баз данных в Интернете

HTTP_UA_OS — операционная система, под управлением которой работает обозреватель;

HTTP CONNECTION - тип соединения;

HTTP HOST — имя узла, на котором работает Web-cepeep;

HTTP_ACCEPT_ENCODING — тип метода кодирования, используемый обозревателем для формирования запроса Web-cepBepy;

HTTP FROM — имя пользователя, установленное в настройках обозревателя;

HTTP PRAGHA — специальные команды Web-cepBepy;

HTTP AUTHORIZATION — информация для аутентификации обозревателя на Web-сервере.

Замечание.

Тип MIME (Multipurpose Internet Mail Extensions — Многоцелевые расширения почтового стандарта Интернета) определяет протокол передачи почтовых сообщений, используемый взамен стандартного.

Пример 1. Для Web-сервера Microsoft-PWS-95/2.0 в среде Windows 98 при условии размещения модуля CGI с именем my_cgi.exe на сервере igin переменные окружения могут иметь следующие значения:

SERVER_SOFTWARE = Microsoft-PWS-95/2.0 SERVERNAME = igin

GATEWAYJ NTER FAC E = CGI/1.1

SERVER_PROTOCOL = HTTP/1.0 SERVER_PORT = 80 REQUEST_METHOD = POST

HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*

PATH_TRANSLATED = C:\WebShare\wwwroot\ SCRIPT_NAME = /scripts/my_cgi.exe QUERYSTRING = TEST=modul REMOTE_HOST = 127.0.0.1

REMOTE_ADDR = 127.0.0.1

CONTENT_TYPE = application/x-www-form-urlencoded

HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*

HTTP_USER_AGENT = Mozilla/4.7 [en] (Win98; I) HTTP_ACCEPT_LANGUAGE = en,ru HTTP_CONNECTION = Keep-Alive

HTTP_HOST = igin HTTP_ACCEPT_ENCODING = gzip

Остальные переменные имеют значение null.

Здесь: igin — имя компьютера, где запускается CGI-модуль;