В статье даны подробные инструкции по установке и конфигурированию IBM DB2 при развертывании на операционной системе Linux для работы с 1С:Предприятием 8.1/8.2
Все действия выполняются под пользователем root, если не сказано иное.
Сначала необходимо настроить параметры ядра Linux для работы DB2. Согласно документации для этого необходимо отредактировать /etc/sysctl.conf, чтобы он содержал следующие строки:
Также немаловажно сконфигурировать параметр kernel.shmmax, который отвечает за максимальный размер сегмента выделяемой памяти. Практика показала, что для приложений на базе платформы 1С:Предприятие критичным является размер оперативной памяти, использьзуемый в качестве кэша базы данных, т.е. занимаемый буферпулами. (Об устройстве и табличных пространств и буферпулов см. статью на developerWorks. Также рекомендуется прочитать статью о модели памяти DB2). В свою очередь, рост буферпулов приводит к тому, что при перезапуске базы данных DB2 для размещения буферпулов может запрашивать сегмент памяти большого объема, что значительно превосходит параметры конфигурации, указанные в документации.
# Параметры конфигурации ядра, рекомендованные в документации
# Это значение для Linux 64-bit
kernel.shmmax=1073741824
# Это значение для Linux 32-bit
kernel.shmmax=268435456
Рекомендуется установить значение максимального размера сегмента памяти равное 2Гб, т.е.
kernel.shmmax=2147483648
Для коммерческих редакций DB2 возможно его придется устанавливать даже в большую величину. Более подбробно об этом рассказывается в другой статье .
После редактирования файла необходимо запустить
sysctl -pВнесенные изменения вступили в силу.
Приведенные выше значения - рекомендованны в документации по DB2. Опыт инсталляций 1С на DB2 показал, что размер сегмента памяти, который может запрашиваться разово, может превосходить рекомендованные значения. Рекомендации, независимо от разрядности операционной системы, выставить максимальный размер сегмента памяти равный 2Гб, т.е.следующие
kernel.shmmax=2147483648
Подробная информация о назначении этих параметров
Данные настройки были проверены для следующих версий Linux:
Прежде чем начать инсталляцию, убедитесь, что у вас установлены пакеты обратной совместимости для libstdc++. В частности, для FC6 необходимы пакеты
compat-libstdc++-33-3.2.3-61
compat-libstdc++-296-2.96-138
Можно также при установке Linux для "разработчика" выбрать поддержку старых программ, в этот раздел входят указанные пакеты.
Берем архив с дистрибутивом DB2 и распаковываем его. Например :
tar xfz db2exc_912_1Cspecial17705_LNX_x86_64.tar.gzЗапускаем
./db2_installПринимаем по-умолчанию каталог установки (/opt/ibm/db2/V9.1)
После чего ставим сам продукт (пишем в строке вопроса: EXP - т.е. DB2 Express)
Создаем пользователей, необходимых для работы DB2
useradd dasВнимание! При использовании Ubuntu по-умолчанию команда useradd не создает домашний каталог пользователя. Необходимо в командной строке указать ключ -m, чтобы этот каталог создавался автоматически:
useradd -m dasСоздаем DB2 Administration Server (DAS).
./dascrt dasСервер автоматически запустится от имени пользователя das
Создаем экземпляр DB2, настроенный на работу через порт 50000 (порт DB2 по-умолчанию)
./db2icrt -u db2fenc -p 50000 db2instКонфигурируем DB2 для работы с 1С
db2set DB2_WORKLOAD=1CЗапускаем экземпляр DB2
db2startВозвращаемся в root через Ctrl-D (logout)
Если необходимо, чтобы DB2 запускалась автоматчески при старте системы, выполняем команду:
/opt/ibm/db2/V9.1/instance/db2iauto -on db2instДля начала необходимо установить 1С:Предприятие:
rpm -i *.rpmПосле этого необходимо добавить пользователя usr1cv81 в группу доступа, которая является основной для запущенного экземпляра DB2. Основную группу доступа можно получить при помощи команды:
id db2instПри этом будет получена, например, следующая информация:
uid=501(db2inst) gid=501(db2inst) groups=501(db2inst),500(das)Это означает, что основной группой доступа для запущенного экземпляра DB2 является группа db2inst с идентификатором 501.
Добавляем пользователя usr1cv81 в эту группу:
usermod -G 501 usr1cv81На этом конфигурирование закончено.
Более подробная информация по установке DB2
После того, как вы установили сервер 1С:Предприятия под Linux, при каждом перезапуске системы он будет стартовать автоматически. Но сразу после инсталляции сервер еще не запущен. При запуске системы автоматически запускается скрипт /etc/rc.d/init.d/srv1cv81 с параметром start, т.е. выполняется команда
/etc/rc.d/init.d/srv1cv81 start
Выполнив данную команду (от имени пользователя root), получаем примерно следующее:
[root@rhel41c ~]# /etc/rc.d/init.d/srv1cv81 start
Starting 1C:Enterprise 8.1 server: [ OK ]
[root@rhel41c ~]#
Сервер запущен, и можно приступать к работе.
Однако при попытке создания базы данных в DB2 появляется следующая ошибка:
Получается, что сервер 1С:Предприятия не видит динамических библиотек DB2 и нам надо их как-то добавить в пути поиска.
На этой проблеме остановимся более подробно, нежели просто опишем решение.
Есть 2 варианта решения данной задачи.
Вариант 1. Использовать файл /etc/ld.so.conf
Вариант 2. Использовать переменную среды LD_LIBRARY_PATH (в подразделе Быстрая настройка используется именно этот вариант)
Если хочетя в деталях понять как что работает, можете изучить детальное рассмотрение вариантов, приведенное ниже.
Если не хотите забивать себе голову подробностями, то подраздел "Быстрая настройка" это ваше все :)
Все параметры настройки среды для работы с DB2, в т.ч. и настройки LD_LIBRARY_PATH прописываются для каждого инстанса автоматически в файле ~db2inst/sqllib/db2profile, который и используется для настройки среды.
Все, что вам надо сделать, чтобы настроить сервер 1С на тот или иной инстанс, добавить строку
. /home/db2inst/sqllib/db2profile
в ~usr1cv81/.profile
После чего надо перезапустить сервер 1С.
Таким образом, если у вас в системе (например, тестовой) есть 2 инстанса DB2, то перенастройка сервера 1С на тот или иной инстанс заключается в подключении соотвествующего файла db2profile, в профиль пользователя usr1cv81.
Подсказка! Проще всего будет, если в качестве имени пользователя инстанса DB2 вы укажите не 'db2inst', a 'usr1cv81'. Почему? Догадайтесь сами! :-)
А теперь более подробное рассмотрение вариантов.
Файл /etc/ld.so.conf служит для указания динамическому линковщику путей поиска динамических библиотек. Посмотрим на его содержимое.
[root@rhel41c ~]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/ofed/lib64
[root@rhel41c ~]#
Видим, что помимо самого ld.so.conf пути могут быть прописаны в файлах c расширением .conf в каталоге /etc/ld.so.conf.d/
Нам надо добавить к путям поиска два каталога (один, в случае 32 битной установки). Занесем эти каталоги в новый файл /etc/ld.so.conf.d/db2.conf и сохраним его
/opt/ibm/db2/V9.1/lib32Для того, чтобы динамический линковщик обновил пути поиска, необходимо выполнить команду ldconfig.
Теперь достаточно перезапустить сервер 1С:Предприятия и убедиться, что данный подход работает.
Останавливаем сервер, используя уже известный нам скрипт
[root@rhel41c ~]# /etc/rc.d/init.d/srv1cv81 stop
Stopping 1C:Enterprise 8.1 server: ragent [ OK ]
[root@rhel41c ~]#
И запускаем заново. Хотя можно было бы воспользоваться и командой скрипта restart
[root@rhel41c ~]# /etc/rc.d/init.d/srv1cv81 restart
Stopping 1C:Enterprise 8.1 server: ragent [ OK ]
Starting 1C:Enterprise 8.1 server: [ OK ]
[root@rhel41c ~]#
Проверяем, как функционирует сервер 1С:Предприятия.
Но что будет, если в рамках системы установлено два экзеспляра DB2? Какие пути прописывать в данном случае?
Давайте вернем конфигурацию системы в исходное положение (удалим /etc/ld.so.conf.d/db2.conf и запустим ldconfig, чтобы исключить пути к библиотекам DB2 из глобального поиска) и рассмотрим вариант 2.
Задание путей поиска динамических библиотек через /etc/ld.so.conf имеет один недостаток - пути поиска являются глобальными. Например, если у вас установлены DB2 9.1 и DB2 9.5, то настроить два экземпляра сервера 1С:Предприятия для работы с разными версиями DB2 через /et/ld.so.conf не получится.
Если же воспользоваться переменной окружения LD_LIBRARY_PATH, то в данном случае проблем с конфигурированием не будет. Как же добавить необходимые значения переменной LD_LIBRARY_PATH?
Казалось бы, что проще всего добавить строчку
LD_LIBRARY_PATH=/opt/ibm/db2/V9.1/lib32:/opt/ibm/db2/V9.1/lib64
в скрипт запуска сервера 1С /etc/rc.d/init.d/srv1cv81
Однако этот способ не проходит, поскольку при запуске сервера сбрасываются все настройки перменных окружения.
Единственный правильный способ установки LD_LIBRARY_PATH - это добавление в профайл пользователя, т.е. скрипт .bash_profile, расположенный в домашнем каталоге пользователя usr1cv81 (пользователя, от имени которого запускается сервер 1С:Предприятие).
Добавляем в ~usr1cv81/.bash_profile строчки
LD_LIBRARY_PATH=/opt/ibm/db2/V9.1/lib32:/opt/ibm/db2/V9.1/lib64
export LD_LIBRARY_PATH
Перезапускаем сервер 1С. Теперь все готово к работе.
ПРИМЕЧАНИЕ Для того чтобы узнать какие продукты DB2 установлены на вашей машине, можно воспользоваться командой db2ls Вот пример вывода команды [root@rhel41c ~]# db2ls Install Path Level Fix Pack Special Install Number Install Date -------------------------------------------------------------------------------------------- /opt/ibm/db2/V9.1 9.1.0.3 3a 7 Wed Apr 23 16:09:56 2008 MSD |