Самоучитель по SQL-сервер в Linux



Установка и настройка LXP

Чтобы установить LXP, необходимо предварительно установить и настроить web-сервер Apache с поддержкой mod_so (модуль общих объектов Apache). Если при конфигурировании Apache этот модуль не использовался, компиляцию придется провести заново с ключом --enable-module=so.

ПРИМЕЧАНИЕ

Если вы предпочитаете компилировать Apache вручную, не забудьте сначала удалить все существующие модули RPM Apache. Обычно их можно найти командой грго -qa | grep apache.

Если сервер Apache установлен, а в нем включена поддержка модуля общих объектов, вставьте в дисковод прилагаемый к книге компакт-диск, смонтируйте его и переходите к установке. Для успешной установки LXP необходимы права root, поскольку в процессе установки потребуется доступ к системным файлам и каталогам.

Установка LXP

В версии 0.8 существует два варианта установки LXP. Во-первых, можно воспользоваться сценарием Ixpinstall.sh, находящимся в каталоге 1хр на компакт-диске; во-вторых, пакет можно установить вручную. Сценарий Ixpinstall.sh устанавливает необходимые файлы LXP и вносит в файл httpd.conf изменения, обеспечивающие загрузку модуля LXP.

Если в процессе выполнения сценария Ixpinstall.sh возникнут какие-либо ошибки, обратитесь к приведенному ниже описанию ручной установки.

Сценарий Ixpinstall.sh

Сценарий Ixpinstall.sh работает весьма прямолинейно. При первом запуске вам придется ответить всего на один вопрос — в конце сценария будет предложено автоматически перезапустить Apache (это необходимо для активизации LXP). Если в процессе установки возникнут ошибки, сценарий можно запустить заново, хотя на этот раз он потребует подтверждения на перезапись некоторых файлов.

В листинге 13.1 команда cd переходит в каталог 1хр компакт-диска (в данном примере смонтированного в каталоге /mnt/cdrom), после чего запускается файл Ixpinstall.sh.

Листинг 13.1. Установка LXP сценарием Ixpinstall.sh

[root@host root]# cd /mnt/cdrom/lxp

[root@host lxp]# .Ixpiinstall.sh

=======================

Thank you for installing Command Prompt LXP. 0.8.0.

Copyright (c) 1999-2001. Command Prompt. Inc.

See the LICENSE file for licensing restrictions.

========================

[cmd] Checking for PostgreSQL libs (this may take a moment) ...

[cmd] Found PostgreSQL libpq library.

[cmd] Using apxs: '/usr/local/apache/bin/apxs'

[cmd] Using '/usr/local/apache/1ibexec/' for shared object file

========================

[cmd] Installing 'liblxp.so'

[activating module 'Ixp' in /usr/local/apache/conf/httpd.conf]

cp lib/liblxp.so /usr/local/apache/libexec/liblxp.so

chmod 755 /usr/local/apache/libexec/liblxp.so

cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak

cp /usr/local/apache/conf/httpd.conf.new /usr/local/apache/conf/httpd.conf

rm /usr/local/apache/conf/httpd.conf.new

[cmd] Using '/usr/local/apache/conf/httpd.conf for configuration

[cmd] Backing up original configuration file...

/usr/1 ocal /apache/conf/httpd.conf -> /usr/1ocal/apache/conf/httpd.conf.1xp_backup

[and] Backing up original configuration file...

/usr/local /apache/conf/srm.conf -> /usr/local/apache/conf/srm.conf.lxp_backup

[cmd] Adding LXP directives to httpd.conf...

===========================

[cmd] Installing 'Ixp.conf into /usr/1ocal/end/etc ...

conf/lxp.conf-dist -> /usr/local/cmd/etc/lxp.conf

============================

[cmd] Re-start Apache with '/usr/local/apache/bin/apachectl'? (y/n) у

/usr/local/apache/bin/apachectl stop: httpd stopped

/usr/local/apache/bin/apachectl start: httpd started

[cmd] Command Prompt LXP 0.8.0 successfully installed.

ПРИМЕЧАНИЕ

Если у вас возникнут проблемы с редактированием файла httpd.conf, не забудьте, что LXP перед внесением изменений создает резервную копию исходной конфигурации в файле с именем httpd.conf.lxp_backup, который находится в одном каталоге с исходным файлом httpd.conf.

При запуске сценария Ixpinstall.sh может появиться следующее сообщение об ошибке:

[cmd] ERROR: LXP requires Apache be configured with Shared Object support,

[cmd] but we couldn't find Apache's apxs script.

[cmd] Please make sure it Is in your path. If you know mod_so is enabled,

[cmd] exit error 1

Ошибка означает, что в системе не найден файл apxs (Apache Extension). Обычно этот файл находится в каталоге /usr/local/apache/bin, однако он может отсутствовать, если web-сервер Apache не был построен с поддержкой mod_so или если в системе не был установлен пакет RPM apache-devel. Если вы точно знаете, что файл присутствует в системе, убедитесь в том, что каталог, в котором он находится, входит в переменную среды PATH.

Также возможно сообщение об ошибке следующего вида:

[cmd] ERROR: apxs couldn't find your configuration file

[cmd] (Tried /usr/local/apache/conf/httpd.conf)

[cmd] exit error 3

Если вместо httpd.conf используется конфигурационный файл с нестандартным именем, вам придется произвести настройку вручную. Инструкции приведены в следующем пункте.

Ручная установка

В этом пункте рассказано, как установить LXP вручную, когда установка с использованием сценария Ixpinstall.sh не удалась. Если пакет LXP успешно установлен, этот пункт можно пропустить.

Ручная установка LXP состоит из трех этапов.

  1. Установка общего модуля LXP.
  2. Установка конфигурационного файла LXP.
  3. Настройка файла Apache httpd.conf.

Установка и настройка LXP 371

Файл liblxp.so (находится в каталоге /Ixp/lib на компакт-диске) следует скопировать в каталог, из которого web-сервер Apache загружает внешние модули. Обычно это каталог /usr/local/apache/libexec для ручной установки Apache или каталог /etc/httpd/modules для установки RPM. Учтите, что каталоги меняются, и в вашей поставке они могут быть другими. Тем не менее файл можно установить в нужный каталог при помощи сценария apxs. Команда выглядит следующим образом:

apxs -i -n модуль -а файл

В листинге 13.2 приведен пример использования сценария apxs для установки и настройки файла liblxp.so в каталог модулей Apache.

Листинг 13.2. Ручная установка файла liblxp.so

[root@host lib]# apxs -i -n "Ixp" -a lib/liblxp.so

cp lib/liblxp.so /usr/local/apache/libexec/liblxp.so

chmod 755 /usr/local/apache/libexec/liblxp.so

[activating module 'Ixp' in /usr/local/apache/conf/httpd.conf]

[root@host lib]#

Если пакет PostgreSQL не установлен, файл libpq.so.2.2 (также находящийся в каталоге /Ixp/lib на компакт-диске) копируется в каталог /usr/local/cmd/lib. Кроме того, следует создать символическую ссылку 1 ibpg. so. 2, указывающую на этот файл. Если сценарий Ixpinstall.sh не запускался, возможно, вам придется создать этот каталог. Процесс продемонстрирован в листинге 13.3.

Листинг 13.3. Ручная установка libpq.so.2.2

[root@host lib]# mkdir -p /usr/local/cmd/lib

[root@host lib]# cp -iv libpq.so.2.2 /usr/local/cmd/lib/

libpq.so.2.2 -> /usr/local/cmd/lib/libpq.so.2.2

[root@host lib]# In -s /usr/local/cmd/lib/libpq.so.2.2

/usr/local/cmd/lib/libpq.so.2

[root@host lib]#

На втором этапе файл Ixp.conf устанавливается в каталог /usr/local/cmd/etc. Это конфигурационный файл LXP 0.8, подробно описанный в следующем подразделе. В поставке LXP конфигурационный файл находится в каталоге /Ixp/conf на компакт-диске и хранится под именем Ixp.conf-dist. Скопируйте этот файл из каталога /Ixp/conf на компакт-диске в каталог/usr/local/cmd/etc, как показано в листинге 13.4. Если сценарий Ixpinstall.sh ранее не выполнялся, возможно, вам придется создать этот каталог. Не забудьте переименовать файл Ixp.conf-dist в Ixp.conf!

Листинг 13.4. Ручная установка Ixp.conf

[root@host lxp]# mkdir -p /usr/local/cmd/etc

[root@host lxp]# cp -v conf/lxp.conf-dist /usr/local/cmd/etc/lxp.conf

conf/lxp.conf-dist -> /usr/local/cmd/etc/lxp.conf

[root(?host lxp]#

Остается лишь настроить файл Apache httpd.conf для работы с содержимым типа LXP.

ВНИМАНИЕ

Иногда файл httpd.conf сохраняется под другим именем (например, как в ApacheSSL, httpsd.conf).

Для правильной настройки LXP в файл httpd.conf следует включить две строки, приведенные в листинге 13.5.

Листинг 13.5. Настройка файла http.conf для LXP

DirectoryIndex index.html index.Ixp

AddType application/x-httpd-lxp .Ixp

В файле httpd.conf уже должна присутствовать строка, похожая на первую строку в листинге 13.5. Включите index.Ixp в значение этой директивы, если вы хотите, чтобы при запросе каталога модуль Apache автоматически искал индекс LXP.

Второй строки в первоначальной конфигурации быть не должно. Директива /\ddType должна выглядеть в точности так, как показано в листинге 13.5. Она указывает, что файлы с расширением .Ixp должны обрабатываться модулем LXP.

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

Завершив редактирование, перезапустите Apache, чтобы изменения вступили в силу. Обычно это делается при помощи команды apachectl или сценария службы httpd.

Настройка файла Ixp.conf

После установки LXP файл Ixp.conf находится в каталоге /usr/local/cmd/etc. В этом файле хранятся параметры подключения LXP к PostgreSQL. Кроме того, в нем присутствуют параметры, относящиеся к отладке.

Конфигурационный файл Ixp.conf имеет простую структуру и строится по общепринятым правилам. Он состоит из комментариев, директив и значений, связанных с каждой директивой.

Комментарии всегда начинаются со знака #. Комментарий может начинаться в начале строки или следовать за директивой или значением. В процессе загрузки конфигурационного файла LXP полностью игнорирует все комментарии, поэтому они нужны только для того, чтобы напомнить программисту смысл отдельных директив или другие возможные значения параметров. Вы можете добавлять в файлы новые комментарии, это нисколько не помешает работе LXP (только не забывайте о том, что комментарии должны начинаться с символа #).

Директивы непосредственно управляют конфигурацией LXP. Обычно директива начинается в начале строки и состоит из имени (без пробелов), за которым следует ассоциированное значение. Имя директивы определяет общие аспекты функционирования сервера LXP, а значение влияет на особенности его работы. Некоторые директивы получают несколько значений, разделенных символами табуляции или пробелами. Пример:

# Here's an example directive.

MyDirective SomeValue # MyDirective defines some arbitrary value.

Возможно, вам никогда не придется вносить сколько-нибудь заметные изменения в файл Ixp.conf, но при этом желательно знать, как устроен этот файл и что он делает на случай, если такая необходимость все же возникнет. В LPX 0.8 файл Ixp.conf разделен на две секции: секцию общих параметров и секцию параметров базы данных.

Общие параметры

Секция общих параметров содержит две директивы, Debug и MaxIncludeDepth:

###############

# General LXP settings.

###############

Debug No # (Yes|No)

MaxIncludeDepth 15 # (Number)

Если директиве Debug присвоено значение Yes, в начало всех документов LXP включается отладочный заголовок, который может использоваться для диагностики непредвиденного поведения файлов LXP и включаемых сценариев. В отладочный заголовок включаются имя документа LXP, все значения cookie для заданного домена, все полученные переменные GET/POST и значение максимальной глубины включения.

Максимальная глубина включения определяет наибольший уровень включения, после которого LXP прекращает работу и выводит сообщение об ошибке. Этот параметр помогает бороться с циклическими включениями (например, файл a.lxp включает b.lxp, который, в свою очередь, включает a.lxp). Максимальная глубина включения задается директивой MaxIncludeDepth, по умолчанию она равна 15.

ПРИМЕЧАНИЕ

Директива MaxIncludeDepth не ограничивает общего количества файлов, которые могут включаться в одном документе. Она относится лишь к наибольшему уровню вложенных включений (например, в файле a.lxp включается файл b.lxp, в котором включается файл c.lxp, включающий d.lxp и т. д.).

Параметры базы данных

Следующие шесть директив задают параметры подключения к PostgreSQL. Значения по умолчанию подходят для большинства систем, но при желании их можно изменить (если этого требует специфика установки PostgreSQL).

############################

# PostgreSQL persistent connectivity options.

############################

UseDb No # (Yes|No) Присвойте значение Yes. чтобы

# подключиться к базе данных.

DbName templatel # База данных. По умолчанию "template!.".

DbHost localhost # Хост базы данных. По умолчанию "localhost".

DbPort 5432 # Порт, по которому производится подключение к PostgreSQL.

DbUser postgres # Имя пользователя. По умолчанию "postgres".

DbPass # Пароль. По умолчанию - пустая строка.

Чтобы активизировать устойчивые подключения к базе данных, присвойте параметру UseDb значение Yes. Если параметр равен No, вы все равно сможете использовать интерфейс SQL для динамического открытия подключений (см. подраздел «Включение данных SQL» в разделе «Включение данных»), но в этом случае для каждого запроса на установление связи будет создаваться новое подключение к серверу PostgreSQL.

Остальные параметры — DbName, DbHost, DbPort, DbUser и DbPass — хорошо знакомы каждому, кто хоть раз подключался к PostgreSQL. Обычно значений по умол-

чаншо оказывается достаточно, но вы можете изменить их, если этого требует ситуация (например, когда данные хранятся на отдельном сервере, параметру DbHost присваивается имя соответствующего хоста).

ВНИМАНИЕ

При использовании устойчивых соединений между Apache и PostgreSQL необходимо понимать, что каждый процесс httpd обслуживается отдельным процессом postmaster. Проследите за тем, чтобы настройка системы позволяла загрузить столько серверных процессов PostgreSQL postmaster, сколько потребует Apache (то есть количество, указанное в директиве MaxCl ients в файле httpd.conf).