Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
“Хабаровский государственный технический университет”
АДМИНИСТРИРОВАНИЕ В ИНФОРМАЦИОННЫХ СЕТЯХ
Установка
web
-интерфейса к серверу
InterBase
v
.6.0 в
Linux
Методические указания по выполнению лабораторной работы № 15
для студентов специальности 071900
“Информационные системы и технологии”
Хабаровск
Издательство ХГТУ
2005
УДК 681.58:681.32
Администрирование в информационных сетях: Установка web-интерфейса к серверу InterBase v. 6.0 в Linux. Методические указания по выполнению лабораторной работы №15 для студентов специальности 071900 «Информационные системы и технологии» / Сост. Г. К. Конопелько, – Хабаровск: Изд-во Хабар. гос. техн. ун-та, 2005. – ХХ с.
Методические указания составлены на кафедре «Автоматика и системотехника». Включают порядок выполнения лабораторной работы, общие сведения, задание на лабораторную работу, требования по оформлению отчета, контрольные вопросы, перечень необходимой для выполнения задания литературы.
Печатается в соответствии с решениями кафедры "Автоматика и системотехника" и методического совета института информационных технологий.
© Хабаровский государственный
технический университет, 2005
Установка
web
-интерфейса к серверу
Interbase
v
. 6.0 в
Linux
Цель работы
: научиться устанавливать компоненты для организации web-интерфейса к серверу InterBase на основе языка Perl.
Лабораторная работа выполняется в локальной сети на рабочей станции с операционной системой Linux версии 7 или более поздней. В лабораториях кафедры АиС операционная система Linux работает на компьютерах под управлением программного пакета VMware. Этот пакет позволяет создавать так называемые «виртуальные машины» – мнимые компьютеры, не зависящие от выполняющейся в текущее время на данном компьютере операционной системы (ОС). Для запуска ОС Linux необходимо запустить VMware на рабочей станции, выбрать из списка требуемую операционную систему и нажать кнопку «Power ON».
Порядок выполнения лабораторной работы
Подготовка и допуск к работе.
К выполнению лабораторной работы допускаются студенты, которые подготовились к работе и имеют не более двух невыполненных предыдущих заданий.
Перед работой студент должен:
· предъявить преподавателю полностью оформленный отчет о предыдущей работе;
· ответить на вопросы преподавателя.
Студенты, которые не выполнили одно из вышеперечисленных требований, к работе не допускаются.
Отчёт по работе должен содержать:
- Текст задания.
- Перечень всех использованных в лабораторной работе команд и инструкций.
- Вывод по работе.
Краткое введение в DBI. В настоящее время практически невозможно найти область применения, в которой бы не использовались базы данных. Internet не исключение и организация web-интерфейса к базам данных играет очень важную роль, позволяя создавать интернет-магазины, ленты новостей, сайты банков, и т.п. В большинстве случаев для подготовки CGI-сценариев (скриптов) используется язык Perl. Для этих целей в Perl существует множество различных модулей, которые оптимизованы для работы с конкретными типами баз данных. Но, как правило, эти модули имеют разные наборы функций для работы с базами. Для упрощения переноса приложений был разработан модуль DBI. Он построен по модульной архитектуре – для каждой СУБД существует драйвер, реализующий специфику работы с конкретной базой данных.
Общий алгоритм работы с базой данных в этом случае можно представить в следующем виде:
1. Подключение к базе данных с помощью функции connect.
2. Подготовка запроса к выполнению с помощью функции prepare.
3. Выполнение запроса с помощью функции execute.
4. Выборка данных (для запросов, содержащих команду SQL select) с помощью функций fetch.
5. Завершение работы с базой данных – функции finish и disconnect.
DBI является модулем доступа к базам данных для языка программирования Perl. В нем определен ряд методов, переменных и соглашений, составляющих единообразный интерфейс баз данных, не зависящий от конкретной используемой базы данных. Важно помнить, что DBI представляет собой просто интерфейс, нечто вроде прослойки между приложением и одним или несколькими модулями драйверов
(DBD) баз данных. Самую большую часть работы выполняют именно драйверы. DBI предоставляет стандартный интерфейс и структуру, в рамках которой действуют драйверы. API, или интерфейс прикладного программирования, определяет интерфейс вызовов и переменные, которые должны использоваться сценариями Perl. API реализован в расширении Perl DBI (рис. 1).
Рис. 1. Архитектура приложения DBI.
DBI «пересылает» вызовы методов соответствующим драйверам для фактического исполнения. DBI отвечает также за динамическую загрузку драйверов, проверку наличия ошибок и их обработку, предоставление выполняемых по умолчанию реализаций методов и выполняет другие задачи, не связанные с конкретными базами данных.
В каждом драйвере реализованы методы DBI с использованием функций частного интерфейса ядра соответствующей базы данных. Заботиться о драйверах нужно только разработчикам сложных приложений, работающих с несколькими базами данных, или разработчикам общих библиотечных функций.
Основные принципы работы.
Чтобы использовать DBI, нужно сначала загрузить модуль DBI:
use DBI;
use strict;
(Директива use strict
не является обязательной, но настоятельно рекомендуется к использованию.)
Затем необходимо соединиться
с источником данных и получить дескриптор
соединения:
$dbh = DBI->connect($data_source, $username, $password) || die $DBI::errstr;
или
$dbh = DBI->connect($data_source,$username,$password,%attr)||die $DBI::errstr;
Переменная $
data
_
source
может быть описана одним из следующих способов:
$data_source = dbi:DriverName:database_name;
$data_source = dbi:DriverName:database_name@hostname:port;
$data_source = dbi::DriverName::database=database_name;host=hostname;port=port;
Если определена переменная окружения DBI_AUTOPROXY
(а драйвером в $data_source
не является Prox
y
), то запрос на соединение автоматически изменяется следующим образом:
dbi:Proxy:$ENV{DBI_AUTOPROXY}:dsn=$data_source;
и передается модулю DBD::Proxy
. DBI_AUTOPROXY
обычно устанавливается в виде «hostname=... port=...
». Если $username
или $password
имеют неопределенные значения (а не просто пусты), то DBI
подставляет значения из переменных окружения DBI_USER
и DBI_PASS
соответственно. DBI выдает предупреждение, если переменные окружения не определены. Однако систематическое использование этих переменных не рекомендуется по соображениям безопасности. Этот механизм предназначен, в основном, для облегчения тестирования.
DBI->comect
автоматически инсталлирует драйвер, если он еще не инсталлирован. При инсталляции драйвера возвращается действующий дескриптор драйвера, либо происходит аварийное завершение программы с выводом сообщения об ошибке, состоящего из строки install_driver
и описания возникшей проблемы. Таким образом, DBI->connect
аварийно завершается при неудачной инсталляции драйвера, а при неудаче соединения просто возвращается undef
, и в $DBI::errstr
помещается сообщение об ошибке.
Затем драйверу передаются на обработку аргументы $data_source
(с удаленным префиксом «dbi:...:
»),
$username
и $password
. В DBI
не определена какая-либо интерпретация содержимого этих полей. Драйвер может интерпретировать поля $data_source
, $username
и $password
любым образом и устанавливать любые нужные значения по умолчанию, соответственно ядру базы данных, к которому осуществляется доступ. (Например, Oracle использует переменные окружения ORACLE_SID
и TWO_TASK
, если $data_source не задана.)
Атрибуты AutoCoimt
и PrintError
по умолчанию включены для каждого соединения.
Перед установкой соединения с базой данных можно определить какие драйверы (DBD) установлены в системе:
@ary= DBI->data_sources($dnver);
@агу = DBI->data_sources($dnver, %attr);
Метод data
_
sources
возвращает список всех источников данных (баз данных), доступных через указанный драйвер. Драйвер будет загружен, если это не было сделано раньше. Если значение $driver
пустое или undef
, то используется значение переменной окружения DBI_DRIVER
.
Источники данных возвращаются в форме, пригодной для передачи методу connect (т. е. имеют префикс dbi:$driver:
). Следует иметь в виду, что многие драйверы не умеют определять, какие источники данных доступны. Такие драйверы возвращают пустой или неполный список.
Для базы данных InterBase v. 6.0 соединение сервером может быть выполнено по следующему сценарию:
my $DBPATH = '/MyDataBases/InterBaseDB//MyFirsDB.gdb';
$user='SYSDBA';
$password='masterkey';
my ($dbh, $sth);
my $dbh = DBI->connect("dbi:InterBase:$DBPATH", $user, $password)
|| die "Can't connect to $data_source: $DBI::errstr";
DBI позволяет приложению «готовить» команды для последующего выполнения. Подготовленная команда отождествляется с дескриптором команды, находящимся в переменной Perl. Обычно это переменная $sth
.
$sth = $dbh->prepare("SELECT * FROM MyFirstTable");
$sth->execute();
В DBI нет понятия «текущего сеанса». У каждого сеанса есть дескриптор, т.е. $dbh
, возвращенный методом connect
. Этот объект используется для вызова методов, относящихся к базе данных.
Большинство данных возвращается сценарию Perl в виде строк. (Значения Null возвращаются как undef
.) Это позволяет о
Дата и время возвращаются как строки символов в «родном» формате соответствующего ядра базы данных. Эффект временного пояса зависит от базы данных и драйвера.
Perl поддерживает двоичные данные в своих строках, a DBI обменивается двоичными данными с драйвером без изменений. Как обрабатывать такие двоичные данные, решают разработчики драйвера.
В большинстве баз данных, способных работать с несколькими наборами символов, устанавливается глобальный набор символов по умолчанию. Хранящийся в базе данных текст должен состоять из символов этого набора. Если это не так, то виновата база данных или приложение, осуществлявшее вставку данных. Во время выборки текст должен автоматически преобразовываться в набор символов клиента, предположительно с учетом национальных установок. Если для осуществления такого поведения драйверу необходимо установить флаг, то он должен сделать это сам, а не требовать подобных действий от приложения.
Несколько команд SQL нельзя помещать в один дескриптор команды (
$sth
)
, хотя некоторые базы данных и драйверы поддерживают такую возможность (в том числе Sybase).
DBI пока не поддерживается чтение записей в произвольном порядке, т.е. записи выбираются в том порядке, в котором их возвратила база данных, а после выборки они забываются.
DBI напрямую не поддерживает обновление и удаление по месту. Альтернативное решение можно найти в описании атрибута CursorName
.
Разработчики отдельных драйверов могут предоставлять любые собственные функции и/или атрибуты дескрипторов, которые сочтут полезными. Собственные функции драйверов вызываются с помощью метода DBI func().
К собственным атрибутам драйвера доступ осуществляется так же, как и к стандартным атрибутам.
У многих методов есть необязательный параметр %attr
, его можно использовать для передачи данных драйверу, в котором реализован метод. За исключением особо оговоренных в документации случаев параметр %attr
, можно использовать только для передачи специфических для драйвера указаний. Обычно можно игнорировать параметр %attr
или передавать его как undef
.
Большинство драйверов DBI требует, чтобы приложения использовали для взаимодействия с ядром базы данных диалект SQL (Structured Query Language
– структурированный язык запросов). Сам DBI не требует использования какого-либо особого языка, он независим от языка. В терминах ODBC DBI находится в «прозрачном» (pass-thru) режиме, хотя для отдельных драйверов это может быть не так. Единственное требование состоит в том, чтобы запросы и другие команды представлялись одной строкой символов, передаваемой в качестве первого аргумента методам prepare
или do
.
Установка
DBI
.
Перед установкой интерфейса DBI следует убедиться, что он еще не установлен и только в этом случае приступать к установке, так как DBI устанавливается один раз для всех драйверов DBD. К настоящему времени для инсталляции доступна версия DBI-1.37. На сервере АиС файл “DBI-1.37.tar.gz” находится в папке “//aisnt:/home/student/kurs5/PrIS/DBI-DBD-MySQL”. Дополнительно копия этого файла расположена на FTP сервере по адресу ftp://ais.khstu.ru/incoming/linux. Файл представляет собой архив с упакованным пакетом программ в виде исходных текстов и скриптов, используемых для инсталляции DBI. Перед инсталляцией указанный файл “DBI-1.37.tar.gz” необходимо распаковать. Для этого в программе “mc” достаточно скопировать содержимое архива во временный каталог, например “/home/Install/IB”. В полученном каталоге /DBI-1.37 имеется файл README с инструкцией по установке. В соответствии с этой инструкцией в системе должен быть установлен пакет ActivePerl версии не ниже 5.0, а последовательность установки должна быть следующей:
[root@lis IB]# perl Makefile.PL
[root@lis IB]# make
[root@lis IB]# make test
[root@lis IB]# make install
После первой команды будут выданы сообщения о возможности поддержки устанавливаемым DBI некоторых новых функций текущей версией Perl, сообщения о ходе работы программы Makefile, а в конце – инструкция по дальнейшему ходу установки соответствующему второй, третьей и четвертой командам из приведенного выше списка. После выполнения последней команды инсталляция завершается и интерфейс DBI готов к работе. После этого каталог /DBI-1.37 может быть удален.
Установка драйвера
DBD
для
InterBase
.
Для интерфейса DBI версии 1.37 следует устанавливать драйвер DBD версии 0.43. Файл DBD-InterBase-0.43.tar.gz находится в папке “//aisnt:/home/student/kurs5/PrIS/DBI-DBD-InterBase” файл-сервера кафедры АиС. Дополнительно копия этого драйвера расположена на FTP сервере по адресу ftp://ais.khstu.ru/incoming/linux. Методика установки этого драйвера полностью аналогична установке DBI интерфейса, описанной в предыдущем разделе.
Установка
ActivePerl
.
Описанные выше пакеты DBI и DBD ориентированы на работу с Perl версии 5.8. Поэтому, если необходимо использование всех новых возможностей, введенных в интерфейс и драйверы, нужно перед установкой DBI переустановить ActivePerl, если установленная версия Perl ниже указанной. Инсталляционный пакет “ActivePerl-5.8.4.810-i868-linux.rpm” можно скопировать из папки файлового сервера кафедры: “//aisnt:/home/student/kurs5/PrIS/ActivePerl” или с FTP сервера по адресу ftp://ais.khstu.ru/incoming/linux. Указанный файл представляет собой специальным образом упакованный архив. Распаковывать архив перед установкой не требуется. В архиве есть исполняемый файл “INSTALL”, который нужно запустить для установки пакета. Для этого в программе “mc” на одной из панелей выбирается файл ActivePerl-5.8.4.810-i868-linux.rpm, нажимается клавиша «Enter», после этого на панели будет изображен список файлов, входящих в выбранный архив. Далее необходимо выбрать файл INSTALL (он отображается зеленым цветом с символом ‘*’ перед именем, означающим, что файл является исполняемым) и нажать клавишу «Enter». Если установка производится из каталога /home/Install/Perl, на экран монитора будет выведено следующее сообщение:
Installing “/home/Install/Perl/ActivePerl-5.8.4.810-.i686.rpm”
ActivePerl ##############################
Проверка работоспособности установленных компонент.
Для проверки установленных пакетов нужно скопировать тестовый пакет или из папки файлового сервера кафедры: “//aisnt:/home/student/kurs5/PrIS/Test_15” или с FTP сервера по адресу ftp://ais.khstu.ru/incoming/linux/Test_15 в каталог, предназначенный для документов Вашего web-сервера (конфигурирование web-сервера выполнялось в лабораторной работе № 2). После этого в строке адреса web-броузера Windows ввести: http://10.10.146.201/Test_15/index15.html.
В окне web-броузера должна быть изображена страница, показанная на рис. 2. Если щелкнуть мышкой на ссылке “Press this string!”, то будет выведена страница, изображенная на рис. 3.
Рис. 2. Тестовая страница web-интерфейса с СУБД InterBase
Рис. 3. Вторая тестовая страница
Задание на лабораторную работу
1. Установите при необходимости ActivePerl 5.8.4 на свой образ ОС Linux.
2. Установите пакет DBI (если он еще не установлен).
3. Установите драйверы DBD к СУБД InterBase.
4. Скопируйте тестовый пример и убедитесь в работоспособности вышей системы.
5. Продемонстрируйте результаты преподавателю.
Контрольные вопросы
1. Как осуществляется инсталляция пакетов “rpm”?
2. Как осуществляется инсталляция программ в исходных текстах?
3. Каково назначение DBI?
4. Как устанавливаются драйверы к базам данных?
5. Каково разделение функций между DBI и DBD?
Библиографический список
1. Спецификация DBI. Документация к модулям DBD::mysql/DBD::mSQL/ Файл “dbi-dbd-mysql-spec1.pdf”.
2. Гайдамакин Николай Александрович. Автоматизированные информационные системы, базы и банки данных. Вводный курс: Учеб. Пособие для вузов / Гайдамакин Николай Александрович. - М.: Гелиос АРВ, 2002. - 368с.: ил.
3. Федоров Алексей Георгиевич. Базы данных для всех / Федоров Алексей Георгиевич, Н. З. Елманова. - М.: КомпьютерПресс, 2001. - 256с.: ил.
4. Коннолли Томас. Базы данных. Проектирование, реализация и сопровождение. Теория и практика = Database Systems: Пер.с англ. / Коннолли Томас, К. Бегг, А. Страчан. - 2-е изд.; испр. и доп. - М.: Вильямс, 2001. - 1120с.: ил.
5. Карпова Татьяна Сергеевна. Базы данных: модели, разработка, реализация: Учеб. пособие / Карпова Татьяна Сергеевна. - СПб.: Питер, 2002. - 304с.: ил.
6. Ролланд Ф.Д. Основные концепции баз данных = The essence of Databases: Пер. с англ. / Ф. Д. Ролланд. - М.: Вильямс, 2002. - 256с.: ил. - (Основы вычислительных систем).
7. «Programming the Perl DBI», Alligator Descartes and Tim Bunce («Программирование на Perl DBI», Аллигатор Декарт и Тим Бане).
8. «Programming Perl, 3rd Ed», Larry Wall, Tom Christiansen and Randal Schwartz («Программирование на Perl», 3-е издание, Ларри Уолл, Том Кристиансен, Рэндал Шварц).
9. «Learning Perl», Randal Schwartz («Изучаем Perl», Рэндал Шварц).
10. «Dr Dobb's Journal», November 1996 («Журнал д-ра Доббса», ноябрь, 1996).
11. «The Perl Journal», April 1997 («Журнал Perl», апрель 1997).
АДМИНИСРИРОВАНИЕ В ИНФОРМАЦИОННЫХ СЕТЯХ
Установка
web
-интерфейса к серверу
InterBase
v
. 6.0 в
Linux
Методические указания по выполнению
лабораторной работы № 15
для студентов специальности 071900
«
Информационные системы и технологии
»
К
онопелько Геннадий Константинович
Главный редактор Л. А. Суевалова
Редактор ______________
Компьютерная верстка Г. К. Конопелько
Подписано в печать 26.05.04. Формат 60х84 1
/16
.
Бумага писчая. Гарнитура “Таймс”. Печать офсетная. Усл. печ. л. 0,70
Тираж 75 экз. Заказ .
Издательство Хабаровского государственного технического университета.
680035, Хабаровск, ул. Тихоокеанская, 136.
Отдел оперативной полиграфии издательства
Хабаровского государственного технического университета.
680035, Хабаровск, ул. Тихоокеанская, 136.