Январь 17, 2018, 07:27:14

Автор Тема: Установка и настройка DB2 под Linux для работы с 1С:Предприятием 8.1/8.2  (Прочитано 7947 раз)

lion

  • Administrator
  • Супер пользователь
  • *****
  • Сообщений: 279
  • Карма: +2/-0
    • Просмотр профиля
    • SoftLine
    • Email
http://palsoft.oxnull.net/2010-09-05-07-16-48/31----db2--linux----1-8182-


Установка и настройка DB2 под Linux для работы с 1С:Предприятием 8.1/8.2
 |  |
Статьи - Обслуживание 1С
 

Инструкция по установке DB2 под Linux

Все действия выполняются под пользователем root, если не сказано иное.

Сначала необходимо настроить параметры ядра Linux для работы DB2.  Согласно документации для этого необходимо отредактировать /etc/sysctl.conf, чтобы он содержал следующие строки:

kernel.msgmax=65535

kernel.msgmnb=65535


Также немаловажно сконфигурировать параметр 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:

 Ubuntu 9.0

  FedoraCore 6 x86

 FedoraCore 6 x86_64

 RedHat 4 PPC

 RedHat 4 s390x (IBM System z - мэйнфрейм)

После этого можно приступать к установке DB2.

Прежде чем начать инсталляцию, убедитесь, что у вас установлены пакеты обратной совместимости для 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

cd exp/disk1

Запускаем

./db2_install

Принимаем по-умолчанию каталог установки (/opt/ibm/db2/V9.1)

После чего ставим сам продукт (пишем в строке вопроса: EXP - т.е. DB2 Express)

Создаем пользователей, необходимых для работы DB2

useradd das

useradd db2inst

useradd db2fenc

Внимание! При использовании Ubuntu по-умолчанию команда useradd не создает домашний каталог пользователя. Необходимо в командной строке указать ключ -m, чтобы этот каталог создавался автоматически:

useradd -m das

useradd -m db2inst

useradd -m db2fenc

cd /opt/ibm/db2/V9.1/instance

Создаем DB2 Administration Server (DAS).

./dascrt das

Сервер автоматически запустится от имени пользователя das

Создаем экземпляр DB2, настроенный на работу через порт 50000 (порт DB2 по-умолчанию)

./db2icrt -u db2fenc -p 50000 db2inst

su - db2inst

Конфигурируем DB2 для работы с 1С

db2set DB2_WORKLOAD=1C

Запускаем экземпляр DB2

db2start

Возвращаемся в root через Ctrl-D (logout)

Если необходимо, чтобы DB2 запускалась автоматчески при старте системы, выполняем команду:

/opt/ibm/db2/V9.1/instance/db2iauto -on db2inst

Установка и конфигурирование сервера 1С:Предприятия

Для начала необходимо установить 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С:Предприятия

После того, как вы установили сервер 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'. Почему? Догадайтесь сами! :-)

А теперь более подробное рассмотрение вариантов.

Вариант 1.

Файл /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

/opt/ibm/db2/V9.1/lib64

Для того, чтобы динамический линковщик обновил пути поиска, необходимо выполнить команду 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.

Вариант 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


 

TriodPlus

  • Новичок
  • *
  • Сообщений: 2
  • Карма: +0/-0
    • Просмотр профиля
Здравствуйте.
Это схема когда субд и сервер 1с на одном коомьютере.
Как быть когда их нужно разделить по разным компьютерам.
Делая та же самое для каждого компьютера можно установить дб2 и 1с на разных компах,
но как установить и подключить только клиентские части (без сервера) дб2 на компьтер где стоит 1с сервер?

lion

  • Administrator
  • Супер пользователь
  • *****
  • Сообщений: 279
  • Карма: +2/-0
    • Просмотр профиля
    • SoftLine
    • Email
to TriodPlus

Я прощу прощения под температурой пишу, но:
1. База данных может быть где угодно - в сроке подключения надо указать имя сервера и название БД
2. я против IMB DB2 - во первых это закрытая платформа, во вторых использовать можно её с жудкими ограничениями по объёмам, процам и т.п., да и юредически для коммерческоого использования могут возникнуть проблемы.
3. Установить клиентскую часть можно и без серверной, тем более что в 8.2 уже может работать ВЭБ клиент?