Lotus Domino и WEB: чистая победа
Предлагаю вам поставить мысленный эксперимент в стиле психоанализа. Сравните, какие ассоциации у вас вызывают выражения "программирование базы данных" и "программирование Web-сайта". Интересно, что получится у вас, а у меня было вот как: "база данных" олицетворяла порядок, организованность и четкость, а "Web-сайт" вызывал образ тарелки спагетти.
Представьте себе сложную структуру оглавлений на диске и множество хранящихся в них HTML-файлов. Несколько десятков оглавлений и несколько сотен файлов. Учтите, что каждый из файлов содержит около десятка ссылок не просто на другие файлы, но на определенные позиции внутри других файлов. При этом такие ссылки, как правило, взаимные. Вот это и называется "спагетти"!
А теперь вообразите, что ваша работа - постоянно вносить в эту картину изменения, обеспечивая целостность и непротиворечивость системы ссылок. Ох, и не завидую я HTML-программистам... Развести руками и смириться, сказав "се ля ви", мешает тот факт, что существует способ избежать тяжелой, неэффективной и неблагодарной работы, прибегнув к помощи Lotus Domino. Практические преимущества использования Domino для Web перед традиционными системами так же велики, как преимущества языка C перед ассемблером.
С одной стороны, можно работать в традиционном стиле: это ничем не запрещается. Domino, как всякий хороший Web-сервер, поддерживает HTML, SHTML, SSL, CGI, Java и Perl, что следует считать аналогом вставок на ассемблерном коде в текст программ на C. Эти средства очень важны, подчас незаменимы, но не являются определяющими. Главное в том, что Domino предоставляет доступ к приложениям Notes по протоколу HTTP с Internet-браузером в качестве клиента.
Если припомнить, что одной из определяющих характеристик Lotus Notes является работа с документарными базами данных, являющимися одновременно приложениями, то возникает следующая картина. База данных и/или приложение, разработанное в среде Notes, на лету транслируются сервером Domino в HTML-последовательности и Java-скрипты для пользователей, подключившихся к системе при помощи браузера. И никаких спагетти!
Вот как выглядит база данных справочной системы Notes, открытая при помощи стандартного Internet Explorer'а, входящего в комплект поставки Windows 95. (1)
Чтобы в полной мере оценить сказанное, нужно хотя бы раз увидеть Domino в работе своими глазами. Сравните функциональность доступа к справочной системе "изнутри" Notes и через Web. Чтобы запустить сервер Web (HTTP-сервер), входящий в состав Domino, усилий почти не потребуется, особенно если вы уже устанавливали NNTP-сервер, руководствуясь статьей в 40-м номере КГ. За подробностями об установке протокола TCP/IP и настройке Domino на его использование обратитесь к упомянутой статье.
Настройка HTTP-сервера требует минимального редактирования документа описания сервера, находящегося в адресной книге сервера. Сначала откроем секцию "Internet Port and Security Configuration". В первой из четырех строк первой колонки указано, что HTTP-сервер использует порт TCP/IP номер 80. Это стандартный номер порта, который нет нужды изменять. Во второй строке указано состояние порта как разрешенного к использованию (Enabled) HTTP-сервером. Третья и четвертая строки определяют, что для доступа к серверу абонент должен сообщать свое имя и пароль, а анонимный доступ запрещен. Нижняя часть таблицы, касающаяся SSL, нас не интересует. (2)
Следующая секция, представляющая непосредственный интерес, содержит настройки Web-сервера. Она так и называется: "HTTP server". (3)
Самое приятное то, что в этой секции можно практически ничего не менять. Обязательно нужно заполнить только поле "Host name", указывающее имя или IP-адрес компьютера, на котором расположен Web-сервер. Еще я изменил значение переключателя "Allow HTTP clients to browse databases" с Yes на No. В результате этого посетитель Web-сайта Domino не сможет воспользоваться URL-командой "/?Open", выводящей список всех без исключения баз данных, расположенных на сервере, в том числе не предназначенных для доступа по HTTP. Соответственно я изменил значение поля "Home URL" с "/?Open" на "help4.nsf/?Open". Это означает, что при входе на сайт любой пользователь по умолчанию получит доступ к базе данных справочной системы Lotus Notes.
В данном контексте "любой пользователь" означает "любой из зарегистрированных пользователей", поскольку анонимный доступ к серверу мы запретили. Процедура регистрации пользователей Web-сервера ничем не отличается от регистрации абонентов системы новостей. Если пользователь однажды занесен в адресную книгу сервера, повторная регистрация не нужна. Дело в том, что эта процедура служит для учета всех пользователей Internet/Intranet вне зависимости от того, будут ли они обращаться к NNTP- или HTTP-серверу. За описанием процесса регистрации отсылаю читателей к 40-му номеру КГ.
Но предположим, что мы разрешили анонимный доступ к серверу Domino по HTTP. В этом случае, с целью повышения надежности управления доступом, следует явно прописать разрешение доступа анонимного пользователя Internet/Intranet к каждой конкретной базе данных, предназначенной для этой цели.
Делаем так: запускаем клиента Notes, однократно кликаем правой кнопкой мыши на иконке соответствующей базы, из контекстного меню выбираем позицию "Access Control...". В появившемся диалоговом окне кликаем кнопку "Add" и, введя зарезервированное имя "Anonimous", кликаем кнопку "ОК".
В списке управления доступом базы появляется новый пользователь. Проверьте, чтобы у этого пользователя уровень доступа к базе соответствовал вашему замыслу. В примере я разрешил только доступ по чтению (Reader). (4)
Способы запуска HTTP-сервера, который не стартует по умолчанию при запуске Domino, следующие. Для ручного пуска или остановки используются консольные команды Domino "load http" и "tell http quit" соответственно. Чтобы HTTP-сервер автоматически загружался при запуске Domino, в файле notes.ini следует скорректировать строчку "ServerTasks=...", добавив к перечню запускаемых задач имя задачи Web-сервера, то есть "http".
В общих чертах это все, что хотелось сказать. Только не подумайте, что этим исчерпывается тема Domino и Web. Издательство Lotus и IBM посвятило ей не одну книгу. Так уж получается, что чем обширнее предмет, тем сложнее составить о нем краткий рассказ. Лучшее, что можно сделать, - попробовать получить собственные впечатления. И коль скоро я настойчиво призываю вас познакомиться с Lotus Domino, то должен заполнить некоторые пробелы.
При беглом обзоре процесса установки Lotus Notes и Domino (см. КГ N№ 39) я советовал установить Notes, дополнив его документацией по серверу Domino, путем частичной установки сервера. И те, кто последовал этому совету, и те, кто сразу установил сервер Domino, уже могли столкнуться с определенными затруднениями, не упоминавшимися в статье. Поэтому нужна помощь.
Во-первых, если сервер "мудрит", то проще всего прибегнуть к полной переустановке, которая не отнимает много времени. Прежде всего, следует удалить предыдущую версию Notes при помощи утилиты Windows "Установка и удаление программ". В ходе удаления выдаются сообщения, что оглавления Notes\Data и Notes не могут быть удалены, поскольку не пусты. В каждом из сообщений предлагается повторить попытку удаления. Пользуйтесь этим предложением, но после того, как при помощи "Проводника Windows" очистите соответствующее оглавление вручную. Увидев сообщение об успешном удалении Notes, не верьте своим глазам, а вручную удалите из оглавления c:\Windows файлы lotus.ini и notes.ini. Автоматически они не удаляются; а пока они остаются на диске, программа установки считает, будто Notes на машине есть, и установки "вчистую" добиться нельзя.
Во-вторых, перед установкой сервера на компьютере должен быть активен хотя бы один сетевой протокол. Признаком отсутствия сетевых протоколов, а следовательно, и сетевых портов, необходимых для работы Domino, является сообщение "Illegal function call" при первом запуске Notes, точнее, при автозапуске приложения "Domino Setup". Если такое произошло, нужно удалить Notes и переустановить его уже после добавления протокола. Другой признак указанной ситуации в том, что приложение "Domino Setup" не позволяет завершить установку, ссылаясь на недостаток данных, хотя вы и заполнили все требовавшиеся позиции. Вы не ошиблись, просто серверу нужен хотя бы один сетевой порт.
В-третьих, в русскоязычной версии Windows 95 (OSR2) иногда наблюдается сбой системного характера: в окне консоли сервера не переключается язык. В NT 4.0 такого не замечалось. В этом случае переустанавливать ничего не нужно - достаточно поставить английский языком по умолчанию и перегрузить компьютер, чтобы стали доступны англоязычные консольные команды Domino.
Наконец, трудности вызывает работа с id-файлами Notes. При установке сервера приложение "Domino Setup" запрашивает имя сертификатора, название сервера и имя администратора. Если идентификационные файлы первых двух сохраняются в оглавлении данных Notes (notes\data) в файлах server.id и cert.id, то id-файл администратора нужно явным образом извлечь из адресной книги сервера.
Делается это так: открывается раздел "Persons" адресной книги и открывается документ с учетной записью администратора. В самом низу документа находится "присоединенный" id-файл, обозначенный серым прямоугольником. Нужно кликнуть на нем правой кнопкой мыши, выбрать из контекстного меню команду "Detach" и сохранить файл в оглавление notes\data, дав ему имя по выбору и расширение "id". Я, например, сохранил свой файл под названием eshcherb.id.
Дело в том, что Domino и Notes следует сообщить, с каким Id'ом должен стартовать сервер, а с каким - клиент. В противном случае Notes стартует с сервером в роли пользователя или, что хуже, сервер может запуститься с Id'ом администратора и начнет сбоить. Во избежание неприятностей нужно отредактировать файл notes.ini следующим образом. (5)
Переменная KeyFilename, имеющаяся в ini-файле по умолчанию, указывает id-файл, с которым запускается клиент Notes. Переменную ServerKeyFilename нужно добавить самостоятельно; она указывает, с каким id-файлом запускается сервер Domino.
Удачных экспериментов!
Евгений Щербатюк
Представьте себе сложную структуру оглавлений на диске и множество хранящихся в них HTML-файлов. Несколько десятков оглавлений и несколько сотен файлов. Учтите, что каждый из файлов содержит около десятка ссылок не просто на другие файлы, но на определенные позиции внутри других файлов. При этом такие ссылки, как правило, взаимные. Вот это и называется "спагетти"!
А теперь вообразите, что ваша работа - постоянно вносить в эту картину изменения, обеспечивая целостность и непротиворечивость системы ссылок. Ох, и не завидую я HTML-программистам... Развести руками и смириться, сказав "се ля ви", мешает тот факт, что существует способ избежать тяжелой, неэффективной и неблагодарной работы, прибегнув к помощи Lotus Domino. Практические преимущества использования Domino для Web перед традиционными системами так же велики, как преимущества языка C перед ассемблером.
С одной стороны, можно работать в традиционном стиле: это ничем не запрещается. Domino, как всякий хороший Web-сервер, поддерживает HTML, SHTML, SSL, CGI, Java и Perl, что следует считать аналогом вставок на ассемблерном коде в текст программ на C. Эти средства очень важны, подчас незаменимы, но не являются определяющими. Главное в том, что Domino предоставляет доступ к приложениям Notes по протоколу HTTP с Internet-браузером в качестве клиента.
Если припомнить, что одной из определяющих характеристик Lotus Notes является работа с документарными базами данных, являющимися одновременно приложениями, то возникает следующая картина. База данных и/или приложение, разработанное в среде Notes, на лету транслируются сервером Domino в HTML-последовательности и Java-скрипты для пользователей, подключившихся к системе при помощи браузера. И никаких спагетти!
Вот как выглядит база данных справочной системы Notes, открытая при помощи стандартного Internet Explorer'а, входящего в комплект поставки Windows 95. (1)
Чтобы в полной мере оценить сказанное, нужно хотя бы раз увидеть Domino в работе своими глазами. Сравните функциональность доступа к справочной системе "изнутри" Notes и через Web. Чтобы запустить сервер Web (HTTP-сервер), входящий в состав Domino, усилий почти не потребуется, особенно если вы уже устанавливали NNTP-сервер, руководствуясь статьей в 40-м номере КГ. За подробностями об установке протокола TCP/IP и настройке Domino на его использование обратитесь к упомянутой статье.
Настройка HTTP-сервера требует минимального редактирования документа описания сервера, находящегося в адресной книге сервера. Сначала откроем секцию "Internet Port and Security Configuration". В первой из четырех строк первой колонки указано, что HTTP-сервер использует порт TCP/IP номер 80. Это стандартный номер порта, который нет нужды изменять. Во второй строке указано состояние порта как разрешенного к использованию (Enabled) HTTP-сервером. Третья и четвертая строки определяют, что для доступа к серверу абонент должен сообщать свое имя и пароль, а анонимный доступ запрещен. Нижняя часть таблицы, касающаяся SSL, нас не интересует. (2)
Следующая секция, представляющая непосредственный интерес, содержит настройки Web-сервера. Она так и называется: "HTTP server". (3)
Самое приятное то, что в этой секции можно практически ничего не менять. Обязательно нужно заполнить только поле "Host name", указывающее имя или IP-адрес компьютера, на котором расположен Web-сервер. Еще я изменил значение переключателя "Allow HTTP clients to browse databases" с Yes на No. В результате этого посетитель Web-сайта Domino не сможет воспользоваться URL-командой "/?Open", выводящей список всех без исключения баз данных, расположенных на сервере, в том числе не предназначенных для доступа по HTTP. Соответственно я изменил значение поля "Home URL" с "/?Open" на "help4.nsf/?Open". Это означает, что при входе на сайт любой пользователь по умолчанию получит доступ к базе данных справочной системы Lotus Notes.
В данном контексте "любой пользователь" означает "любой из зарегистрированных пользователей", поскольку анонимный доступ к серверу мы запретили. Процедура регистрации пользователей Web-сервера ничем не отличается от регистрации абонентов системы новостей. Если пользователь однажды занесен в адресную книгу сервера, повторная регистрация не нужна. Дело в том, что эта процедура служит для учета всех пользователей Internet/Intranet вне зависимости от того, будут ли они обращаться к NNTP- или HTTP-серверу. За описанием процесса регистрации отсылаю читателей к 40-му номеру КГ.
Но предположим, что мы разрешили анонимный доступ к серверу Domino по HTTP. В этом случае, с целью повышения надежности управления доступом, следует явно прописать разрешение доступа анонимного пользователя Internet/Intranet к каждой конкретной базе данных, предназначенной для этой цели.
Делаем так: запускаем клиента Notes, однократно кликаем правой кнопкой мыши на иконке соответствующей базы, из контекстного меню выбираем позицию "Access Control...". В появившемся диалоговом окне кликаем кнопку "Add" и, введя зарезервированное имя "Anonimous", кликаем кнопку "ОК".
В списке управления доступом базы появляется новый пользователь. Проверьте, чтобы у этого пользователя уровень доступа к базе соответствовал вашему замыслу. В примере я разрешил только доступ по чтению (Reader). (4)
Способы запуска HTTP-сервера, который не стартует по умолчанию при запуске Domino, следующие. Для ручного пуска или остановки используются консольные команды Domino "load http" и "tell http quit" соответственно. Чтобы HTTP-сервер автоматически загружался при запуске Domino, в файле notes.ini следует скорректировать строчку "ServerTasks=...", добавив к перечню запускаемых задач имя задачи Web-сервера, то есть "http".
В общих чертах это все, что хотелось сказать. Только не подумайте, что этим исчерпывается тема Domino и Web. Издательство Lotus и IBM посвятило ей не одну книгу. Так уж получается, что чем обширнее предмет, тем сложнее составить о нем краткий рассказ. Лучшее, что можно сделать, - попробовать получить собственные впечатления. И коль скоро я настойчиво призываю вас познакомиться с Lotus Domino, то должен заполнить некоторые пробелы.
При беглом обзоре процесса установки Lotus Notes и Domino (см. КГ N№ 39) я советовал установить Notes, дополнив его документацией по серверу Domino, путем частичной установки сервера. И те, кто последовал этому совету, и те, кто сразу установил сервер Domino, уже могли столкнуться с определенными затруднениями, не упоминавшимися в статье. Поэтому нужна помощь.
Во-первых, если сервер "мудрит", то проще всего прибегнуть к полной переустановке, которая не отнимает много времени. Прежде всего, следует удалить предыдущую версию Notes при помощи утилиты Windows "Установка и удаление программ". В ходе удаления выдаются сообщения, что оглавления Notes\Data и Notes не могут быть удалены, поскольку не пусты. В каждом из сообщений предлагается повторить попытку удаления. Пользуйтесь этим предложением, но после того, как при помощи "Проводника Windows" очистите соответствующее оглавление вручную. Увидев сообщение об успешном удалении Notes, не верьте своим глазам, а вручную удалите из оглавления c:\Windows файлы lotus.ini и notes.ini. Автоматически они не удаляются; а пока они остаются на диске, программа установки считает, будто Notes на машине есть, и установки "вчистую" добиться нельзя.
Во-вторых, перед установкой сервера на компьютере должен быть активен хотя бы один сетевой протокол. Признаком отсутствия сетевых протоколов, а следовательно, и сетевых портов, необходимых для работы Domino, является сообщение "Illegal function call" при первом запуске Notes, точнее, при автозапуске приложения "Domino Setup". Если такое произошло, нужно удалить Notes и переустановить его уже после добавления протокола. Другой признак указанной ситуации в том, что приложение "Domino Setup" не позволяет завершить установку, ссылаясь на недостаток данных, хотя вы и заполнили все требовавшиеся позиции. Вы не ошиблись, просто серверу нужен хотя бы один сетевой порт.
В-третьих, в русскоязычной версии Windows 95 (OSR2) иногда наблюдается сбой системного характера: в окне консоли сервера не переключается язык. В NT 4.0 такого не замечалось. В этом случае переустанавливать ничего не нужно - достаточно поставить английский языком по умолчанию и перегрузить компьютер, чтобы стали доступны англоязычные консольные команды Domino.
Наконец, трудности вызывает работа с id-файлами Notes. При установке сервера приложение "Domino Setup" запрашивает имя сертификатора, название сервера и имя администратора. Если идентификационные файлы первых двух сохраняются в оглавлении данных Notes (notes\data) в файлах server.id и cert.id, то id-файл администратора нужно явным образом извлечь из адресной книги сервера.
Делается это так: открывается раздел "Persons" адресной книги и открывается документ с учетной записью администратора. В самом низу документа находится "присоединенный" id-файл, обозначенный серым прямоугольником. Нужно кликнуть на нем правой кнопкой мыши, выбрать из контекстного меню команду "Detach" и сохранить файл в оглавление notes\data, дав ему имя по выбору и расширение "id". Я, например, сохранил свой файл под названием eshcherb.id.
Дело в том, что Domino и Notes следует сообщить, с каким Id'ом должен стартовать сервер, а с каким - клиент. В противном случае Notes стартует с сервером в роли пользователя или, что хуже, сервер может запуститься с Id'ом администратора и начнет сбоить. Во избежание неприятностей нужно отредактировать файл notes.ini следующим образом. (5)
Переменная KeyFilename, имеющаяся в ini-файле по умолчанию, указывает id-файл, с которым запускается клиент Notes. Переменную ServerKeyFilename нужно добавить самостоятельно; она указывает, с каким id-файлом запускается сервер Domino.
Удачных экспериментов!
Евгений Щербатюк
Компьютерная газета. Статья была опубликована в номере 41 за 1999 год в рубрике разное :: страна советов